diff --git a/CtsTestCaseList.mk b/CtsTestCaseList.mk
index 825944a..0950994 100644
--- a/CtsTestCaseList.mk
+++ b/CtsTestCaseList.mk
@@ -19,6 +19,8 @@
     CtsDocumentClient \
     CtsExternalStorageApp \
     CtsInstrumentationAppDiffCert \
+    CtsUsePermissionApp \
+    CtsUsePermissionAppCompat \
     CtsPermissionDeclareApp \
     CtsPermissionDeclareAppCompat \
     CtsReadExternalStorageApp \
@@ -66,14 +68,22 @@
     CtsKeySetSigningAUpgradeEcA \
     CtsKeySetSigningEcAUpgradeA
 
+cts_account_support_packages := \
+    CtsUnaffiliatedAccountAuthenticators
+
 cts_support_packages := \
     CtsAccelerationTestStubs \
+    CtsAlarmClockService \
     CtsAppTestStubs \
+    CtsAssistService \
+    CtsAssistApp \
     CtsAtraceTestApp \
     CtsCertInstallerApp \
     CtsDeviceAdmin \
     CtsDeviceOpenGl \
     CtsWifiConfigCreator \
+    CtsDeviceAndProfileOwnerApp \
+    CtsDeviceInfo \
     CtsDeviceOwnerApp \
     CtsDeviceTaskswitchingAppA \
     CtsDeviceTaskswitchingAppB \
@@ -84,9 +94,11 @@
     CtsIntentSenderApp \
     CtsLauncherAppsTests \
     CtsLauncherAppsTestsSupport \
+    CtsLeanbackJank \
     CtsManagedProfileApp \
     CtsMonkeyApp \
     CtsMonkeyApp2 \
+    CtsPermissionApp \
     CtsSimpleApp \
     CtsSimplePreMApp \
     CtsSomeAccessibilityServices \
@@ -96,6 +108,8 @@
     CtsUsbSerialTestApp \
     CtsVoiceInteractionService \
     CtsVoiceInteractionApp \
+    CtsVoiceSettingsService \
+    $(cts_account_support_packages) \
     $(cts_security_apps_list) \
     $(cts_security_keysets_list)
 
@@ -124,9 +138,11 @@
     CtsAccessibilityServiceTestCases \
     CtsAccessibilityTestCases \
     CtsAdminTestCases \
+    CtsAlarmClockTestCases \
     CtsAnimationTestCases \
     CtsAppTestCases \
     CtsAppWidgetTestCases \
+    CtsAssistTestCases \
     CtsBluetoothTestCases \
     CtsCalendarcommon2TestCases \
     CtsCallLogTestCases \
@@ -143,6 +159,7 @@
     CtsGraphics2TestCases \
     CtsHardwareTestCases \
     CtsJankTestCases \
+    CtsLeanbackJankTestCases \
     CtsJobSchedulerDeviceTestCases \
     CtsJniTestCases \
     CtsKeystoreTestCases \
@@ -155,6 +172,7 @@
     CtsNativeOpenGLTestCases \
     CtsNdefTestCases \
     CtsNetTestCases \
+    CtsNetTestCasesLegacyApi22 \
     CtsOpenGLTestCases \
     CtsOpenGlPerfTestCases \
     CtsOsTestCases \
@@ -185,6 +203,7 @@
     CtsUtilTestCases \
     CtsViewTestCases \
     CtsVoiceInteractionTestCases \
+    CtsVoiceSettingsTestCases \
     CtsWebkitTestCases \
     CtsWidgetTestCases
 
@@ -205,6 +224,7 @@
     CtsHostUi \
     CtsMonkeyTestCases \
     CtsThemeHostTestCases \
+    CtsUsageHostTestCases \
     CtsSecurityHostTestCases \
     CtsUsbTests
 
diff --git a/apps/CameraITS/CameraITS.pdf b/apps/CameraITS/CameraITS.pdf
index 5a511c0..8953af9 100644
--- a/apps/CameraITS/CameraITS.pdf
+++ b/apps/CameraITS/CameraITS.pdf
Binary files differ
diff --git a/apps/CameraITS/pymodules/its/caps.py b/apps/CameraITS/pymodules/its/caps.py
index b6d398f..95f19d9 100644
--- a/apps/CameraITS/pymodules/its/caps.py
+++ b/apps/CameraITS/pymodules/its/caps.py
@@ -307,6 +307,35 @@
     return props.has_key("android.request.availableCapabilities") and \
            4 in props["android.request.availableCapabilities"]
 
+def noise_reduction_mode(props, mode):
+    """Returns whether a device supports the noise reduction mode.
+
+    Args:
+        props: Camera properties objects.
+        mode: Integer, indicating the noise reduction mode to check for
+              availability.
+
+    Returns:
+        Boolean.
+    """
+    return props.has_key(
+            "android.noiseReduction.availableNoiseReductionModes") and mode \
+            in props["android.noiseReduction.availableNoiseReductionModes"];
+
+def edge_mode(props, mode):
+    """Returns whether a device supports the edge mode.
+
+    Args:
+        props: Camera properties objects.
+        mode: Integer, indicating the edge mode to check for availability.
+
+    Returns:
+        Boolean.
+    """
+    return props.has_key(
+            "android.edge.availableEdgeModes") and mode \
+            in props["android.edge.availableEdgeModes"];
+
 class __UnitTest(unittest.TestCase):
     """Run a suite of unit tests on this module.
     """
diff --git a/apps/CameraITS/pymodules/its/device.py b/apps/CameraITS/pymodules/its/device.py
index 8773335..756f959 100644
--- a/apps/CameraITS/pymodules/its/device.py
+++ b/apps/CameraITS/pymodules/its/device.py
@@ -41,14 +41,24 @@
         sock: The open socket.
     """
 
-    # Open a connection to localhost:6000, forwarded to port 6000 on the device.
-    # TODO: Support multiple devices running over different TCP ports.
+    # Open a connection to localhost:<host_port>, forwarded to port 6000 on the
+    # device. <host_port> is determined at run-time to support multiple
+    # connected devices.
     IPADDR = '127.0.0.1'
-    PORT = 6000
+    REMOTE_PORT = 6000
     BUFFER_SIZE = 4096
 
+    # LOCK_PORT is used as a mutex lock to protect the list of forwarded ports
+    # among all processes. The script assumes LOCK_PORT is available and will
+    # try to use ports between CLIENT_PORT_START and
+    # CLIENT_PORT_START+MAX_NUM_PORTS-1 on host for ITS sessions.
+    CLIENT_PORT_START = 6000
+    MAX_NUM_PORTS = 100
+    LOCK_PORT = CLIENT_PORT_START + MAX_NUM_PORTS
+
     # Seconds timeout on each socket operation.
     SOCK_TIMEOUT = 10.0
+    SEC_TO_NSEC = 1000*1000*1000.0
 
     PACKAGE = 'com.android.cts.verifier.camera.its'
     INTENT_START = 'com.android.cts.verifier.camera.its.START'
@@ -57,8 +67,8 @@
     EXTRA_SUCCESS = 'camera.its.extra.SUCCESS'
     EXTRA_SUMMARY = 'camera.its.extra.SUMMARY'
 
-    # TODO: Handle multiple connected devices.
-    ADB = "adb -d"
+    adb = "adb -d"
+    device_id = ""
 
     # Definitions for some of the common output format options for do_capture().
     # Each gets images of full resolution for each requested format.
@@ -74,12 +84,83 @@
     CAP_RAW_YUV_JPEG = [{"format":"raw"}, {"format":"yuv"}, {"format":"jpeg"}]
     CAP_DNG_YUV_JPEG = [{"format":"dng"}, {"format":"yuv"}, {"format":"jpeg"}]
 
-    # Method to handle the case where the service isn't already running.
-    # This occurs when a test is invoked directly from the command line, rather
-    # than as a part of a separate test harness which is setting up the device
-    # and the TCP forwarding.
-    def __pre_init(self):
+    # Initialize the socket port for the host to forward requests to the device.
+    # This method assumes localhost's LOCK_PORT is available and will try to
+    # use ports between CLIENT_PORT_START and CLIENT_PORT_START+MAX_NUM_PORTS-1
+    def __init_socket_port(self):
+        NUM_RETRIES = 100
+        RETRY_WAIT_TIME_SEC = 0.05
 
+        # Bind a socket to use as mutex lock
+        socket_lock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        for i in range(NUM_RETRIES):
+            try:
+                socket_lock.bind((ItsSession.IPADDR, ItsSession.LOCK_PORT))
+                break
+            except socket.error:
+                if i == NUM_RETRIES - 1:
+                    raise its.error.Error(self.device_id,
+                                          "acquiring socket lock timed out")
+                else:
+                    time.sleep(RETRY_WAIT_TIME_SEC)
+
+        # Check if a port is already assigned to the device.
+        command = "adb forward --list"
+        proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
+        output, error = proc.communicate()
+
+        port = None
+        used_ports = []
+        for line in output.split(os.linesep):
+            # each line should be formatted as:
+            # "<device_id> tcp:<host_port> tcp:<remote_port>"
+            forward_info = line.split()
+            if len(forward_info) >= 3 and \
+               len(forward_info[1]) > 4 and forward_info[1][:4] == "tcp:" and \
+               len(forward_info[2]) > 4 and forward_info[2][:4] == "tcp:":
+                local_p = int(forward_info[1][4:])
+                remote_p = int(forward_info[2][4:])
+                if forward_info[0] == self.device_id and \
+                   remote_p == ItsSession.REMOTE_PORT:
+                    port = local_p
+                    break;
+                else:
+                    used_ports.append(local_p)
+
+        # Find the first available port if no port is assigned to the device.
+        if port is None:
+            for p in range(ItsSession.CLIENT_PORT_START,
+                           ItsSession.CLIENT_PORT_START +
+                           ItsSession.MAX_NUM_PORTS):
+                if p not in used_ports:
+                    # Try to run "adb forward" with the port
+                    command = "%s forward tcp:%d tcp:%d" % \
+                              (self.adb, p, self.REMOTE_PORT)
+                    proc = subprocess.Popen(command.split(),
+                                            stdout=subprocess.PIPE,
+                                            stderr=subprocess.PIPE)
+                    output, error = proc.communicate()
+
+                    # Check if there is no error
+                    if error is None or error.find("error") < 0:
+                        port = p
+                        break
+
+        if port is None:
+            raise its.error.Error(self.device_id, " cannot find an available " +
+                                  "port")
+
+        # Release the socket as mutex unlock
+        socket_lock.close()
+
+        # Connect to the socket
+        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        self.sock.connect((self.IPADDR, port))
+        self.sock.settimeout(self.SOCK_TIMEOUT)
+
+    # Reboot the device if needed and wait for the service to be ready for
+    # connection.
+    def __wait_for_service(self):
         # This also includes the optional reboot handling: if the user
         # provides a "reboot" or "reboot=N" arg, then reboot the device,
         # waiting for N seconds (default 30) before returning.
@@ -89,19 +170,19 @@
                 if len(s) > 7 and s[6] == "=":
                     duration = int(s[7:])
                 print "Rebooting device"
-                _run("%s reboot" % (ItsSession.ADB));
-                _run("%s wait-for-device" % (ItsSession.ADB))
+                _run("%s reboot" % (self.adb));
+                _run("%s wait-for-device" % (self.adb))
                 time.sleep(duration)
                 print "Reboot complete"
 
         # TODO: Figure out why "--user 0" is needed, and fix the problem.
-        _run('%s shell am force-stop --user 0 %s' % (ItsSession.ADB, self.PACKAGE))
+        _run('%s shell am force-stop --user 0 %s' % (self.adb, self.PACKAGE))
         _run(('%s shell am startservice --user 0 -t text/plain '
-              '-a %s') % (ItsSession.ADB, self.INTENT_START))
+              '-a %s') % (self.adb, self.INTENT_START))
 
         # Wait until the socket is ready to accept a connection.
         proc = subprocess.Popen(
-                ItsSession.ADB.split() + ["logcat"],
+                self.adb.split() + ["logcat"],
                 stdout=subprocess.PIPE)
         logcat = proc.stdout
         while True:
@@ -110,15 +191,14 @@
                 break
         proc.kill()
 
-        # Setup the TCP-over-ADB forwarding.
-        _run('%s forward tcp:%d tcp:%d' % (ItsSession.ADB,self.PORT,self.PORT))
-
     def __init__(self):
-        if "noinit" not in sys.argv:
-            self.__pre_init()
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.connect((self.IPADDR, self.PORT))
-        self.sock.settimeout(self.SOCK_TIMEOUT)
+        # Initialize device id and adb command.
+        self.device_id = get_device_id()
+        self.adb = "adb -s " + self.device_id
+
+        self.__wait_for_service()
+        self.__init_socket_port()
+
         self.__close_camera()
         self.__open_camera()
 
@@ -501,6 +581,18 @@
                 "dng" in formats and "raw10" in formats or \
                 "raw" in formats and "raw10" in formats:
             raise its.error.Error('Different raw formats not supported')
+
+        # Detect long exposure time and set timeout accordingly
+        longest_exp_time = 0
+        for req in cmd["captureRequests"]:
+            if "android.sensor.exposureTime" in req and \
+                    req["android.sensor.exposureTime"] > longest_exp_time:
+                longest_exp_time = req["android.sensor.exposureTime"]
+
+        extended_timeout = longest_exp_time / self.SEC_TO_NSEC + \
+                self.SOCK_TIMEOUT
+        self.sock.settimeout(extended_timeout)
+
         print "Capturing %d frame%s with %d format%s [%s]" % (
                   ncap, "s" if ncap>1 else "", nsurf, "s" if nsurf>1 else "",
                   ",".join(formats))
@@ -542,12 +634,55 @@
                 obj["metadata"] = mds[i]
                 objs.append(obj)
             rets.append(objs if ncap>1 else objs[0])
+        self.sock.settimeout(self.SOCK_TIMEOUT)
         return rets if len(rets)>1 else rets[0]
 
-def report_result(camera_id, success, summary_path=None):
+def get_device_id():
+    """ Return the ID of the device that the test is running on.
+
+    Return the device ID provided in the command line if it's connected. If no
+    device ID is provided in the command line and there is only one device
+    connected, return the device ID by parsing the result of "adb devices".
+
+    Raise an exception if no device is connected; or the device ID provided in
+    the command line is not connected; or no device ID is provided in the
+    command line and there are more than 1 device connected.
+
+    Returns:
+        Device ID string.
+    """
+    device_id = None
+    for s in sys.argv[1:]:
+        if s[:7] == "device=" and len(s) > 7:
+            device_id = str(s[7:])
+
+    # Get a list of connected devices
+    devices = []
+    command = "adb devices"
+    proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
+    output, error = proc.communicate()
+    for line in output.split(os.linesep):
+        device_info = line.split()
+        if len(device_info) == 2 and device_info[1] == "device":
+            devices.append(device_info[0])
+
+    if len(devices) == 0:
+        raise its.error.Error("No device is connected!")
+    elif device_id is not None and device_id not in devices:
+        raise its.error.Error(device_id + " is not connected!")
+    elif device_id is None and len(devices) >= 2:
+        raise its.error.Error("More than 1 device are connected. " +
+                "Use device=<device_id> to specify a device to test.")
+    elif len(devices) == 1:
+        device_id = devices[0]
+
+    return device_id
+
+def report_result(device_id, camera_id, success, summary_path=None):
     """Send a pass/fail result to the device, via an intent.
 
     Args:
+        device_id: The ID string of the device to report the results to.
         camera_id: The ID string of the camera for which to report pass/fail.
         success: Boolean, indicating if the result was pass or fail.
         summary_path: (Optional) path to ITS summary file on host PC
@@ -555,18 +690,19 @@
     Returns:
         Nothing.
     """
+    adb = "adb -s " + device_id
     device_summary_path = "/sdcard/camera_" + camera_id + "_its_summary.txt"
     if summary_path is not None:
         _run("%s push %s %s" % (
-                ItsSession.ADB, summary_path, device_summary_path))
+                adb, summary_path, device_summary_path))
         _run("%s shell am broadcast -a %s --es %s %s --es %s %s --es %s %s" % (
-                ItsSession.ADB, ItsSession.ACTION_ITS_RESULT,
+                adb, ItsSession.ACTION_ITS_RESULT,
                 ItsSession.EXTRA_CAMERA_ID, camera_id,
                 ItsSession.EXTRA_SUCCESS, 'True' if success else 'False',
                 ItsSession.EXTRA_SUMMARY, device_summary_path))
     else:
         _run("%s shell am broadcast -a %s --es %s %s --es %s %s --es %s %s" % (
-                ItsSession.ADB, ItsSession.ACTION_ITS_RESULT,
+                adb, ItsSession.ACTION_ITS_RESULT,
                 ItsSession.EXTRA_CAMERA_ID, camera_id,
                 ItsSession.EXTRA_SUCCESS, 'True' if success else 'False',
                 ItsSession.EXTRA_SUMMARY, "null"))
diff --git a/apps/CameraITS/pymodules/its/image.py b/apps/CameraITS/pymodules/its/image.py
index 89e579f..ea01a3e 100644
--- a/apps/CameraITS/pymodules/its/image.py
+++ b/apps/CameraITS/pymodules/its/image.py
@@ -665,170 +665,6 @@
     img = numpy.vstack(chs).T.reshape(h/f,w/f,chans)
     return img
 
-def __get_color_checker_patch(img, xc,yc, patch_size):
-    r = patch_size/2
-    tile = img[yc-r:yc+r:, xc-r:xc+r:, ::]
-    return tile
-
-def __measure_color_checker_patch(img, xc,yc, patch_size):
-    tile = __get_color_checker_patch(img, xc,yc, patch_size)
-    means = tile.mean(1).mean(0)
-    return means
-
-def get_color_checker_chart_patches(img, debug_fname_prefix=None):
-    """Return the center coords of each patch in a color checker chart.
-
-    Assumptions:
-    * Chart is vertical or horizontal w.r.t. camera, but not diagonal.
-    * Chart is (roughly) planar-parallel to the camera.
-    * Chart is centered in frame (roughly).
-    * Around/behind chart is white/grey background.
-    * The only black pixels in the image are from the chart.
-    * Chart is 100% visible and contained within image.
-    * No other objects within image.
-    * Image is well-exposed.
-    * Standard color checker chart with standard-sized black borders.
-
-    The values returned are in the coordinate system of the chart; that is,
-    patch (0,0) is the brown patch that is in the chart's top-left corner when
-    it is in the normal upright/horizontal orientation. (The chart may be any
-    of the four main orientations in the image.)
-
-    Args:
-        img: Input image, as a numpy array with pixels in [0,1].
-        debug_fname_prefix: If not None, the (string) name of a file prefix to
-            use to save a number of debug images for visualizing the output of
-            this function; can be used to see if the patches are being found
-            successfully.
-
-    Returns:
-        6x4 list of lists of integer (x,y) coords of the center of each patch,
-        ordered in the "chart order" (6x4 row major).
-    """
-
-    # Shrink the original image.
-    DOWNSCALE_FACTOR = 4
-    img_small = downscale_image(img, DOWNSCALE_FACTOR)
-
-    # Make a threshold image, which is 1.0 where the image is black,
-    # and 0.0 elsewhere.
-    BLACK_PIXEL_THRESH = 0.2
-    mask_img = scipy.stats.threshold(
-                img_small.max(2), BLACK_PIXEL_THRESH, 1.1, 0.0)
-    mask_img = 1.0 - scipy.stats.threshold(mask_img, -0.1, 0.1, 1.0)
-
-    if debug_fname_prefix is not None:
-        h,w = mask_img.shape
-        write_image(img, debug_fname_prefix+"_0.jpg")
-        write_image(mask_img.repeat(3).reshape(h,w,3),
-                debug_fname_prefix+"_1.jpg")
-
-    # Mask image flattened to a single row or column (by averaging).
-    # Also apply a threshold to these arrays.
-    FLAT_PIXEL_THRESH = 0.05
-    flat_row = mask_img.mean(0)
-    flat_col = mask_img.mean(1)
-    flat_row = [0 if v < FLAT_PIXEL_THRESH else 1 for v in flat_row]
-    flat_col = [0 if v < FLAT_PIXEL_THRESH else 1 for v in flat_col]
-
-    # Start and end of the non-zero region of the flattened row/column.
-    flat_row_nonzero = [i for i in range(len(flat_row)) if flat_row[i]>0]
-    flat_col_nonzero = [i for i in range(len(flat_col)) if flat_col[i]>0]
-    flat_row_min, flat_row_max = min(flat_row_nonzero), max(flat_row_nonzero)
-    flat_col_min, flat_col_max = min(flat_col_nonzero), max(flat_col_nonzero)
-
-    # Orientation of chart, and number of grid cells horz. and vertically.
-    orient = "h" if flat_row_max-flat_row_min>flat_col_max-flat_col_min else "v"
-    xgrids = 6 if orient=="h" else 4
-    ygrids = 6 if orient=="v" else 4
-
-    # Get better bounds on the patches region, lopping off some of the excess
-    # black border.
-    HRZ_BORDER_PAD_FRAC = 0.0138
-    VERT_BORDER_PAD_FRAC = 0.0395
-    xpad = HRZ_BORDER_PAD_FRAC if orient=="h" else VERT_BORDER_PAD_FRAC
-    ypad = HRZ_BORDER_PAD_FRAC if orient=="v" else VERT_BORDER_PAD_FRAC
-    xchart = flat_row_min + (flat_row_max - flat_row_min) * xpad
-    ychart = flat_col_min + (flat_col_max - flat_col_min) * ypad
-    wchart = (flat_row_max - flat_row_min) * (1 - 2*xpad)
-    hchart = (flat_col_max - flat_col_min) * (1 - 2*ypad)
-
-    # Get the colors of the 4 corner patches, in clockwise order, by measuring
-    # the average value of a small patch at each of the 4 patch centers.
-    colors = []
-    centers = []
-    for (x,y) in [(0,0), (xgrids-1,0), (xgrids-1,ygrids-1), (0,ygrids-1)]:
-        xc = xchart + (x + 0.5)*wchart/xgrids
-        yc = ychart + (y + 0.5)*hchart/ygrids
-        xc = int(xc * DOWNSCALE_FACTOR + 0.5)
-        yc = int(yc * DOWNSCALE_FACTOR + 0.5)
-        centers.append((xc,yc))
-        chan_means = __measure_color_checker_patch(img, xc,yc, 32)
-        colors.append(sum(chan_means) / len(chan_means))
-
-    # The brightest corner is the white patch, the darkest is the black patch.
-    # The black patch should be counter-clockwise from the white patch.
-    white_patch_index = None
-    for i in range(4):
-        if colors[i] == max(colors) and \
-                colors[(i-1+4)%4] == min(colors):
-            white_patch_index = i%4
-    assert(white_patch_index is not None)
-
-    # Return the coords of the origin (top-left when the chart is in the normal
-    # upright orientation) patch's center, and the vector displacement to the
-    # center of the second patch on the first row of the chart (when in the
-    # normal upright orientation).
-    origin_index = (white_patch_index+1)%4
-    prev_index = (origin_index-1+4)%4
-    next_index = (origin_index+1)%4
-    origin_center = centers[origin_index]
-    prev_center = centers[prev_index]
-    next_center = centers[next_index]
-    vec_across = tuple([(next_center[i]-origin_center[i])/5.0 for i in [0,1]])
-    vec_down = tuple([(prev_center[i]-origin_center[i])/3.0 for i in [0,1]])
-
-    # Compute the center of each patch.
-    patches = [[],[],[],[]]
-    for yi in range(4):
-        for xi in range(6):
-            x0,y0 = origin_center
-            dxh,dyh = vec_across
-            dxv,dyv = vec_down
-            xc = int(x0 + dxh*xi + dxv*yi)
-            yc = int(y0 + dyh*xi + dyv*yi)
-            patches[yi].append((xc,yc))
-
-    # Sanity check: test that the R,G,B,black,white patches are correct.
-    sanity_failed = False
-    patch_info = [(2,2,[0]), # Red
-                  (2,1,[1]), # Green
-                  (2,0,[2]), # Blue
-                  (3,0,[0,1,2]), # White
-                  (3,5,[])] # Black
-    for i in range(len(patch_info)):
-        yi,xi,high_chans = patch_info[i]
-        low_chans = [i for i in [0,1,2] if i not in high_chans]
-        xc,yc = patches[yi][xi]
-        means = __measure_color_checker_patch(img, xc,yc, 64)
-        if (min([means[i] for i in high_chans]+[1]) < \
-                max([means[i] for i in low_chans]+[0])):
-            sanity_failed = True
-
-    if debug_fname_prefix is not None:
-        gridimg = numpy.zeros([4*(32+2), 6*(32+2), 3])
-        for yi in range(4):
-            for xi in range(6):
-                xc,yc = patches[yi][xi]
-                tile = __get_color_checker_patch(img, xc,yc, 32)
-                gridimg[yi*(32+2)+1:yi*(32+2)+1+32,
-                        xi*(32+2)+1:xi*(32+2)+1+32, :] = tile
-        write_image(gridimg, debug_fname_prefix+"_2.png")
-
-    assert(not sanity_failed)
-
-    return patches
-
 def compute_image_sharpness(img):
     """Calculate the sharpness of input image.
 
diff --git a/apps/CameraITS/tests/dng_noise_model/DngNoiseModel.pdf b/apps/CameraITS/tests/dng_noise_model/DngNoiseModel.pdf
index 01389fa..d979a06 100644
--- a/apps/CameraITS/tests/dng_noise_model/DngNoiseModel.pdf
+++ b/apps/CameraITS/tests/dng_noise_model/DngNoiseModel.pdf
Binary files differ
diff --git a/apps/CameraITS/tests/dng_noise_model/dng_noise_model.py b/apps/CameraITS/tests/dng_noise_model/dng_noise_model.py
index 19b6c92..8f4682a 100644
--- a/apps/CameraITS/tests/dng_noise_model/dng_noise_model.py
+++ b/apps/CameraITS/tests/dng_noise_model/dng_noise_model.py
@@ -13,144 +13,249 @@
 # limitations under the License.
 
 import its.device
+import its.caps
 import its.objects
 import its.image
-import pprint
-import pylab
 import os.path
+import pylab
 import matplotlib
-import matplotlib.pyplot
-import numpy
+import matplotlib.pyplot as plt
 import math
+import Image
+import time
+import numpy as np
+import scipy.stats
+import scipy.signal
+
+# Convert a 2D array a to a 4D array with dimensions [tile_size,
+# tile_size, row, col] where row, col are tile indices.
+def tile(a, tile_size):
+    tile_rows, tile_cols = a.shape[0]/tile_size, a.shape[1]/tile_size
+    a = a.reshape([tile_rows, tile_size, tile_cols, tile_size])
+    a = a.transpose([1, 3, 0, 2])
+    return a
 
 def main():
-    """Compute the DNG noise model from a color checker chart.
-
-    TODO: Make this more robust; some manual futzing may be needed.
+    """Capture a set of raw images with increasing gains and measure the noise.
     """
     NAME = os.path.basename(__file__).split(".")[0]
 
-    with its.device.ItsSession() as cam:
+    # How many sensitivities per stop to sample.
+    steps_per_stop = 2
+    # How large of tiles to use to compute mean/variance.
+    tile_size = 64
+    # Exposure bracketing range in stops
+    bracket_stops = 4
+    # How high to allow the mean of the tiles to go.
+    max_signal_level = 0.5
+    # Colors used for plotting the data for each exposure.
+    colors = 'rygcbm'
 
+    # Define a first order high pass filter to eliminate low frequency
+    # signal content when computing variance.
+    f = np.array([-1, 1]).astype('float32')
+    # Make it a higher order filter by convolving the first order
+    # filter with itself a few times.
+    f = np.convolve(f, f)
+    f = np.convolve(f, f)
+
+    # Compute the normalization of the filter to preserve noise
+    # power. Let a be the normalization factor we're looking for, and
+    # Let X and X' be the random variables representing the noise
+    # before and after filtering, respectively. First, compute
+    # Var[a*X']:
+    #
+    #   Var[a*X'] = a^2*Var[X*f_0 + X*f_1 + ... + X*f_N-1]
+    #             = a^2*(f_0^2*Var[X] + f_1^2*Var[X] + ... + (f_N-1)^2*Var[X])
+    #             = sum(f_i^2)*a^2*Var[X]
+    #
+    # We want Var[a*X'] to be equal to Var[X]:
+    #
+    #    sum(f_i^2)*a^2*Var[X] = Var[X] -> a = sqrt(1/sum(f_i^2))
+    #
+    # We can just bake this normalization factor into the high pass
+    # filter kernel.
+    f = f/math.sqrt(np.dot(f, f))
+
+    bracket_factor = math.pow(2, bracket_stops)
+
+    with its.device.ItsSession() as cam:
         props = cam.get_camera_properties()
 
-        white_level = float(props['android.sensor.info.whiteLevel'])
+        # Get basic properties we need.
+        sens_min, sens_max = props['android.sensor.info.sensitivityRange']
+        sens_max_analog = props['android.sensor.maxAnalogSensitivity']
+        white_level = props['android.sensor.info.whiteLevel']
         black_levels = props['android.sensor.blackLevelPattern']
         idxs = its.image.get_canonical_cfa_order(props)
         black_levels = [black_levels[i] for i in idxs]
 
-        # Expose for the scene with min sensitivity
-        sens_min, sens_max = props['android.sensor.info.sensitivityRange']
-        s_ae,e_ae,awb_gains,awb_ccm,_  = cam.do_3a(get_results=True)
-        s_e_prod = s_ae * e_ae
+        print "Sensitivity range: [%f, %f]" % (sens_min, sens_max)
+        print "Max analog sensitivity: %f" % (sens_max_analog)
 
-        # Make the image brighter since the script looks at linear Bayer
-        # raw patches rather than gamma-encoded YUV patches (and the AE
-        # probably under-exposes a little for this use-case).
-        s_e_prod *= 2
+        # Do AE to get a rough idea of where we are.
+        s_ae,e_ae,_,_,_  = \
+            cam.do_3a(get_results=True, do_awb=False, do_af=False)
+        # Underexpose to get more data for low signal levels.
+        auto_e = s_ae*e_ae/bracket_factor
 
-        # Capture raw frames across the full sensitivity range.
-        NUM_SENS_STEPS = 9
-        sens_step = int((sens_max - sens_min - 1) / float(NUM_SENS_STEPS))
-        reqs = []
-        sens = []
-        for s in range(sens_min, sens_max, sens_step):
-            e = int(s_e_prod / float(s))
-            req = its.objects.manual_capture_request(s, e)
-            req["android.colorCorrection.transform"] = \
-                    its.objects.float_to_rational(awb_ccm)
-            req["android.colorCorrection.gains"] = awb_gains
-            reqs.append(req)
-            sens.append(s)
+        # If the auto-exposure result is too bright for the highest
+        # sensitivity or too dark for the lowest sensitivity, report
+        # an error.
+        min_exposure_ns, max_exposure_ns = \
+            props['android.sensor.info.exposureTimeRange']
+        if auto_e < min_exposure_ns*sens_max:
+            raise its.error.Error("Scene is too bright to properly expose \
+                                  at the highest sensitivity")
+        if auto_e*bracket_factor > max_exposure_ns*sens_min:
+            raise its.error.Error("Scene is too dark to properly expose \
+                                  at the lowest sensitivity")
 
-        caps = cam.do_capture(reqs, cam.CAP_RAW)
+        # Start the sensitivities at the minimum.
+        s = sens_min
 
-        # A list of the (x,y) coords of the center pixel of a collection of
-        # patches of a color checker chart. Each patch should be uniform,
-        # however the actual color doesn't matter. Note that the coords are
-        # relative to the *converted* RGB image, which is 1/2 x 1/2 of the
-        # full size; convert back to full.
-        img = its.image.convert_capture_to_rgb_image(caps[0], props=props)
-        patches = its.image.get_color_checker_chart_patches(img, NAME+"_debug")
-        patches = [(2*x,2*y) for (x,y) in sum(patches,[])]
+        samples = []
+        plots = []
+        measured_models = []
+        while s <= sens_max + 1:
+            print "ISO %d" % round(s)
+            fig = plt.figure()
+            plt_s = fig.gca()
+            plt_s.set_title("ISO %d" % round(s))
+            plt_s.set_xlabel("Mean signal level")
+            plt_s.set_ylabel("Variance")
 
-        lines = []
-        for iouter, (s,cap) in enumerate(zip(sens,caps)):
-            # For each capture, compute the mean value in each patch, for each
-            # Bayer plane; discard patches where pixels are close to clamped.
-            # Also compute the variance.
-            CLAMP_THRESH = 0.2
-            planes = its.image.convert_capture_to_planes(cap, props)
-            points = []
-            for i,plane in enumerate(planes):
-                plane = (plane * white_level - black_levels[i]) / (
-                        white_level - black_levels[i])
-                for j,(x,y) in enumerate(patches):
-                    tile = plane[y/2-16:y/2+16:,x/2-16:x/2+16:,::]
-                    mean = its.image.compute_image_means(tile)[0]
-                    var = its.image.compute_image_variances(tile)[0]
-                    if (mean > CLAMP_THRESH and mean < 1.0-CLAMP_THRESH):
-                        # Each point is a (mean,variance) tuple for a patch;
-                        # for a given ISO, there should be a linear
-                        # relationship between these values.
-                        points.append((mean,var))
+            samples_s = []
+            for b in range(0, bracket_stops + 1):
+                # Get the exposure for this sensitivity and exposure time.
+                e = int(math.pow(2, b)*auto_e/float(s))
+                req = its.objects.manual_capture_request(round(s), e)
+                cap = cam.do_capture(req, cam.CAP_RAW)
+                planes = its.image.convert_capture_to_planes(cap, props)
 
-            # Fit a line to the points, with a line equation: y = mx + b.
-            # This line is the relationship between mean and variance (i.e.)
-            # between signal level and noise, for this particular sensor.
-            # In the DNG noise model, the gradient (m) is "S", and the offset
-            # (b) is "O".
-            points.sort()
-            xs = [x for (x,y) in points]
-            ys = [y for (x,y) in points]
-            m,b = numpy.polyfit(xs, ys, 1)
-            lines.append((s,m,b))
-            print s, "->", m, b
+                samples_e = []
+                for (pidx, p) in enumerate(planes):
+                    p = p.squeeze()
 
-            # TODO: Clean up these checks (which currently fail in some cases).
-            # Some sanity checks:
-            # * Noise levels should increase with brightness.
-            # * Extrapolating to a black image, the noise should be positive.
-            # Basically, the "b" value should correspond to the read noise,
-            # which is the noise level if the sensor was operating in zero
-            # light.
-            #assert(m > 0)
-            #assert(b >= 0)
+                    # Crop the plane to be a multiple of the tile size.
+                    p = p[0:p.shape[0] - p.shape[0]%tile_size, 
+                          0:p.shape[1] - p.shape[1]%tile_size]
 
-            if iouter == 0:
-                pylab.plot(xs, ys, 'r', label="Measured")
-                pylab.plot([0,xs[-1]],[b,m*xs[-1]+b],'b', label="Fit")
-            else:
-                pylab.plot(xs, ys, 'r')
-                pylab.plot([0,xs[-1]],[b,m*xs[-1]+b],'b')
+                    # convert_capture_to_planes normalizes the range
+                    # to [0, 1], but without subtracting the black
+                    # level.
+                    black_level = black_levels[pidx]
+                    p = p*white_level
+                    p = (p - black_level)/(white_level - black_level)
 
-        pylab.xlabel("Mean")
-        pylab.ylabel("Variance")
-        pylab.legend()
-        matplotlib.pyplot.savefig("%s_plot_mean_vs_variance.png" % (NAME))
+                    # Use our high pass filter to filter this plane.
+                    hp = scipy.signal.sepfir2d(p, f, f).astype('float32')
 
-        # Now fit a line across the (m,b) line parameters for each sensitivity.
-        # The gradient (m) params are fit to the "S" line, and the offset (b)
-        # params are fit to the "O" line, both as a function of sensitivity.
-        gains = [d[0] for d in lines]
-        Ss = [d[1] for d in lines]
-        Os = [d[2] for d in lines]
-        mS,bS = numpy.polyfit(gains, Ss, 1)
-        mO,bO = numpy.polyfit(gains, Os, 1)
+                    means_tiled = \
+                        np.mean(tile(p, tile_size), axis=(0, 1)).flatten()
+                    vars_tiled = \
+                        np.var(tile(hp, tile_size), axis=(0, 1)).flatten()
 
-        # Plot curve "O" as 10x, so it fits in the same scale as curve "S".
-        fig = matplotlib.pyplot.figure()
-        pylab.plot(gains, [10*o for o in Os], 'r', label="Measured")
-        pylab.plot([gains[0],gains[-1]],
-                [10*mO*gains[0]+10*bO, 10*mO*gains[-1]+10*bO],'r--',label="Fit")
-        pylab.plot(gains, Ss, 'b', label="Measured")
-        pylab.plot([gains[0],gains[-1]], [mS*gains[0]+bS,mS*gains[-1]+bS],'b--',
-                label="Fit")
-        pylab.xlabel("Sensitivity")
-        pylab.ylabel("Model parameter: S (blue), O x10 (red)")
-        pylab.legend()
-        matplotlib.pyplot.savefig("%s_plot_S_O.png" % (NAME))
+                    for (mean, var) in zip(means_tiled, vars_tiled):
+                        # Don't include the tile if it has samples that might 
+                        # be clipped.
+                        if mean + 2*math.sqrt(var) < max_signal_level:
+                            samples_e.append([mean, var])
 
+                    means_e, vars_e = zip(*samples_e)
+                    plt_s.plot(means_e, vars_e, colors[b%len(colors)] + ',')
+
+                    samples_s.extend(samples_e)
+
+            [S, O, R, p, stderr] = scipy.stats.linregress(samples_s)
+            measured_models.append([round(s), S, O])
+            print "Sensitivity %d: %e*y + %e (R=%f)" % (round(s), S, O, R)
+
+            # Add the samples for this sensitivity to the global samples list.
+            samples.extend([(round(s), mean, var) for (mean, var) in samples_s])
+
+            # Add the linear fit to the plot for this sensitivity.
+            plt_s.plot([0, max_signal_level], [O, O + S*max_signal_level], 'r-', 
+                       label="Linear fit")
+            xmax = max([x for (x, _) in samples_s])*1.25
+            plt_s.set_xlim(xmin=0, xmax=xmax)
+            plt_s.set_ylim(ymin=0, ymax=(O + S*xmax)*1.25)
+            fig.savefig("%s_samples_iso%04d.png" % (NAME, round(s)))
+            plots.append([round(s), fig])
+
+            # Move to the next sensitivity.
+            s = s*math.pow(2, 1.0/steps_per_stop)
+
+        # Grab the sensitivities and line parameters from each sensitivity.
+        S_measured = [e[1] for e in measured_models]
+        O_measured = [e[2] for e in measured_models]
+        sens = np.asarray([e[0] for e in measured_models])
+        sens_sq = np.square(sens)
+
+        # Use a global linear optimization to fit the noise model.
+        gains = np.asarray([s[0] for s in samples])
+        means = np.asarray([s[1] for s in samples])
+        vars_ = np.asarray([s[2] for s in samples])
+
+        # Define digital gain as the gain above the max analog gain
+        # per the Camera2 spec. Also, define a corresponding C
+        # expression snippet to use in the generated model code.
+        digital_gains = np.maximum(gains/sens_max_analog, 1)
+        digital_gain_cdef = "(sens / %d.0) < 1.0 ? 1.0 : (sens / %d.0)" % \
+            (sens_max_analog, sens_max_analog)
+
+        # Find the noise model parameters via least squares fit.
+        ad = gains*means
+        bd = means
+        cd = gains*gains
+        dd = digital_gains*digital_gains
+        a = np.asarray([ad, bd, cd, dd]).T
+        b = vars_
+
+        # To avoid overfitting to high ISOs (high variances), divide the system
+        # by the gains.
+        a = a/(np.tile(gains, (a.shape[1], 1)).T)
+        b = b/gains
+
+        [A, B, C, D], _, _, _ = np.linalg.lstsq(a, b)
+
+        # Plot the noise model components with the values predicted by the 
+        # noise model.
+        S_model = A*sens + B
+        O_model = \
+            C*sens_sq + D*np.square(np.maximum(sens/sens_max_analog, 1))
+
+        (fig, (plt_S, plt_O)) = plt.subplots(2, 1)
+        plt_S.set_title("Noise model")
+        plt_S.set_ylabel("S")
+        plt_S.loglog(sens, S_measured, 'r+', basex=10, basey=10, 
+                     label="Measured")
+        plt_S.loglog(sens, S_model, 'bx', basex=10, basey=10, label="Model")
+        plt_S.legend(loc=2)
+
+        plt_O.set_xlabel("ISO")
+        plt_O.set_ylabel("O")
+        plt_O.loglog(sens, O_measured, 'r+', basex=10, basey=10, 
+                     label="Measured")
+        plt_O.loglog(sens, O_model, 'bx', basex=10, basey=10, label="Model")
+        fig.savefig("%s.png" % (NAME))
+
+        for [s, fig] in plots:
+            plt_s = fig.gca()
+
+            dg = max(s/sens_max_analog, 1)
+            S = A*s + B
+            O = C*s*s + D*dg*dg
+            plt_s.plot([0, max_signal_level], [O, O + S*max_signal_level], 'b-', 
+                       label="Model")
+            plt_s.legend(loc=2)
+
+            plt.figure(fig.number)
+
+            # Re-save the plot with the global model.
+            fig.savefig("%s_samples_iso%04d.png" % (NAME, round(s)))
+
+        # Generate the noise model implementation.
         print """
         /* Generated test code to dump a table of data for external validation
          * of the noise model parameters.
@@ -176,11 +281,13 @@
             double s = %e * sens + %e;
             return s < 0.0 ? 0.0 : s;
         }
+
         double compute_noise_model_entry_O(int sens) {
-            double o = %e * sens + %e;
+            double digital_gain = %s;
+            double o = %e * sens * sens + %e * digital_gain * digital_gain;
             return o < 0.0 ? 0.0 : o;
         }
-        """%(sens_min,sens_max,mS,bS,mO,bO)
+        """ % (sens_min, sens_max, A, B, digital_gain_cdef, C, D)
 
 if __name__ == '__main__':
     main()
diff --git a/apps/CameraITS/tests/scene1/test_param_noise_reduction.py b/apps/CameraITS/tests/scene1/test_param_noise_reduction.py
index f5176a7..2c8d73b 100644
--- a/apps/CameraITS/tests/scene1/test_param_noise_reduction.py
+++ b/apps/CameraITS/tests/scene1/test_param_noise_reduction.py
@@ -17,10 +17,11 @@
 import its.device
 import its.objects
 import its.target
-import pylab
-import os.path
 import matplotlib
 import matplotlib.pyplot
+import numpy
+import os.path
+import pylab
 
 def main():
     """Test that the android.noiseReduction.mode param is applied when set.
@@ -34,6 +35,8 @@
     """
     NAME = os.path.basename(__file__).split(".")[0]
 
+    RELATIVE_ERROR_TOLERANCE = 0.1
+
     # List of variances for Y,U,V.
     variances = [[],[],[]]
 
@@ -45,7 +48,8 @@
     with its.device.ItsSession() as cam:
         props = cam.get_camera_properties()
         its.caps.skip_unless(its.caps.compute_target_exposure(props) and
-                             its.caps.per_frame_control(props))
+                             its.caps.per_frame_control(props) and
+                             its.caps.noise_reduction_mode(props, 0))
 
         # NR mode 0 with low gain
         e, s = its.target.get_target_exposure_combos(cam)["minSensitivity"]
@@ -62,37 +66,64 @@
             ref_variance.append(its.image.compute_image_variances(tile)[0])
         print "Ref variances:", ref_variance
 
-        for i in range(3):
-            # NR modes 0, 1, 2 with high gain
+        # NR modes 0, 1, 2, 3, 4 with high gain
+        for mode in range(5):
+            # Skip unavailable modes
+            if not its.caps.noise_reduction_mode(props, mode):
+                nr_modes_reported.append(mode)
+                for channel in range(3):
+                    variances[channel].append(0)
+                continue;
+
             e, s = its.target.get_target_exposure_combos(cam)["maxSensitivity"]
             req = its.objects.manual_capture_request(s, e)
-            req["android.noiseReduction.mode"] = i
+            req["android.noiseReduction.mode"] = mode
             cap = cam.do_capture(req)
             nr_modes_reported.append(
                     cap["metadata"]["android.noiseReduction.mode"])
             its.image.write_image(
                     its.image.convert_capture_to_rgb_image(cap),
-                    "%s_high_gain_nr=%d.jpg" % (NAME, i))
+                    "%s_high_gain_nr=%d.jpg" % (NAME, mode))
             planes = its.image.convert_capture_to_planes(cap)
             for j in range(3):
                 img = planes[j]
                 tile = its.image.get_image_patch(img, 0.45, 0.45, 0.1, 0.1)
                 variance = its.image.compute_image_variances(tile)[0]
                 variances[j].append(variance / ref_variance[j])
-        print "Variances with NR mode [0,1,2]:", variances
+        print "Variances with NR mode [0,1,2,3,4]:", variances
 
     # Draw a plot.
     for j in range(3):
-        pylab.plot(range(3), variances[j], "rgb"[j])
+        pylab.plot(range(5), variances[j], "rgb"[j])
     matplotlib.pyplot.savefig("%s_plot_variances.png" % (NAME))
 
-    assert(nr_modes_reported == [0,1,2])
+    assert(nr_modes_reported == [0,1,2,3,4])
 
-    # Check that the variance of the NR=0 image is higher than for the
-    # NR=1 and NR=2 images.
     for j in range(3):
-        for i in range(1,3):
-            assert(variances[j][i] < variances[j][0])
+        # Smaller variance is better
+        # Verify OFF(0) is not better than FAST(1)
+        assert(variances[j][0] >
+               variances[j][1] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+        # Verify FAST(1) is not better than HQ(2)
+        assert(variances[j][1] >
+               variances[j][2] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+        # Verify HQ(2) is better than OFF(0)
+        assert(variances[j][0] > variances[j][2])
+        if its.caps.noise_reduction_mode(props, 3):
+            # Verify OFF(0) is not better than MINIMAL(3)
+            assert(variances[j][0] >
+                   variances[j][3] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+            # Verify MINIMAL(3) is not better than HQ(2)
+            assert(variances[j][3] >
+                   variances[j][2] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+            if its.caps.noise_reduction_mode(props, 4):
+                # Verify ZSL(4) is close to MINIMAL(3)
+                assert(numpy.isclose(variances[j][4], variances[j][3],
+                                     RELATIVE_ERROR_TOLERANCE))
+        elif its.caps.noise_reduction_mode(props, 4):
+            # Verify ZSL(4) is close to OFF(0)
+            assert(numpy.isclose(variances[j][4], variances[j][0],
+                                 RELATIVE_ERROR_TOLERANCE))
 
 if __name__ == '__main__':
     main()
diff --git a/apps/CameraITS/tests/scene1/test_reprocess_noise_reduction.py b/apps/CameraITS/tests/scene1/test_reprocess_noise_reduction.py
index e9240ba..757dfeb 100644
--- a/apps/CameraITS/tests/scene1/test_reprocess_noise_reduction.py
+++ b/apps/CameraITS/tests/scene1/test_reprocess_noise_reduction.py
@@ -20,6 +20,7 @@
 import math
 import matplotlib
 import matplotlib.pyplot
+import numpy
 import os.path
 import pylab
 
@@ -37,14 +38,20 @@
 
     NAME = os.path.basename(__file__).split(".")[0]
 
+    RELATIVE_ERROR_TOLERANCE = 0.1
+
     with its.device.ItsSession() as cam:
         props = cam.get_camera_properties()
 
         its.caps.skip_unless(its.caps.compute_target_exposure(props) and
                              its.caps.per_frame_control(props) and
+                             its.caps.noise_reduction_mode(props, 0) and
                              (its.caps.yuv_reprocess(props) or
                               its.caps.private_reprocess(props)))
 
+        # If reprocessing is supported, ZSL NR mode must be avaiable.
+        assert(its.caps.noise_reduction_mode(props, 4))
+
         reprocess_formats = []
         if (its.caps.yuv_reprocess(props)):
             reprocess_formats.append("yuv")
@@ -73,8 +80,14 @@
             ref_variance = its.image.compute_image_variances(tile)
             print "Ref variances:", ref_variance
 
-            for nr_mode in range(3):
-                # NR modes 0, 1, 2 with high gain
+            for nr_mode in range(5):
+                # Skip unavailable modes
+                if not its.caps.noise_reduction_mode(props, nr_mode):
+                    nr_modes_reported.append(nr_mode)
+                    variances.append(0)
+                    continue
+
+                # NR modes with high gain
                 e, s = its.target.get_target_exposure_combos(cam) \
                     ["maxSensitivity"]
                 req = its.objects.manual_capture_request(s, e)
@@ -91,21 +104,44 @@
                 variance = its.image.compute_image_variances(tile)
                 variances.append(
                     [variance[chan] / ref_variance[chan] for chan in range(3)])
-            print "Variances with NR mode [0,1,2]:", variances
+            print "Variances with NR mode [0,1,2,3,4]:", variances
 
             # Draw a plot.
-            for nr_mode in range(3):
-                pylab.plot(range(3), variances[nr_mode], "rgb"[nr_mode])
+            for chan in range(3):
+                line = []
+                for nr_mode in range(5):
+                    line.append(variances[nr_mode][chan])
+                pylab.plot(range(5), line, "rgb"[chan])
+
             matplotlib.pyplot.savefig("%s_plot_%s_variances.png" %
                                       (NAME, reprocess_format))
 
-            assert(nr_modes_reported == [0,1,2])
+            assert(nr_modes_reported == [0,1,2,3,4])
 
-            # Check that the variance of the NR=0 image is higher than for the
-            # NR=1 and NR=2 images.
             for j in range(3):
-                for i in range(1,3):
-                    assert(variances[i][j] < variances[0][j])
+                # Smaller variance is better
+                # Verify OFF(0) is not better than FAST(1)
+                assert(variances[0][j] >
+                       variances[1][j] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+                # Verify FAST(1) is not better than HQ(2)
+                assert(variances[1][j] >
+                       variances[2][j] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+                # Verify HQ(2) is better than OFF(0)
+                assert(variances[0][j] > variances[2][j])
+                if its.caps.noise_reduction_mode(props, 3):
+                    # Verify OFF(0) is not better than MINIMAL(3)
+                    assert(variances[0][j] >
+                           variances[3][j] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+                    # Verify MINIMAL(3) is not better than HQ(2)
+                    assert(variances[3][j] >
+                           variances[2][j] * (1.0 - RELATIVE_ERROR_TOLERANCE))
+                    # Verify ZSL(4) is close to MINIMAL(3)
+                    assert(numpy.isclose(variances[4][j], variances[3][j],
+                                         RELATIVE_ERROR_TOLERANCE))
+                else:
+                    # Verify ZSL(4) is close to OFF(0)
+                    assert(numpy.isclose(variances[4][j], variances[0][j],
+                                         RELATIVE_ERROR_TOLERANCE))
 
 if __name__ == '__main__':
     main()
diff --git a/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py b/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
index 1966d9e..910cda2 100644
--- a/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
+++ b/apps/CameraITS/tests/scene3/test_reprocess_edge_enhancement.py
@@ -20,6 +20,7 @@
 import math
 import matplotlib
 import matplotlib.pyplot
+import numpy
 import os.path
 import pylab
 
@@ -90,9 +91,13 @@
 
         its.caps.skip_unless(its.caps.read_3a(props) and
                              its.caps.per_frame_control(props) and
+                             its.caps.edge_mode(props, 0) and
                              (its.caps.yuv_reprocess(props) or
                               its.caps.private_reprocess(props)))
 
+        # If reprocessing is supported, ZSL EE mode must be avaiable.
+        assert(its.caps.edge_mode(props, 3))
+
         reprocess_formats = []
         if (its.caps.yuv_reprocess(props)):
             reprocess_formats.append("yuv")
@@ -108,13 +113,18 @@
         # Get the sharpness for each edge mode for regular requests
         sharpness_regular = []
         edge_mode_reported_regular = []
-        for edge_mode in range(3):
+        for edge_mode in range(4):
+            # Skip unavailable modes
+            if not its.caps.edge_mode(props, edge_mode):
+                edge_mode_reported_regular.append(edge_mode)
+                sharpness_regular.append(0)
+                continue
             ret = test_edge_mode(cam, edge_mode, s, e, fd, out_surface)
             edge_mode_reported_regular.append(ret["edge_mode"])
             sharpness_regular.append(ret["sharpness"])
 
         print "Reported edge modes:", edge_mode_reported_regular
-        print "Sharpness with EE mode [0,1,2]:", sharpness_regular
+        print "Sharpness with EE mode [0,1,2,3]:", sharpness_regular
 
         # Get the sharpness for each reprocess format and edge mode for
         # reprocess requests.
@@ -125,7 +135,13 @@
             # List of sharpness
             sharpnesses = []
             edge_mode_reported = []
-            for edge_mode in range(3):
+            for edge_mode in range(4):
+                # Skip unavailable modes
+                if not its.caps.edge_mode(props, edge_mode):
+                    edge_mode_reported.append(edge_mode)
+                    sharpnesses.append(0)
+                    continue
+
                 ret = test_edge_mode(cam, edge_mode, s, e, fd, out_surface,
                     reprocess_format)
                 edge_mode_reported.append(ret["edge_mode"])
@@ -135,24 +151,51 @@
             edge_mode_reported_reprocess.append(edge_mode_reported)
 
             print "Reported edge modes:", edge_mode_reported
-            print "Sharpness with EE mode [0,1,2] for %s reprocess:" % \
+            print "Sharpness with EE mode [0,1,2,3] for %s reprocess:" % \
                 (reprocess_format) , sharpnesses
 
-        # Verify the results
-        assert(edge_mode_reported_regular == [0,1,2])
-        assert(sharpness_regular[1] >
-            sharpness_regular[0] * (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
-        assert(sharpness_regular[2] >
-            sharpness_regular[0] * (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
 
-        # Verify the reprocess
+        # Verify HQ(2) is sharper than OFF(0)
+        assert(sharpness_regular[2] > sharpness_regular[0])
+
+        # Verify ZSL(3) is similar to OFF(0)
+        assert(numpy.isclose(sharpness_regular[3], sharpness_regular[0],
+                             THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+
+        # Verify OFF(0) is not sharper than FAST(1)
+        assert(sharpness_regular[1] >
+               sharpness_regular[0] * (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+
+        # Verify FAST(1) is not sharper than HQ(2)
+        assert(sharpness_regular[2] >
+               sharpness_regular[1] * (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+
         for reprocess_format in range(len(reprocess_formats)):
-            assert(edge_mode_reported_reprocess[reprocess_format] == [0,1,2])
-            for edge_mode in range(3):
-                assert(sharpnesses_reprocess[reprocess_format][edge_mode] >=
-                    (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF) *
-                    sharpnesses_reprocess[reprocess_format][0] *
-                    sharpness_regular[edge_mode] / sharpness_regular[0])
+            # Verify HQ(2) is sharper than OFF(0)
+            assert(sharpnesses_reprocess[reprocess_format][2] >
+                   sharpnesses_reprocess[reprocess_format][0])
+
+            # Verify ZSL(3) is similar to OFF(0)
+            assert(numpy.isclose(sharpnesses_reprocess[reprocess_format][3],
+                                 sharpnesses_reprocess[reprocess_format][0],
+                                 THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+
+            # Verify OFF(0) is not sharper than FAST(1)
+            assert(sharpnesses_reprocess[reprocess_format][1] >
+                   sharpnesses_reprocess[reprocess_format][0] *
+                   (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+
+            # Verify FAST(1) is not sharper than HQ(2)
+            assert(sharpnesses_reprocess[reprocess_format][2] >
+                   sharpnesses_reprocess[reprocess_format][1] *
+                   (1.0 - THRESHOLD_RELATIVE_SHARPNESS_DIFF))
+
+            # Verify reprocessing HQ(2) is similar to regular HQ(2) relative to
+            # OFF(0)
+            assert(numpy.isclose(sharpness_reprocess[reprocess_format][2] /
+                                    sharpness_reprocess[reprocess_format][0],
+                                 sharpness_regular[2] / sharpness_regular[0],
+                                 THRESHOLD_RELATIVE_SHARPNESS_DIFF))
 
 if __name__ == '__main__':
     main()
diff --git a/apps/CameraITS/tools/config.py b/apps/CameraITS/tools/config.py
index 6e83412..52929aa 100644
--- a/apps/CameraITS/tools/config.py
+++ b/apps/CameraITS/tools/config.py
@@ -44,7 +44,7 @@
     # Command line args, ignoring any args that will be passed down to the
     # ItsSession constructor.
     args = [s for s in sys.argv if s[:6] not in \
-            ["reboot", "camera", "target", "noinit"]]
+            ["reboot", "camera", "target", "device"]]
 
     if len(args) == 1:
         with its.device.ItsSession() as cam:
diff --git a/apps/CameraITS/tools/run_all_tests.py b/apps/CameraITS/tools/run_all_tests.py
index 254d65cf..dd12512 100644
--- a/apps/CameraITS/tools/run_all_tests.py
+++ b/apps/CameraITS/tools/run_all_tests.py
@@ -42,7 +42,7 @@
             "test_ev_compensation_basic",
             "test_yuv_plus_jpeg"
         ],
-        "scene2":[]
+        "scene2":[],
         "scene3":[]
     }
 
@@ -52,7 +52,7 @@
     scene_req = {
         "scene0" : None,
         "scene1" : "A grey card covering at least the middle 30% of the scene",
-        "scene2" : "A picture containing human faces"
+        "scene2" : "A picture containing human faces",
         "scene3" : "A chart containing sharp edges like ISO 12233"
     }
     tests = []
@@ -66,6 +66,10 @@
     topdir = tempfile.mkdtemp()
     print "Saving output files to:", topdir, "\n"
 
+    device_id = its.device.get_device_id()
+    device_id_arg = "device=" + device_id
+    print "Testing device " + device_id
+
     camera_ids = []
     for s in sys.argv[1:]:
         if s[:7] == "camera=" and len(s) > 7:
@@ -76,7 +80,8 @@
         camera_ids_path = os.path.join(topdir, "camera_ids.txt")
         out_arg = "out=" + camera_ids_path
         cmd = ['python',
-               os.path.join(os.getcwd(),"tools/get_camera_ids.py"), out_arg]
+               os.path.join(os.getcwd(),"tools/get_camera_ids.py"), out_arg,
+               device_id_arg]
         retcode = subprocess.call(cmd,cwd=topdir)
         assert(retcode == 0)
         with open(camera_ids_path, "r") as f:
@@ -110,7 +115,7 @@
                 scene_arg = "scene=" + scene_req[scene]
                 cmd = ['python',
                         os.path.join(os.getcwd(),"tools/validate_scene.py"),
-                        camera_id_arg, out_arg, scene_arg]
+                        camera_id_arg, out_arg, scene_arg, device_id_arg]
                 retcode = subprocess.call(cmd,cwd=topdir)
                 assert(retcode == 0)
                 print "Start running tests for", scene
@@ -170,7 +175,7 @@
         summary_path = os.path.join(topdir, camera_id, "summary.txt")
         with open(summary_path, "w") as f:
             f.write(summary)
-        its.device.report_result(camera_id, result, summary_path)
+        its.device.report_result(device_id, camera_id, result, summary_path)
 
     print "ITS tests finished. Please go back to CtsVerifier and proceed"
 
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index dd85a19..5ddfcb2 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -43,7 +43,7 @@
 
 LOCAL_AAPT_FLAGS += --version-name "5.0_r1.91 $(BUILD_NUMBER)"
 
-LOCAL_JNI_SHARED_LIBRARIES := libctsverifier_jni
+LOCAL_JNI_SHARED_LIBRARIES := libctsverifier_jni libaudioloopback_jni
 
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
 
@@ -64,12 +64,14 @@
 
 
 notification-bot := $(call intermediates-dir-for,APPS,NotificationBot)/package.apk
+permission-app := $(call intermediates-dir-for,APPS,CtsPermissionApp)/package.apk
 
 # Builds and launches CTS Verifier on a device.
 .PHONY: cts-verifier
-cts-verifier: CtsVerifier adb NotificationBot
+cts-verifier: CtsVerifier adb NotificationBot CtsPermissionApp
 	adb install -r $(PRODUCT_OUT)/data/app/CtsVerifier/CtsVerifier.apk \
 		&& adb install -r $(notification-bot) \
+		&& adb install -r $(permission-app) \
 		&& adb shell "am start -n com.android.cts.verifier/.CtsVerifierActivity"
 
 #
@@ -106,10 +108,12 @@
 endif
 $(verifier-zip) : $(HOST_OUT)/CameraITS
 $(verifier-zip) : $(notification-bot)
+$(verifier-zip) : $(permission-app)
 $(verifier-zip) : $(call intermediates-dir-for,APPS,CtsVerifier)/package.apk | $(ACP)
 		$(hide) mkdir -p $(verifier-dir)
 		$(hide) $(ACP) -fp $< $(verifier-dir)/CtsVerifier.apk
 		$(ACP) -fp $(notification-bot) $(verifier-dir)/NotificationBot.apk
+		$(ACP) -fp $(permission-app) $(verifier-dir)/CtsPermissionApp.apk
 ifeq ($(HOST_OS),linux)
 		$(hide) $(ACP) -fp $(HOST_OUT)/bin/cts-usb-accessory $(verifier-dir)/cts-usb-accessory
 endif
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index 0f4cb6b..36f3e6c 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -56,6 +56,7 @@
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
     <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
+    <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
 
     <!-- Needed by the Audio Quality Verifier to store the sound samples that will be mailed. -->
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@@ -352,6 +353,28 @@
             <meta-data android:name="test_category" android:value="@string/test_category_security" />
         </activity>
 
+        <activity android:name=".security.FingerprintBoundKeysTest"
+                android:label="@string/sec_fingerprint_bound_key_test"
+                android:configChanges="keyboardHidden|orientation|screenSize" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_security" />
+            <meta-data android:name="test_excluded_features"
+                       android:value="android.hardware.type.television:android.software.leanback:android.hardware.type.watch" />
+        </activity>
+        <activity android:name=".security.ScreenLockBoundKeysTest"
+                android:label="@string/sec_lock_bound_key_test"
+                android:configChanges="keyboardHidden|orientation|screenSize" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_security" />
+            <meta-data android:name="test_excluded_features"
+                       android:value="android.hardware.type.television:android.software.leanback:android.hardware.type.watch" />
+        </activity>
         <activity android:name=".security.LockConfirmBypassTest"
                 android:label="@string/lock_confirm_test_title"
                 android:configChanges="keyboardHidden|orientation|screenSize" >
@@ -429,6 +452,10 @@
                 android:label="@string/nfc_ndef_push_receiver"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
 
+        <activity android:name=".nfc.LlcpVersionActivity"
+                android:label="@string/nfc_llcp_version_check"
+                android:configChanges="keyboardHidden|orientation|screenSize" />
+
         <activity android:name=".nfc.TagVerifierActivity"
                 android:label="@string/nfc_tag_verifier"
                 android:configChanges="keyboardHidden|orientation|screenSize" />
@@ -1342,12 +1369,34 @@
                 android:theme="@android:style/Theme.NoDisplay"
                 android:noHistory="true"
                 android:autoRemoveFromRecents="true"
-                android:stateNotNeeded="true"/>
+                android:stateNotNeeded="true">
+        </activity>
+
+        <activity android:name=".managedprovisioning.KeyguardDisabledFeaturesActivity"
+                android:label="@string/provisioning_byod_keyguard_disabled_features">
+        </activity>
 
         <activity android:name=".managedprovisioning.WifiLockdownTestActivity"
                 android:label="@string/device_owner_wifi_lockdown_test">
         </activity>
 
+        <activity android:name=".managedprovisioning.PermissionLockdownTestActivity"
+                android:label="@string/device_profile_owner_permission_lockdown_test">
+            <intent-filter>
+                <action android:name="com.android.cts.verifier.managedprovisioning.action.CHECK_PERMISSION_LOCKDOWN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity-alias
+                android:name=".managedprovisioning.ManagedProfilePermissionLockdownTestActivity"
+                android:targetActivity=".managedprovisioning.PermissionLockdownTestActivity">
+            <intent-filter>
+                <action android:name="com.android.cts.verifier.managedprovisioning.action.MANAGED_PROFILE_CHECK_PERMISSION_LOCKDOWN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity-alias>
+
         <activity android:name=".managedprovisioning.ByodFlowTestActivity"
                 android:launchMode="singleTask"
                 android:label="@string/provisioning_byod">
@@ -1372,6 +1421,8 @@
                 <action android:name="com.android.cts.verifier.managedprovisioning.BYOD_CAPTURE_AND_CHECK_IMAGE" />
                 <action android:name="com.android.cts.verifier.managedprovisioning.BYOD_CAPTURE_AND_CHECK_VIDEO" />
                 <action android:name="com.android.cts.verifier.managedprovisioning.BYOD_CAPTURE_AND_CHECK_AUDIO" />
+                <action android:name="com.android.cts.verifier.managedprovisioning.BYOD_KEYGUARD_DISABLED_FEATURES" />
+                <action android:name="com.android.cts.verifier.managedprovisioning.BYOD_LOCKNOW" />
                 <category android:name="android.intent.category.DEFAULT"></category>
             </intent-filter>
         </activity>
@@ -1411,6 +1462,7 @@
         <activity android:name=".managedprovisioning.WorkNotificationTestActivity">
             <intent-filter>
                 <action android:name="com.android.cts.verifier.managedprovisioning.WORK_NOTIFICATION" />
+                <action android:name="com.android.cts.verifier.managedprovisioning.LOCKSCREEN_NOTIFICATION" />
                 <action android:name="com.android.cts.verifier.managedprovisioning.CLEAR_WORK_NOTIFICATION" />
                 <category android:name="android.intent.category.DEFAULT"></category>
             </intent-filter>
@@ -1576,6 +1628,42 @@
             -->
         </activity>
 
+        <activity android:name=".audio.AudioLoopbackActivity"
+                  android:label="@string/audio_loopback_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_audio" />
+            <meta-data android:name="test_required_features" android:value="android.hardware.microphone" />
+            <meta-data android:name="test_excluded_features" android:value="android.hardware.type.watch" />
+            <meta-data android:name="test_excluded_features" android:value="android.hardware.type.television" />
+        </activity>
+
+        <activity android:name=".audio.AudioFrequencyLineActivity"
+                  android:label="@string/audio_frequency_line_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_audio" />
+            <meta-data android:name="test_required_features" android:value="android.hardware.microphone" />
+            <meta-data android:name="test_excluded_features" android:value="android.hardware.type.watch" />
+            <meta-data android:name="test_excluded_features" android:value="android.hardware.type.television" />
+        </activity>
+
+        <activity android:name=".audio.AudioFrequencySpeakerActivity"
+                  android:label="@string/audio_frequency_speaker_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_audio" />
+            <!-- <meta-data android:name="test_required_features" android:value="android.hardware.microphone" /> -->
+            <meta-data android:name="test_excluded_features" android:value="android.hardware.type.watch" />
+            <meta-data android:name="test_excluded_features" android:value="android.hardware.type.television" />
+        </activity>
+
         <service android:name=".tv.MockTvInputService"
             android:permission="android.permission.BIND_TV_INPUT">
             <intent-filter>
diff --git a/apps/CtsVerifier/jni/audio_loopback/Android.mk b/apps/CtsVerifier/jni/audio_loopback/Android.mk
new file mode 100644
index 0000000..3dfbc34
--- /dev/null
+++ b/apps/CtsVerifier/jni/audio_loopback/Android.mk
@@ -0,0 +1,28 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE      := libaudioloopback_jni
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES   := \
+	sles.cpp \
+	jni_sles.c
+
+LOCAL_C_INCLUDES := \
+        system/media/audio_utils/include \
+        frameworks/wilhelm/include
+
+LOCAL_SHARED_LIBRARIES := \
+	libutils \
+	libcutils \
+	libOpenSLES \
+	libnbaio \
+	liblog \
+	libaudioutils
+
+LOCAL_PRELINK_MODULE := false
+
+LOCAL_LDFLAGS := -Wl,--hash-style=sysv
+LOCAL_CFLAGS := -DSTDC_HEADERS
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/apps/CtsVerifier/jni/audio_loopback/jni_sles.c b/apps/CtsVerifier/jni/audio_loopback/jni_sles.c
new file mode 100644
index 0000000..a865078
--- /dev/null
+++ b/apps/CtsVerifier/jni/audio_loopback/jni_sles.c
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 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.
+ */
+
+#include <android/log.h>
+#include "sles.h"
+#include "jni_sles.h"
+#include <stdio.h>
+#include <stddef.h>
+
+/////
+JNIEXPORT jlong JNICALL Java_com_android_cts_verifier_audio_NativeAudioThread_slesInit
+  (JNIEnv *env __unused, jobject obj __unused, jint samplingRate, jint frameCount, jint micSource) {
+
+    sles_data * pSles = NULL;
+
+    if (slesInit(&pSles, samplingRate, frameCount, micSource) != SLES_FAIL) {
+
+        return (long)pSles;
+    }
+    // FIXME This should be stored as a (long) field in the object,
+    //       so that incorrect Java code could not synthesize a bad sles pointer.
+    return 0;
+}
+
+JNIEXPORT jint JNICALL Java_com_android_cts_verifier_audio_NativeAudioThread_slesProcessNext
+  (JNIEnv *env __unused, jobject obj __unused, jlong sles, jdoubleArray samplesArray,
+          jlong offset) {
+    sles_data * pSles= (sles_data*) ((long)sles);
+
+    long maxSamples = (*env)->GetArrayLength(env, samplesArray);
+    double *pSamples = (*env)->GetDoubleArrayElements(env, samplesArray,0);
+
+    long availableSamples = maxSamples-offset;
+    double *pCurrentSample = pSamples+offset;
+
+    SLES_PRINTF("jni slesProcessNext pSles:%p, currentSample %p, availableSamples %ld ", pSles,
+            pCurrentSample, availableSamples);
+
+    int samplesRead = slesProcessNext(pSles, pCurrentSample, availableSamples);
+
+    return samplesRead;
+}
+
+JNIEXPORT jint JNICALL Java_com_android_cts_verifier_audio_NativeAudioThread_slesDestroy
+  (JNIEnv *env __unused, jobject obj __unused, jlong sles) {
+    sles_data * pSles= (sles_data*) ((long) sles);
+
+    int status = slesDestroy(&pSles);
+
+    return status;
+}
diff --git a/apps/CtsVerifier/jni/audio_loopback/jni_sles.h b/apps/CtsVerifier/jni/audio_loopback/jni_sles.h
new file mode 100644
index 0000000..7bff040
--- /dev/null
+++ b/apps/CtsVerifier/jni/audio_loopback/jni_sles.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 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.
+ */
+
+#include <jni.h>
+
+#ifndef _Included_org_drrickorang_loopback_jni
+#define _Included_org_drrickorang_loopback_jni
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+////////////////////////
+JNIEXPORT jlong JNICALL Java_com_android_cts_verifier_audio_NativeAudioThread_slesInit
+  (JNIEnv *, jobject, jint, jint, jint );
+
+JNIEXPORT jint JNICALL Java_com_android_cts_verifier_audio_NativeAudioThread_slesProcessNext
+  (JNIEnv *, jobject , jlong, jdoubleArray, jlong );
+
+JNIEXPORT jint JNICALL Java_com_android_cts_verifier_audio_NativeAudioThread_slesDestroy
+  (JNIEnv *, jobject , jlong );
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif //_Included_org_drrickorang_loopback_jni
diff --git a/apps/CtsVerifier/jni/audio_loopback/sles.cpp b/apps/CtsVerifier/jni/audio_loopback/sles.cpp
new file mode 100644
index 0000000..7859d35
--- /dev/null
+++ b/apps/CtsVerifier/jni/audio_loopback/sles.cpp
@@ -0,0 +1,655 @@
+/*
+ * Copyright (C) 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.
+ */
+
+
+////////////////////////////////////////////
+/// Actual sles functions.
+
+
+// Test program to record from default audio input and playback to default audio output.
+// It will generate feedback (Larsen effect) if played through on-device speakers,
+// or acts as a delay if played through headset.
+
+#include "sles.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+
+#include <assert.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int slesInit(sles_data ** ppSles, int samplingRate, int frameCount, int micSource) {
+    int status = SLES_FAIL;
+    if (ppSles != NULL) {
+        sles_data * pSles = (sles_data*) calloc(1, sizeof (sles_data));
+
+        SLES_PRINTF("malloc %d bytes at %p",sizeof(sles_data), pSles);
+        *ppSles = pSles;
+        if (pSles != NULL)
+        {
+            SLES_PRINTF("creating server. Sampling rate =%d, frame count = %d",samplingRate,
+                    frameCount);
+            status = slesCreateServer(pSles, samplingRate, frameCount, micSource);
+            SLES_PRINTF("slesCreateServer =%d",status);
+        }
+    }
+    return status;
+}
+int slesDestroy(sles_data ** ppSles) {
+    int status = SLES_FAIL;
+    if (ppSles != NULL) {
+        slesDestroyServer(*ppSles);
+
+        if (*ppSles != NULL)
+        {
+            free(*ppSles);
+            *ppSles = 0;
+        }
+        status = SLES_SUCCESS;
+    }
+    return status;
+}
+
+#define ASSERT_EQ(x, y) do { if ((x) == (y)) ; else { fprintf(stderr, "0x%x != 0x%x\n", \
+        (unsigned) (x), (unsigned) (y)); assert((x) == (y)); } } while (0)
+
+
+// Called after audio recorder fills a buffer with data
+static void recorderCallback(SLAndroidSimpleBufferQueueItf caller __unused, void *context) {
+    sles_data *pSles = (sles_data*) context;
+    if (pSles != NULL) {
+
+
+
+        SLresult result;
+
+        pthread_mutex_lock(&(pSles->mutex));
+        //ee  SLES_PRINTF("<R");
+
+        // We should only be called when a recording buffer is done
+        assert(pSles->rxFront <= pSles->rxBufCount);
+        assert(pSles->rxRear <= pSles->rxBufCount);
+        assert(pSles->rxFront != pSles->rxRear);
+        char *buffer = pSles->rxBuffers[pSles->rxFront];
+
+        // Remove buffer from record queue
+        if (++pSles->rxFront > pSles->rxBufCount) {
+            pSles->rxFront = 0;
+        }
+
+        ssize_t actual = audio_utils_fifo_write(&(pSles->fifo), buffer,
+                (size_t) pSles->bufSizeInFrames);
+        if (actual != (ssize_t) pSles->bufSizeInFrames) {
+            write(1, "?", 1);
+        }
+
+        // This is called by a realtime (SCHED_FIFO) thread,
+        // and it is unsafe to do I/O as it could block for unbounded time.
+        // Flash filesystem is especially notorious for blocking.
+        if (pSles->fifo2Buffer != NULL) {
+            actual = audio_utils_fifo_write(&(pSles->fifo2), buffer,
+                    (size_t) pSles->bufSizeInFrames);
+            if (actual != (ssize_t) pSles->bufSizeInFrames) {
+                write(1, "?", 1);
+            }
+        }
+
+        // Enqueue this same buffer for the recorder to fill again.
+        result = (*(pSles->recorderBufferQueue))->Enqueue(pSles->recorderBufferQueue, buffer,
+                pSles->bufSizeInBytes);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+        // Update our model of the record queue
+        SLuint32 rxRearNext = pSles->rxRear+1;
+        if (rxRearNext > pSles->rxBufCount) {
+            rxRearNext = 0;
+        }
+        assert(rxRearNext != pSles->rxFront);
+        pSles->rxBuffers[pSles->rxRear] = buffer;
+        pSles->rxRear = rxRearNext;
+
+
+
+        //ee  SLES_PRINTF("r>");
+        pthread_mutex_unlock(&(pSles->mutex));
+
+    } //pSles not null
+}
+
+
+// Called after audio player empties a buffer of data
+static void playerCallback(SLBufferQueueItf caller __unused, void *context) {
+    sles_data *pSles = (sles_data*) context;
+    if (pSles != NULL) {
+
+        SLresult result;
+
+        pthread_mutex_lock(&(pSles->mutex));
+        //ee  SLES_PRINTF("<P");
+
+        // Get the buffer that just finished playing
+        assert(pSles->txFront <= pSles->txBufCount);
+        assert(pSles->txRear <= pSles->txBufCount);
+        assert(pSles->txFront != pSles->txRear);
+        char *buffer = pSles->txBuffers[pSles->txFront];
+        if (++pSles->txFront > pSles->txBufCount) {
+            pSles->txFront = 0;
+        }
+
+
+        ssize_t actual = audio_utils_fifo_read(&(pSles->fifo), buffer, pSles->bufSizeInFrames);
+        if (actual != (ssize_t) pSles->bufSizeInFrames) {
+            write(1, "/", 1);
+            // on underrun from pipe, substitute silence
+            memset(buffer, 0, pSles->bufSizeInFrames * pSles->channels * sizeof(short));
+        }
+
+        if (pSles->injectImpulse == -1) {
+            // Experimentally, a single frame impulse was insufficient to trigger feedback.
+            // Also a Nyquist frequency signal was also insufficient, probably because
+            // the response of output and/or input path was not adequate at high frequencies.
+            // This short burst of a few cycles of square wave at Nyquist/4 was found to work well.
+            for (unsigned i = 0; i < pSles->bufSizeInFrames / 8; i += 8) {
+                for (int j = 0; j < 8; j++) {
+                    for (unsigned k = 0; k < pSles->channels; k++) {
+                        ((short *)buffer)[(i+j)*pSles->channels+k] = j < 4 ? 0x7FFF : 0x8000;
+                    }
+                }
+            }
+            pSles->injectImpulse = 0;
+        }
+
+        // Enqueue the filled buffer for playing
+        result = (*(pSles->playerBufferQueue))->Enqueue(pSles->playerBufferQueue, buffer,
+                pSles->bufSizeInBytes);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+        // Update our model of the player queue
+        assert(pSles->txFront <= pSles->txBufCount);
+        assert(pSles->txRear <= pSles->txBufCount);
+        SLuint32 txRearNext = pSles->txRear+1;
+        if (txRearNext > pSles->txBufCount) {
+            txRearNext = 0;
+        }
+        assert(txRearNext != pSles->txFront);
+        pSles->txBuffers[pSles->txRear] = buffer;
+        pSles->txRear = txRearNext;
+
+
+        //ee    SLES_PRINTF("p>");
+        pthread_mutex_unlock(&(pSles->mutex));
+
+    } //pSles not null
+}
+
+int slesCreateServer(sles_data *pSles, int samplingRate, int frameCount, int micSource) {
+    int status = SLES_FAIL;
+
+    if (pSles == NULL) {
+        return status;
+    }
+
+    //        adb shell slesTest_feedback -r1 -t1 -s48000 -f240 -i300 -e3 -o/sdcard/log.wav
+    //            r1 and t1 are the receive and transmit buffer counts, typically 1
+    //            s is the sample rate, typically 48000 or 44100
+    //            f is the frame count per buffer, typically 240 or 256
+    //            i is the number of milliseconds before impulse.  You may need to adjust this.
+    //            e is number of seconds to record
+    //            o is output .wav file name
+
+
+    //        // default values
+    //        SLuint32 rxBufCount = 1;     // -r#
+    //        SLuint32 txBufCount = 1;     // -t#
+    //        SLuint32 bufSizeInFrames = 240;  // -f#
+    //        SLuint32 channels = 1;       // -c#
+    //        SLuint32 sampleRate = 48000; // -s#
+    //        SLuint32 exitAfterSeconds = 3; // -e#
+    //        SLuint32 freeBufCount = 0;   // calculated
+    //        SLuint32 bufSizeInBytes = 0; // calculated
+    //        int injectImpulse = 300; // -i#i
+    //
+    //        // Storage area for the buffer queues
+    //        char **rxBuffers;
+    //        char **txBuffers;
+    //        char **freeBuffers;
+    //
+    //        // Buffer indices
+    //        SLuint32 rxFront;    // oldest recording
+    //        SLuint32 rxRear;     // next to be recorded
+    //        SLuint32 txFront;    // oldest playing
+    //        SLuint32 txRear;     // next to be played
+    //        SLuint32 freeFront;  // oldest free
+    //        SLuint32 freeRear;   // next to be freed
+    //
+    //        audio_utils_fifo fifo; //(*)
+    //        SLAndroidSimpleBufferQueueItf recorderBufferQueue;
+    //        SLBufferQueueItf playerBufferQueue;
+
+    // default values
+    pSles->rxBufCount = 1;     // -r#
+    pSles->txBufCount = 1;     // -t#
+    pSles->bufSizeInFrames = frameCount;//240;  // -f#
+    pSles->channels = 1;       // -c#
+    pSles->sampleRate = samplingRate;//48000; // -s#
+    pSles->exitAfterSeconds = 3; // -e#
+    pSles->freeBufCount = 0;   // calculated
+    pSles->bufSizeInBytes = 0; // calculated
+    pSles->injectImpulse = 300; // -i#i
+
+    // Storage area for the buffer queues
+    //        char **rxBuffers;
+    //        char **txBuffers;
+    //        char **freeBuffers;
+
+    // Buffer indices
+    pSles->rxFront;    // oldest recording
+    pSles->rxRear;     // next to be recorded
+    pSles->txFront;    // oldest playing
+    pSles->txRear;     // next to be played
+    pSles->freeFront;  // oldest free
+    pSles->freeRear;   // next to be freed
+
+    pSles->fifo; //(*)
+    pSles->fifo2Buffer = NULL;
+    pSles->recorderBufferQueue;
+    pSles->playerBufferQueue;
+
+    // compute total free buffers as -r plus -t
+    pSles->freeBufCount = pSles->rxBufCount + pSles->txBufCount;
+    // compute buffer size
+    pSles->bufSizeInBytes = pSles->channels * pSles->bufSizeInFrames * sizeof(short);
+
+    // Initialize free buffers
+    pSles->freeBuffers = (char **) calloc(pSles->freeBufCount+1, sizeof(char *));
+    unsigned j;
+    for (j = 0; j < pSles->freeBufCount; ++j) {
+        pSles->freeBuffers[j] = (char *) malloc(pSles->bufSizeInBytes);
+    }
+    pSles->freeFront = 0;
+    pSles->freeRear = pSles->freeBufCount;
+    pSles->freeBuffers[j] = NULL;
+
+    // Initialize record queue
+    pSles->rxBuffers = (char **) calloc(pSles->rxBufCount+1, sizeof(char *));
+    pSles->rxFront = 0;
+    pSles->rxRear = 0;
+
+    // Initialize play queue
+    pSles->txBuffers = (char **) calloc(pSles->txBufCount+1, sizeof(char *));
+    pSles->txFront = 0;
+    pSles->txRear = 0;
+
+    size_t frameSize = pSles->channels * sizeof(short);
+#define FIFO_FRAMES 1024
+    pSles->fifoBuffer = new short[FIFO_FRAMES * pSles->channels];
+    audio_utils_fifo_init(&(pSles->fifo), FIFO_FRAMES, frameSize, pSles->fifoBuffer);
+
+    //        SNDFILE *sndfile;
+    //        if (outFileName != NULL) {
+    // create .wav writer
+    //            SF_INFO info;
+    //            info.frames = 0;
+    //            info.samplerate = sampleRate;
+    //            info.channels = channels;
+    //            info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
+    //            sndfile = sf_open(outFileName, SFM_WRITE, &info);
+    //            if (sndfile != NULL) {
+#define FIFO2_FRAMES 65536
+    pSles->fifo2Buffer = new short[FIFO2_FRAMES * pSles->channels];
+    audio_utils_fifo_init(&(pSles->fifo2), FIFO2_FRAMES, frameSize, pSles->fifo2Buffer);
+    //            } else {
+    //                fprintf(stderr, "sf_open failed\n");
+    //            }
+    //        } else {
+    //            sndfile = NULL;
+    //        }
+
+    SLresult result;
+
+    // create engine
+    pSles->engineObject;
+    result = slCreateEngine(&(pSles->engineObject), 0, NULL, 0, NULL, NULL);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    result = (*(pSles->engineObject))->Realize(pSles->engineObject, SL_BOOLEAN_FALSE);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    SLEngineItf engineEngine;
+    result = (*(pSles->engineObject))->GetInterface(pSles->engineObject, SL_IID_ENGINE,
+            &engineEngine);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    // create output mix
+    pSles->outputmixObject;
+    result = (*engineEngine)->CreateOutputMix(engineEngine, &(pSles->outputmixObject), 0, NULL,
+            NULL);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    result = (*(pSles->outputmixObject))->Realize(pSles->outputmixObject, SL_BOOLEAN_FALSE);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    // create an audio player with buffer queue source and output mix sink
+    SLDataSource audiosrc;
+    SLDataSink audiosnk;
+    SLDataFormat_PCM pcm;
+    SLDataLocator_OutputMix locator_outputmix;
+    SLDataLocator_BufferQueue locator_bufferqueue_tx;
+    locator_bufferqueue_tx.locatorType = SL_DATALOCATOR_BUFFERQUEUE;
+    locator_bufferqueue_tx.numBuffers = pSles->txBufCount;
+    locator_outputmix.locatorType = SL_DATALOCATOR_OUTPUTMIX;
+    locator_outputmix.outputMix = pSles->outputmixObject;
+    pcm.formatType = SL_DATAFORMAT_PCM;
+    pcm.numChannels = pSles->channels;
+    pcm.samplesPerSec = pSles->sampleRate * 1000;
+    pcm.bitsPerSample = SL_PCMSAMPLEFORMAT_FIXED_16;
+    pcm.containerSize = 16;
+    pcm.channelMask = pSles->channels == 1 ? SL_SPEAKER_FRONT_CENTER :
+            (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT);
+    pcm.endianness = SL_BYTEORDER_LITTLEENDIAN;
+    audiosrc.pLocator = &locator_bufferqueue_tx;
+    audiosrc.pFormat = &pcm;
+    audiosnk.pLocator = &locator_outputmix;
+    audiosnk.pFormat = NULL;
+    pSles->playerObject = NULL;
+    pSles->recorderObject = NULL;
+    SLInterfaceID ids_tx[1] = {SL_IID_BUFFERQUEUE};
+    SLboolean flags_tx[1] = {SL_BOOLEAN_TRUE};
+    result = (*engineEngine)->CreateAudioPlayer(engineEngine, &(pSles->playerObject),
+            &audiosrc, &audiosnk, 1, ids_tx, flags_tx);
+    if (SL_RESULT_CONTENT_UNSUPPORTED == result) {
+        fprintf(stderr, "Could not create audio player (result %x), check sample rate\n",
+                result);
+        SLES_PRINTF("ERROR: Could not create audio player (result %x), check sample rate\n",
+                result);
+        goto cleanup;
+    }
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    result = (*(pSles->playerObject))->Realize(pSles->playerObject, SL_BOOLEAN_FALSE);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    SLPlayItf playerPlay;
+    result = (*(pSles->playerObject))->GetInterface(pSles->playerObject, SL_IID_PLAY,
+            &playerPlay);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    result = (*(pSles->playerObject))->GetInterface(pSles->playerObject, SL_IID_BUFFERQUEUE,
+            &(pSles->playerBufferQueue));
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    result = (*(pSles->playerBufferQueue))->RegisterCallback(pSles->playerBufferQueue,
+            playerCallback, pSles);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    // Enqueue some zero buffers for the player
+    for (j = 0; j < pSles->txBufCount; ++j) {
+
+        // allocate a free buffer
+        assert(pSles->freeFront != pSles->freeRear);
+        char *buffer = pSles->freeBuffers[pSles->freeFront];
+        if (++pSles->freeFront > pSles->freeBufCount) {
+            pSles->freeFront = 0;
+        }
+
+        // put on play queue
+        SLuint32 txRearNext = pSles->txRear + 1;
+        if (txRearNext > pSles->txBufCount) {
+            txRearNext = 0;
+        }
+        assert(txRearNext != pSles->txFront);
+        pSles->txBuffers[pSles->txRear] = buffer;
+        pSles->txRear = txRearNext;
+        result = (*(pSles->playerBufferQueue))->Enqueue(pSles->playerBufferQueue,
+                buffer, pSles->bufSizeInBytes);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    }
+
+    result = (*playerPlay)->SetPlayState(playerPlay, SL_PLAYSTATE_PLAYING);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    // Create an audio recorder with microphone device source and buffer queue sink.
+    // The buffer queue as sink is an Android-specific extension.
+
+    SLDataLocator_IODevice locator_iodevice;
+    SLDataLocator_AndroidSimpleBufferQueue locator_bufferqueue_rx;
+    locator_iodevice.locatorType = SL_DATALOCATOR_IODEVICE;
+    locator_iodevice.deviceType = SL_IODEVICE_AUDIOINPUT;
+    locator_iodevice.deviceID = SL_DEFAULTDEVICEID_AUDIOINPUT;
+    locator_iodevice.device = NULL;
+    audiosrc.pLocator = &locator_iodevice;
+    audiosrc.pFormat = NULL;
+    locator_bufferqueue_rx.locatorType = SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE;
+    locator_bufferqueue_rx.numBuffers = pSles->rxBufCount;
+    audiosnk.pLocator = &locator_bufferqueue_rx;
+    audiosnk.pFormat = &pcm;
+    {
+        SLInterfaceID ids_rx[2] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
+                SL_IID_ANDROIDCONFIGURATION};
+        SLboolean flags_rx[2] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
+        result = (*engineEngine)->CreateAudioRecorder(engineEngine, &(pSles->recorderObject),
+                &audiosrc, &audiosnk, 2, ids_rx, flags_rx);
+        if (SL_RESULT_SUCCESS != result) {
+            fprintf(stderr, "Could not create audio recorder (result %x), "
+                    "check sample rate and channel count\n", result);
+            status = SLES_FAIL;
+
+            SLES_PRINTF("ERROR: Could not create audio recorder (result %x), "
+                    "check sample rate and channel count\n", result);
+            goto cleanup;
+        }
+    }
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    {
+        /* Get the Android configuration interface which is explicit */
+        SLAndroidConfigurationItf configItf;
+        result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject,
+                SL_IID_ANDROIDCONFIGURATION, (void*)&configItf);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+        SLuint32 presetValue = micSource;
+        /* Use the configuration interface to configure the recorder before it's realized */
+        if (presetValue != SL_ANDROID_RECORDING_PRESET_NONE) {
+            result = (*configItf)->SetConfiguration(configItf, SL_ANDROID_KEY_RECORDING_PRESET,
+                    &presetValue, sizeof(SLuint32));
+            ASSERT_EQ(SL_RESULT_SUCCESS, result);
+        }
+
+    }
+
+    result = (*(pSles->recorderObject))->Realize(pSles->recorderObject, SL_BOOLEAN_FALSE);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    SLRecordItf recorderRecord;
+    result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject, SL_IID_RECORD,
+            &recorderRecord);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject,
+            SL_IID_ANDROIDSIMPLEBUFFERQUEUE, &(pSles->recorderBufferQueue));
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    result = (*(pSles->recorderBufferQueue))->RegisterCallback(pSles->recorderBufferQueue,
+            recorderCallback, pSles);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    // Enqueue some empty buffers for the recorder
+    for (j = 0; j < pSles->rxBufCount; ++j) {
+
+        // allocate a free buffer
+        assert(pSles->freeFront != pSles->freeRear);
+        char *buffer = pSles->freeBuffers[pSles->freeFront];
+        if (++pSles->freeFront > pSles->freeBufCount) {
+            pSles->freeFront = 0;
+        }
+
+        // put on record queue
+        SLuint32 rxRearNext = pSles->rxRear + 1;
+        if (rxRearNext > pSles->rxBufCount) {
+            rxRearNext = 0;
+        }
+        assert(rxRearNext != pSles->rxFront);
+        pSles->rxBuffers[pSles->rxRear] = buffer;
+        pSles->rxRear = rxRearNext;
+        result = (*(pSles->recorderBufferQueue))->Enqueue(pSles->recorderBufferQueue,
+                buffer, pSles->bufSizeInBytes);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    }
+
+    // Kick off the recorder
+    result = (*recorderRecord)->SetRecordState(recorderRecord, SL_RECORDSTATE_RECORDING);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    // Tear down the objects and exit
+    status = SLES_SUCCESS;
+    cleanup:
+    SLES_PRINTF("Finished initialization with status: %d", status);
+
+    return status;
+}
+
+int slesProcessNext(sles_data *pSles, double *pSamples, long maxSamples) {
+    //int status = SLES_FAIL;
+
+    SLES_PRINTF("slesProcessNext: pSles = %p, currentSample: %p,  maxSamples = %ld", pSles,
+            pSamples, maxSamples);
+
+    int samplesRead = 0;
+
+    int currentSample = 0;
+    double *pCurrentSample = pSamples;
+    int maxValue = 32768;
+
+    if (pSles == NULL) {
+        return samplesRead;
+    }
+
+    SLresult result;
+    for (int i = 0; i < 10; i++) {
+        usleep(100000);
+        if (pSles->fifo2Buffer != NULL) {
+            for (;;) {
+                short buffer[pSles->bufSizeInFrames * pSles->channels];
+                ssize_t actual = audio_utils_fifo_read(&(pSles->fifo2), buffer,
+                        pSles->bufSizeInFrames);
+                if (actual <= 0)
+                    break;
+                {
+                    for (int jj =0; jj<actual && currentSample < maxSamples; jj++) {
+                        *(pCurrentSample++) = ((double)buffer[jj])/maxValue;
+                        currentSample++;
+                    }
+                }
+                samplesRead +=actual;
+            }
+        }
+        if (pSles->injectImpulse > 0) {
+            if (pSles->injectImpulse <= 100) {
+                pSles->injectImpulse = -1;
+                write(1, "I", 1);
+            } else {
+                if ((pSles->injectImpulse % 1000) < 100) {
+                    write(1, "i", 1);
+                }
+                pSles->injectImpulse -= 100;
+            }
+        } else if (i == 9) {
+            write(1, ".", 1);
+        }
+    }
+    SLBufferQueueState playerBQState;
+    result = (*(pSles->playerBufferQueue))->GetState(pSles->playerBufferQueue,
+            &playerBQState);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    SLAndroidSimpleBufferQueueState recorderBQState;
+    result = (*(pSles->recorderBufferQueue))->GetState(pSles->recorderBufferQueue,
+            &recorderBQState);
+    ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+    SLES_PRINTF("End of slesProcessNext: pSles = %p, samplesRead = %d, maxSamples= %ld", pSles,
+            samplesRead, maxSamples);
+
+    return samplesRead;
+}
+
+int slesDestroyServer(sles_data *pSles) {
+    int status = SLES_FAIL;
+
+    SLES_PRINTF("Start slesDestroyServer: pSles = %p", pSles);
+    if (pSles == NULL) {
+        return status;
+    }
+
+    if (NULL != pSles->playerObject) {
+
+        SLES_PRINTF("stopping player...");
+        SLPlayItf playerPlay;
+        SLresult result = (*(pSles->playerObject))->GetInterface(pSles->playerObject,
+                SL_IID_PLAY, &playerPlay);
+
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+        //stop player and recorder if they exist
+        result = (*playerPlay)->SetPlayState(playerPlay, SL_PLAYSTATE_STOPPED);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    }
+
+    if (NULL != pSles->recorderObject) {
+        SLES_PRINTF("stopping recorder...");
+        SLRecordItf recorderRecord;
+        SLresult result = (*(pSles->recorderObject))->GetInterface(pSles->recorderObject,
+                SL_IID_RECORD, &recorderRecord);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+
+        result = (*recorderRecord)->SetRecordState(recorderRecord, SL_RECORDSTATE_STOPPED);
+        ASSERT_EQ(SL_RESULT_SUCCESS, result);
+    }
+
+    usleep(1000);
+
+    audio_utils_fifo_deinit(&(pSles->fifo));
+    delete[] pSles->fifoBuffer;
+
+    SLES_PRINTF("slesDestroyServer 2");
+
+    //        if (sndfile != NULL) {
+    audio_utils_fifo_deinit(&(pSles->fifo2));
+    delete[] pSles->fifo2Buffer;
+
+    SLES_PRINTF("slesDestroyServer 3");
+
+    //            sf_close(sndfile);
+    //        }
+    if (NULL != pSles->playerObject) {
+        (*(pSles->playerObject))->Destroy(pSles->playerObject);
+    }
+
+    SLES_PRINTF("slesDestroyServer 4");
+
+    if (NULL != pSles->recorderObject) {
+        (*(pSles->recorderObject))->Destroy(pSles->recorderObject);
+    }
+
+    SLES_PRINTF("slesDestroyServer 5");
+
+    (*(pSles->outputmixObject))->Destroy(pSles->outputmixObject);
+    SLES_PRINTF("slesDestroyServer 6");
+    (*(pSles->engineObject))->Destroy(pSles->engineObject);
+    SLES_PRINTF("slesDestroyServer 7");
+
+    //        free(pSles);
+    //        pSles=NULL;
+
+    status = SLES_SUCCESS;
+
+    SLES_PRINTF("End slesDestroyServer: status = %d", status);
+    return status;
+}
+
diff --git a/apps/CtsVerifier/jni/audio_loopback/sles.h b/apps/CtsVerifier/jni/audio_loopback/sles.h
new file mode 100644
index 0000000..2550b81
--- /dev/null
+++ b/apps/CtsVerifier/jni/audio_loopback/sles.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 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.
+ */
+
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
+#include <pthread.h>
+#include <android/log.h>
+
+#ifndef _Included_org_drrickorang_loopback_sles
+#define _Included_org_drrickorang_loopback_sles
+
+//struct audio_utils_fifo;
+#define SLES_PRINTF(...)  __android_log_print(ANDROID_LOG_INFO, "sles_jni", __VA_ARGS__);
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <audio_utils/fifo.h>
+
+typedef struct {
+    SLuint32 rxBufCount;     // -r#
+    SLuint32 txBufCount;     // -t#
+    SLuint32 bufSizeInFrames;  // -f#
+    SLuint32 channels;       // -c#
+    SLuint32 sampleRate; // -s#
+    SLuint32 exitAfterSeconds; // -e#
+    SLuint32 freeBufCount;   // calculated
+    SLuint32 bufSizeInBytes; // calculated
+    int injectImpulse; // -i#i
+
+    // Storage area for the buffer queues
+    char **rxBuffers;
+    char **txBuffers;
+    char **freeBuffers;
+
+    // Buffer indices
+    SLuint32 rxFront;    // oldest recording
+    SLuint32 rxRear;     // next to be recorded
+    SLuint32 txFront;    // oldest playing
+    SLuint32 txRear;     // next to be played
+    SLuint32 freeFront;  // oldest free
+    SLuint32 freeRear;   // next to be freed
+
+    struct audio_utils_fifo fifo; //(*)
+    struct audio_utils_fifo fifo2;
+    short *fifo2Buffer;
+    short *fifoBuffer;
+    SLAndroidSimpleBufferQueueItf recorderBufferQueue;
+    SLBufferQueueItf playerBufferQueue;
+
+    pthread_mutex_t mutex;// = PTHREAD_MUTEX_INITIALIZER;
+
+    //other things that belong here
+    SLObjectItf playerObject;
+    SLObjectItf recorderObject;
+    SLObjectItf outputmixObject;
+    SLObjectItf engineObject;
+} sles_data;
+
+enum {
+    SLES_SUCCESS = 0,
+    SLES_FAIL = 1,
+} SLES_STATUS_ENUM;
+
+int slesInit(sles_data ** ppSles, int samplingRate, int frameCount, int micSource);
+
+//note the double pointer to properly free the memory of the structure
+int slesDestroy(sles_data ** ppSles);
+
+///full
+int slesFull(sles_data *pSles);
+
+int slesCreateServer(sles_data *pSles, int samplingRate, int frameCount, int micSource);
+int slesProcessNext(sles_data *pSles, double *pSamples, long maxSamples);
+int slesDestroyServer(sles_data *pSles);
+
+#ifdef __cplusplus
+}
+#endif
+#endif //_Included_org_drrickorang_loopback_sles
diff --git a/apps/CtsVerifier/res/layout/audio_frequency_line_activity.xml b/apps/CtsVerifier/res/layout/audio_frequency_line_activity.xml
new file mode 100644
index 0000000..69e3bc7
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/audio_frequency_line_activity.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dip"
+        android:orientation="vertical">
+
+  <TextView
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:scrollbars="vertical"
+      android:gravity="bottom"
+      android:id="@+id/info_text"
+      android:text="@string/audio_frequency_line_instructions" />
+  <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:orientation="vertical">
+      <Button
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:id="@+id/audio_frequency_line_plug_ready_btn"
+          android:text="@string/audio_frequency_line_plug_ready_btn"/>
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+     <LinearLayout
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:orientation="horizontal"
+          android:id="@+id/audio_frequency_line_layout">
+            <Button
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/audio_frequency_line_test_btn"
+                android:id="@+id/audio_frequency_line_test_btn"/>
+
+            <ProgressBar
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/audio_frequency_line_progress_bar"/>
+        </LinearLayout>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/audio_frequency_line_results_text"
+            android:id="@+id/audio_frequency_line_results_text"/>
+
+    </LinearLayout>
+    </LinearLayout>
+
+  <include layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/audio_frequency_speaker_activity.xml b/apps/CtsVerifier/res/layout/audio_frequency_speaker_activity.xml
new file mode 100644
index 0000000..5dd55b1
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/audio_frequency_speaker_activity.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:padding="10dip"
+    android:orientation="vertical">
+
+    <ScrollView
+       android:layout_width="match_parent"
+       android:layout_height="match_parent"
+       android:id="@+id/scrollView">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:scrollbars="vertical"
+            android:gravity="bottom"
+            android:id="@+id/info_text"
+            android:text="@string/audio_frequency_speaker_instructions"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+            <Button
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:id="@+id/audio_frequency_speaker_mic_ready_btn"
+                android:text="@string/audio_frequency_speaker_mic_ready_btn"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/audio_frequency_speaker_usb_status"
+                android:id="@+id/audio_frequency_speaker_usb_status"/>
+
+            <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:id="@+id/audio_frequency_speaker_layout">
+                    <Button
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/audio_frequency_speaker_test_btn"
+                        android:id="@+id/audio_frequency_speaker_test_btn"/>
+
+                    <ProgressBar
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:id="@+id/audio_frequency_speaker_progress_bar"/>
+                </LinearLayout>
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/audio_frequency_speaker_results_text"
+                    android:id="@+id/audio_frequency_speaker_results_text"/>
+
+            </LinearLayout>
+        </LinearLayout>
+
+        <include layout="@layout/pass_fail_buttons"/>
+        </LinearLayout>
+      </ScrollView>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/audio_loopback_activity.xml b/apps/CtsVerifier/res/layout/audio_loopback_activity.xml
new file mode 100644
index 0000000..626ac4f
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/audio_loopback_activity.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dip"
+        android:orientation="vertical">
+
+  <TextView
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:scrollbars="vertical"
+      android:gravity="bottom"
+      android:id="@+id/info_text"
+      android:text="@string/audio_loopback_instructions" />
+  <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:orientation="vertical">
+      <Button
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:id="@+id/audio_loopback_plug_ready_btn"
+          android:text="@string/audio_loopback_plug_ready_btn"/>
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/audio_loopback_layout">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/audio_loopback_instructions2"
+            android:id="@+id/audio_loopback_instructions2"/>
+
+        <SeekBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/audio_loopback_level_seekbar"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/audio_loopback_level_text"
+            android:id="@+id/audio_loopback_level_text"/>
+
+        <Button
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/audio_loopback_test_btn"
+            android:id="@+id/audio_loopback_test_btn"/>
+
+        <ProgressBar
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/audio_loopback_progress_bar"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/audio_loopback_results_text"
+            android:id="@+id/audio_loopback_results_text"/>
+    </LinearLayout>
+    </LinearLayout>
+
+  <include layout="@layout/pass_fail_buttons" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/byod_custom_view.xml b/apps/CtsVerifier/res/layout/dialog_custom_view.xml
similarity index 100%
rename from apps/CtsVerifier/res/layout/byod_custom_view.xml
rename to apps/CtsVerifier/res/layout/dialog_custom_view.xml
diff --git a/apps/CtsVerifier/res/layout/permission_lockdown.xml b/apps/CtsVerifier/res/layout/permission_lockdown.xml
new file mode 100644
index 0000000..ea295dd
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/permission_lockdown.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/permission_lockdown_activity"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+    <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:paddingTop="4dp">
+        <TextView
+                android:id="@+id/test_instructions"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/device_profile_owner_permission_lockdown_test_instructions"
+                android:textSize="18sp"
+                android:padding="10dp" />
+    </ScrollView>
+
+    <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1">
+        <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center_vertical"
+                android:paddingStart="10dp"
+                android:paddingEnd="10dp">
+
+            <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingTop="4dp">
+                <ImageView
+                        android:id="@+id/package_icon"
+                        android:layout_width="48dp"
+                        android:layout_height="48dp"
+                        android:scaleType="centerInside"
+                        android:gravity="center" />
+                <TextView
+                        android:id="@+id/package_name"
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent"
+                        android:gravity="center_vertical"
+                        android:paddingLeft="10dp"
+                        android:textSize="16sp"
+                        android:singleLine="true"
+                        android:ellipsize="end" />
+            </LinearLayout>
+
+            <TextView
+                    android:id="@+id/permission_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textSize="16sp"
+                    android:paddingTop="4dp" />
+
+            <RadioGroup
+                    android:id="@+id/permission_group"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:paddingTop="4dp">
+                <RadioButton
+                        android:id="@+id/permission_allow"
+                        android:text="@string/permission_allow"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content" />
+                <RadioButton
+                        android:id="@+id/permission_default"
+                        android:text="@string/permission_default"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content" />
+                <RadioButton
+                        android:id="@+id/permission_deny"
+                        android:text="@string/permission_deny"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content" />
+            </RadioGroup>
+
+            <Button
+                    android:id="@+id/open_settings"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:text="@string/open_settings_button_label"
+                    android:onClick="openSettings" />
+        </LinearLayout>
+    </ScrollView>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/apps/CtsVerifier/res/layout/provisioning_byod.xml b/apps/CtsVerifier/res/layout/provisioning_byod.xml
index b1b75ba..375c3ab 100644
--- a/apps/CtsVerifier/res/layout/provisioning_byod.xml
+++ b/apps/CtsVerifier/res/layout/provisioning_byod.xml
@@ -24,19 +24,17 @@
             android:layout_height="320dp"
             android:layout_weight="2">
         <TextView
-                android:id="@+id/byod_instructions"
+                android:id="@+id/test_instructions"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:padding="10dip"
-                android:text="@string/provisioning_byod_instructions"
                 android:textSize="18dip" />
     </ScrollView>
 
     <Button
-        android:id="@+id/byod_start"
+        android:id="@+id/prepare_test_button"
         android:layout_width="204dp"
-        android:layout_height="wrap_content"
-        android:text="@string/provisioning_byod_start" />
+        android:layout_height="wrap_content" />
 
     <ListView
         android:id="@+id/android:list"
diff --git a/apps/CtsVerifier/res/layout/sec_screen_lock_keys_main.xml b/apps/CtsVerifier/res/layout/sec_screen_lock_keys_main.xml
new file mode 100644
index 0000000..af53335
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/sec_screen_lock_keys_main.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:padding="10dip"
+        >
+
+    <Button android:id="@+id/sec_start_test_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:text="@string/sec_start_test"
+            />
+
+    <include android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            layout="@layout/pass_fail_buttons"
+            />
+
+</RelativeLayout>
+
diff --git a/apps/CtsVerifier/res/raw/stereo_mono_white_noise_48.mp3 b/apps/CtsVerifier/res/raw/stereo_mono_white_noise_48.mp3
new file mode 100644
index 0000000..e877fc1
--- /dev/null
+++ b/apps/CtsVerifier/res/raw/stereo_mono_white_noise_48.mp3
Binary files differ
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 800deb6..c137c5a 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -22,6 +22,7 @@
     <string name="info_button_text">Info</string>
     <string name="fail_button_text">Fail</string>
     <string name="next_button_text">Next</string>
+    <string name="go_button_text">Go</string>
 
     <!-- Strings for TestListActivity -->
     <string name="test_category_audio">Audio</string>
@@ -89,11 +90,13 @@
     </string>
     <string name="car_dock_test">Car Dock Test</string>
     <string name="car_dock_test_desc">This test ensures that car mode opens the app associated with
-        car dock when going into car mode. Click on "Enable Car Mode" to start the test. Clicking on
-        the button will either bring up a disambiguation dialog asking which app to open or
-        immediately open the CAR_DOCK application. Select the "CTS Verifier" app if the dialog pops up,
-        which open the CAR_DOCK application. In the CAR_DOCK application, press the home button, which
-        will enable the pass button if the framework correctly tries to open the CAR_DOCk app again.</string>
+        car dock when going into car mode.\n\n
+        Click on "Enable Car Mode" to start the test. Clicking on the button will either bring up a
+        disambiguation dialog asking which app to open or immediately open the CAR_DOCK application.
+        Select the "CTS Verifier" app and then "Always" if the dialog pops up.
+        This will open the CAR_DOCK application.\n\n
+        In the CAR_DOCK application, press the home button, which will enable the pass button if the
+        framework correctly tries to open the CAR_DOCK app again.</string>
     <string name="car_mode_enable">Enable Car Mode</string>
     <string name="car_dock_activity_text">Press the Home button</string>
     <string name="da_no_policy">1. Press the \"Generate Policy\" to create a random device
@@ -124,6 +127,24 @@
     <string name="da_lock_success">It appears the screen was locked successfully!</string>
     <string name="da_lock_error">It does not look like the screen was locked...</string>
 
+    <!-- Strings for lock bound keys test -->
+    <string name="sec_lock_bound_key_test">Lock Bound Keys Test</string>
+    <string name="sec_lock_bound_key_test_info">
+        This test ensures that Keystore cryptographic keys that are bound to lock screen authentication
+        are unusable without a recent enough authentication. You need to set up a screen lock in order to
+        complete this test. If available, this test should be run by using fingerprint authentication
+        as well as PIN/pattern/password authentication.
+    </string>
+    <string name="sec_fingerprint_bound_key_test">Fingerprint Bound Keys Test</string>
+    <string name="sec_fingerprint_bound_key_test_info">
+        This test ensures that Keystore cryptographic keys that are bound to fingerprint authentication
+        are unusable without an authentication. You need to set up a fingerprint order to
+        complete this test.
+    </string>
+    <string name="sec_fp_dialog_message">Authenticate now with fingerprint</string>
+    <string name="sec_fp_auth_failed">Authentication failed</string>
+    <string name="sec_start_test">Start Test</string>
+
     <!-- Strings for BluetoothActivity -->
     <string name="bluetooth_test">Bluetooth Test</string>
     <string name="bluetooth_test_info">The Bluetooth Control tests check whether or not the device
@@ -378,6 +399,7 @@
     <string name="nfc_pee_2_pee">Peer-to-Peer Data Exchange</string>
     <string name="nfc_ndef_push_sender">NDEF Push Sender</string>
     <string name="nfc_ndef_push_receiver">NDEF Push Receiver</string>
+    <string name="nfc_llcp_version_check">LLCP version check</string>
 
     <string name="nfc_tag_verification">Tag Verification</string>
     <string name="nfc_ndef">NDEF</string>
@@ -399,6 +421,13 @@
     <string name="nfc_ndef_push_receive_failure">Failed to receive the correct NDEF push
         message.</string>
 
+    <string name="nfc_llcp_version_check_info">This test requires two candidate devices
+       with NFC enabled to exchange P2P messages. Start the \"LLCP version check\" test on
+       the other candidate device also, and touch the devices back to back. This test
+       then verifies that the candidate device correctly advises the LLCP version as 1.2</string>
+    <string name="nfc_llcp_version_check_failure">The candidate devices does not report LLCP
+       version 1.2 or higher.</string>
+    <string name="nfc_llcp_version_check_success">The candidate device has a valid LLCP version.</string>
     <string name="nfc_tag_verifier">NFC Tag Verifier</string>
     <string name="nfc_tag_verifier_info">Follow the on-screen instructions to write and read
         a tag of the chosen technology.</string>
@@ -1068,13 +1097,12 @@
         respecting user preferences about notification ranking and filtering.
     </string>
     <string name="attention_ready">I\'m done</string>
-    <string name="attention_filter_all">Please set the notification filter to \"All\" in the dialog
-        that appears when you change the device\'s volume.</string>
-    <string name="attention_filter_priority">Please set the notification filter to \"Priority\" in
-        the dialog that appears when you change the device\'s volume, and allow messages from
-        starred contacts.</string>
-    <string name="attention_filter_none">Please set the notification filter to \"None\" in the dialog
-        that appears when you change the device\'s volume.</string>
+    <string name="attention_filter_all">Please disable \"Do not disturb\" by tapping the Quick Settings tile.</string>
+    <string name="attention_filter_priority">Please select \"Priority only\" in the dialog that appears
+        when you tap the \"Do not disturb\" tile in Quick Settings, and customize the setting to allow messages from
+        starred contacts only by tapping "More settings".</string>
+    <string name="attention_filter_none">Please select \"Total silence\" in the dialog that appears
+        when you tap the \"Do not disturb\" tile in Quick Settings.</string>
     <string name="attention_create_contacts">Create contacts for notification annotations.</string>
     <string name="attention_delete_contacts">Delete test contacts.</string>
     <string name="attention_default_order">Check that ranker defaults to time order.</string>
@@ -1420,6 +1448,42 @@
         \n
         Verify that you are prompted with the above choices and both options work as intended. Then mark this test accordingly.
     </string>
+    <string name="provisioning_byod_keyguard_disabled_features">Keyguard disabled features</string>
+    <string name="provisioning_byod_keyguard_disabled_features_info">
+        This test exercises Keyguard Disabled Features. Follow instructions above.
+    </string>
+    <string name="provisioning_byod_keyguard_disabled_features_instruction">
+        Please press the \"Prepare test\" button to disable trust agents.\n
+        Then please press through the following verification steps.\n
+        Note: Device password will be set to \"testpassword\". After leaving the screen device password be cleared.
+    </string>
+    <string name="provisioning_byod_keyguard_disabled_features_prepare_button">Prepare test</string>
+    <string name="provisioning_byod_disable_trust_agents">Disable trust agents</string>
+    <string name="provisioning_byod_disable_trust_agents_instruction">
+        Please press the Go button to go to Settings > Security. Then go to Trusted agents and\n
+        check if the agents are shown as disabled by the administrator.
+        Then please press Back and mark the test as \"Pass\" or \"Fail\".
+    </string>
+    <string name="provisioning_byod_fingerprint_disabled_in_settings">Fingerprint is disabled in Settings</string>
+    <string name="provisioning_byod_fingerprint_disabled_in_settings_instruction">
+        Please press the Go button to go to Settings > Security. Then go to Fingerprint and\n
+        check if the screen is shown as disabled by the administrator.
+        Then please press Back and mark the test as \"Pass\" or \"Fail\".
+    </string>
+    <string name="provisioning_byod_disable_fingerprint">Fingerprint disabled on keyguard</string>
+    <string name="provisioning_byod_disable_fingerprint_instruction">
+        Please press the Go button to lock the screen. Then try to log in using the fingerprint reader.\n
+        Expected result is you cannot log in using your fingerprint.\n
+        After you log back in, please navigate back to CtsVerifier and mark the test as \"Pass\" or \"Fail\".
+    </string>
+    <string name="provisioning_byod_disable_notifications">Notifications disabled on keyguard</string>
+    <string name="provisioning_byod_disable_notifications_instruction">
+        Please press the Go button to lock the screen. Wait a couple of seconds and look out for a
+        notification from CtsVerifier.\n
+        Expected result is the notification is shown as \"Contents hidden\", you can not see the contents
+        (Which would read \"This is a work notification\").\n
+        After you log back in, please navigate back to CtsVerifier and mark the test as \"Pass\" or \"Fail\".
+    </string>
     <string name="provisioning_byod_work_notification">Work notification is badged</string>
     <string name="provisioning_byod_work_notification_instruction">
         Please press the Go button to trigger a notification.\n
@@ -1526,7 +1590,6 @@
     <string name="provisioning_byod_delete_profile">Initiate deletion of work profile.</string>
     <string name="provisioning_byod_profile_deleted">Work profile deleted.</string>
     <string name="provisioning_byod_disabled">Device provisioning is not enabled.</string>
-    <string name="provisioning_byod_go">Go</string>
     <string name="provisioning_button_finish">Finish</string>
     <string name="provisioning_cross_profile_chooser">Choose an app to complete action</string>
 
@@ -1636,6 +1699,67 @@
     </string>
     <string name="device_owner_disable_keyguard_button">Disable keyguard</string>
     <string name="device_owner_reenable_keyguard_button">Reenable keyguard</string>
+    <string name="device_profile_owner_permission_lockdown_test">Permissions lockdown</string>
+    <string name="device_profile_owner_permission_lockdown_test_instructions">
+            Select each of the three grant states for the permission shown below in turn.\n
+            Now open application settings, select Permissions, and verify if the following behaviour is observed.\n
+            <b>Allow:</b> Permission is granted to the app and cannot be changed through the settings UI.\n
+            <b>Let user decide:</b> Permission state can be changed through the settings UI.\n
+            <b>Deny:</b> Permission is denied to the app and cannot be changed through the settings UI.\n
+            Please mark the test accordingly.
+    </string>
+    <string name="device_owner_permission_lockdown_test_info">
+        This test checks if the permissions state in settings UI is locked down according to the state set by the device owner.
+    </string>
+    <string name="profile_owner_permission_lockdown_test_info">
+        <b>
+        Before proceeding, check if com.android.cts.permissionapp (aka CtsPermissionApp) is installed in work profile by going to Settings &gt; Apps. If not, please install the app before proceeding.\n\n
+        </b>
+        This test checks if the permissions state in settings UI is locked down correctly depending on the state set by the profile owner.
+    </string>
+    <string name="package_not_found">You must install %s (aka CtsPermissionApp).</string>
+    <string name="permission_allow">Grant</string>
+    <string name="permission_default">Let user decide</string>
+    <string name="permission_deny">Deny</string>
+    <string name="not_profile_owner">%s is not profile owner.</string>
+    <string name="not_device_owner">%s is not device owner.</string>
+    <string name="activity_not_found">No activity found to handle intent: %s</string>
+    <string name="open_settings_button_label">Open Application Settings</string>
+    <string name="finish_button_label">Finish</string>
+    <string name="device_owner_device_admin_visible">Device administrator settings</string>
+    <string name="device_owner_device_admin_visible_info">
+        Please press the Go button to open the Security page in Settings.
+        Navigate to Device administrators and confirm that:\n
+        \n
+        - \"CTS Verifier - AfW Admin\" exists and is activated.\n
+        - \"CTS Verifier - AfW Admin\" cannot be disabled.\n
+        \n
+        Use the Back button to return to this page.
+    </string>
+    <string name="device_owner_disallow_config_bt">Disallow configuring Bluetooth</string>
+    <string name="device_owner_disallow_config_bt_info">
+        Please press the Set restriction button to set the user restriction.
+        Then press Go to open the Bluetooth page in Settings.
+        Confirm that:\n
+        \n
+        - You cannot view Bluetooth devices in range.\n
+        - You cannot edit, add or remove any already paired devices.\n
+        \n
+        Use the Back button to return to this page.
+    </string>
+    <string name="device_owner_disallow_config_wifi">Disallow configuring WiFi</string>
+    <string name="device_owner_disallow_config_wifi_info">
+        Please press the Set restriction button to set the user restriction.
+        Then press Go to open the WiFi page in Settings.
+        Confirm that:\n
+        \n
+        - You cannot view WiFi networks in range.\n
+        - You cannot edit, add or remove any existing WiFi configs.\n
+        \n
+        Use the Back button to return to this page.
+    </string>
+    <string name="device_owner_user_restriction_set">Set restriction</string>
+    <string name="device_owner_settings_go">Go</string>
 
     <!-- Strings for JobScheduler Tests -->
     <string name="js_test_description">This test is mostly automated, but requires some user interaction. You can pass this test once the list items below are checked.</string>
@@ -1661,93 +1785,90 @@
     <string name="js_any_connectivity_test">Device with no connectivity will not execute a job with an unmetered connectivity constraint.</string>
     <string name="js_no_connectivity_test">Device with no connectivity will still execute a job with no connectivity constraints.</string>
 
-    <!-- String for Live Channels app Tests -->
+    <!-- String for the bundled TV app Tests -->
 
-    <string name="tv_input_discover_test">3rd-party TV input app discoverability test</string>
+    <string name="tv_input_discover_test">3rd-party TV input test</string>
     <string name="tv_input_discover_test_info">
-    This test verifies that the pre-loaded Live Channels app is invoked via intents and issues
-    appropriate calls to framework APIs, so that TV input apps work properly with the pre-loaded
-    Live Channels app.
+    Verify that the bundled TV app launches via Intent and calls the proper API to discover
+    3rd-party TV inputs.
     </string>
     <string name="tv_input_discover_test_go_to_setup">
-    Press the \"Launch Live Channels\" button, and set up the newly installed TV input:
+    Select the \"Launch TV app\" button and set up the newly installed TV input:
     \"CTS Verifier\".
     </string>
     <string name="tv_input_discover_test_verify_setup">
     Setup activity must have been started.
     </string>
     <string name="tv_input_discover_test_tune_to_channel">
-    Press the \"Launch Live Channels\" button, and tune to the channel named \"Dummy\" from
-    \"CTS Verifier\" input. If necessary, configure the channel to be visible.
+    Select the \"Launch TV app\" button and tune to the \"Dummy\" channel from \"CTS Verifier\"
+    input. If necessary, configure the channel to be visible.
     </string>
     <string name="tv_input_discover_test_verify_tune">
     Tune command must be called.
     </string>
     <string name="tv_input_discover_test_verify_overlay_view">
-    Overlay view must be shown. Verify that there is a text view displaying \"Overlay View Dummy Text\"
-    when you tune to the \"Dummy\" channel.
+    Verify that the overlay appears and displays the text \"Overlay View Dummy Text\" when you tune
+    to the \"Dummy\" channel.
     </string>
     <string name="tv_input_discover_test_verify_global_search">
-    Live Channels app should provide query results for 3rd-party input\'s channels and programs on
-    global search requests.
+    Verify the TV app provides query results for 3rd-party input\'s channels and programs in
+    global search results.
     </string>
     <string name="tv_input_discover_test_go_to_epg">
-    Press the \"Launch EPG\" button, and locate the channel named \"Dummy\".
+    Select the \"Launch EPG\" button and locate the \"Dummy\" channel.
     </string>
     <string name="tv_input_discover_test_verify_epg">
-    Do you see the programs named \"Dummy Program\" and its description
+    Do you see the programs named \"Dummy Program\" and their descriptions
     "Dummy Program Description" in the EPG?
     </string>
     <string name="tv_input_discover_test_yes">Yes</string>
 
-    <string name="tv_parental_control_test">Live Channels app parental control test</string>
+    <string name="tv_parental_control_test">TV app parental controls test</string>
     <string name="tv_parental_control_test_info">
-    This test verifies that the default Live Channels app invokes proper parental control APIs in
-    the framework.
+    Verify that the bundled TV app calls the parental controls API.
     </string>
     <string name="tv_parental_control_test_turn_on_parental_control">
-    Press the \"Launch Live Channels\" button, and turn on the parental control. If it\'s on
-    already, turn it off and on again.
+    Select the \"Launch TV app\" button and turn on the parental controls. If parental controls are
+    on already, turn it off and on again.
     </string>
     <string name="tv_parental_control_test_verify_receive_broadcast1">
     TV input service must have received ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED broadcast.
     </string>
     <string name="tv_parental_control_test_block_tv_ma">
-    Press the \"Launch Live Channels\" button, and block \"Fake\" rating for \"CtsVerifier\" rating
-    system in the parental control settings. You may have to enable the rating system if it is
-    disabled by default. If it\'s already blocked, unblock, save, and then block again.
+    Select the \"Launch TV app\" button and block the \"Fake\" rating for \"CtsVerifier\" rating
+    system in the parental control settings. If the rating system is disabled by default, enable it.
+    If the \"Fake\" rating is already blocked, unblock it, save, and then block again.
     </string>
     <string name="tv_parental_control_test_verify_receive_broadcast2">
     TV input service must have received ACTION_BLOCKED_RATINGS_CHANGED broadcast.
     </string>
     <string name="tv_parental_control_test_block_unblock">
-    Press the \"Launch Live Channels\" button; verify that the channel is blocked visually.
-    Try unblock the screen by entering PIN; verify that it\'s unblocked visually.
+    Select the \"Launch TV app\" button; verify that the channel is blocked.
+    Try to unblock the screen by entering PIN; verify that it\'s unblocked.
     </string>
 
-    <string name="tv_launch_tv_app">Launch Live Channels</string>
+    <string name="tv_launch_tv_app">Launch TV app</string>
     <string name="tv_launch_epg">Launch EPG</string>
     <string name="tv_channel_not_found">
     CtsVerifier channel is not set up. Please set up before proceeding.
     </string>
 
-    <string name="tv_multiple_tracks_test">Live Channels app closed captions and multi-audio test</string>
+    <string name="tv_multiple_tracks_test">TV app closed captions and multi-audio test</string>
     <string name="tv_multiple_tracks_test_info">
-    This test verifies that the default Live Channels app invokes proper mulitple tracks APIs in the
-    framework.
+    Verify that the bundled TV app calls the multi-track API.
     </string>
     <string name="tv_multiple_tracks_test_select_subtitle">
-    Press the \"Launch Live Channels\" button. Verify that the closed caption is off by default.
-    Set closed caption to English.
+    Select the \"Launch TV app\" button. Verify that closed captions are off by default. Set closed
+    caption language to English.
     </string>
     <string name="tv_multiple_tracks_test_verify_set_caption_enabled">
-    Caption should be enabled.
+    Captions are enabled.
     </string>
     <string name="tv_multiple_tracks_test_verify_select_subtitle">
-    The English subtitle track should be selected.
+    The English closed caption track should be selected.
     </string>
     <string name="tv_multiple_tracks_test_select_audio">
-    Press the \"Launch Live Channels\" button. Verify that the audio track is English by default.
+    Select the \"Launch TV app\" button. Verify that the audio track is English by default.
     Select Spanish audio track.
     </string>
     <string name="tv_multiple_tracks_test_verify_select_audio">
@@ -1837,4 +1958,61 @@
     <string name="audio_routingnotification_recHeader">AudioRecord Routing Notifications</string>
     <string name="audio_routingnotification_trackRoutingMsg">AudioTrack rerouting</string>
     <string name="audio_routingnotification_recordRoutingMsg">AudioRecord rerouting</string>
+
+    <!-- Audio Loopback Latency Test -->
+    <string name="audio_loopback_test">Audio Loopback Latency Test</string>
+     <string name="audio_loopback_info">
+          This test requires the Loopback Plug. Please connect a Loopback Plug on the headset
+          connector, and proceed with the instructions on the screen.
+          The system will measure the input-output audio latency by injecting a pulse on the output,
+          and computing the distance between replicas of the pulse.
+          You can vary the Audio Level slider to ensure the pulse will feed back at adecuate levels.
+          Repeat until a confidence level >= 0.6 is achieved.
+    </string>
+    <string name="audio_loopback_instructions">
+          Please connect a "Loopback Plug" and press "Loopback Plug Ready".
+    </string>
+    <string name="audio_loopback_plug_ready_btn">Loopback Plug Ready</string>
+    <string name="audio_loopback_instructions2">
+          Set the audio level to a suitable value, then press Test button.
+          It might require multiple tries until a confidence >= 0.6 is achieved.
+    </string>
+    <string name="audio_loopback_level_text">Audio Level</string>
+    <string name="audio_loopback_test_btn">Test</string>
+    <string name="audio_loopback_results_text">Results...</string>
+
+   <!-- Audio Frequency Line Test -->
+    <string name="audio_frequency_line_test">Audio Frequency Line Test</string>
+    <string name="audio_frequency_line_info">
+        The system will measure the frequency response of the left and right line outputs, 
+        by feeding them back thru the microphone conection with the loopback jack.
+        This test requires the Loopback Plug. Please connect a Loopback Plug on the headset
+        connector, and proceed with the instructions on the screen.
+        </string>
+    <string name="audio_frequency_line_instructions">
+          Please connect a "Loopback Plug" and press "Loopback Plug Ready".
+    </string>
+    <string name="audio_frequency_line_plug_ready_btn">Loopback Plug Ready</string>
+
+    <string name="audio_frequency_line_test_btn">Test</string>
+    <string name="audio_frequency_line_results_text">Results...</string>
+    
+    <!-- Audio Frequency Speaker Test -->
+    <string name="audio_frequency_speaker_test">Audio Frequency Speaker Test</string>
+    <string name="audio_frequency_speaker_info">
+        This test requires an external USB reference microphone. Please connect the USB microphone and proceed with the instructions on the screen.
+        The system will measure frequency response of the left and right speakers (if there are two speakers), or twice the response of the mono speaker.
+       </string>
+    <string name="audio_frequency_speaker_instructions">
+          Please connect an USB reference microphone and press "USB Reference microphone ready".
+    </string>
+    <string name="audio_frequency_speaker_usb_status">Waiting for USB microphone...</string>
+    <string name="audio_frequency_speaker_mic_ready_btn">USB Reference microphone ready</string>
+    <string name="audio_frequency_speaker_mic_ready_text">USB Audio device detected\n\nPlease set up Device Under test 
+    in quiet room, and Microphone 20 cms perpendicular to center of screen, then press TEST</string>
+    <string name="audio_frequency_speaker_mic_not_ready_text">"No USB Audio device detected. Please reconnect."</string>
+    <string name="audio_frequency_speaker_test_btn">Test</string>
+    <string name="audio_frequency_speaker_results_text">Results...</string>
+    
+
 </resources>
diff --git a/apps/CtsVerifier/res/xml/device_admin_byod.xml b/apps/CtsVerifier/res/xml/device_admin_byod.xml
index 61238aa..ce44794 100644
--- a/apps/CtsVerifier/res/xml/device_admin_byod.xml
+++ b/apps/CtsVerifier/res/xml/device_admin_byod.xml
@@ -20,6 +20,8 @@
         <encrypted-storage />
         <wipe-data />
         <reset-password />
+        <disable-keyguard-features />
+        <force-lock />
     </uses-policies>
 </device-admin>
 <!-- END_INCLUDE(meta_data) -->
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/AbstractTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/AbstractTestListActivity.java
index 409b0db..3132219 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/AbstractTestListActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/AbstractTestListActivity.java
@@ -44,8 +44,13 @@
     }
 
     @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    protected final void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
+        handleActivityResult(requestCode, resultCode, data);
+    }
+
+    /** Override this in subclasses instead of onActivityResult */
+    protected void handleActivityResult(int requestCode, int resultCode, Intent data) {
         switch (requestCode) {
             case LAUNCH_TEST_REQUEST_CODE:
                 handleLaunchTestResult(resultCode, data);
@@ -66,7 +71,7 @@
         setContentView(R.layout.list_content);
     }
 
-    private void handleLaunchTestResult(int resultCode, Intent data) {
+    protected void handleLaunchTestResult(int resultCode, Intent data) {
         if (resultCode == RESULT_OK) {
             TestResult testResult = TestResult.fromActivityResult(resultCode, data);
             mAdapter.setTestResult(testResult);
@@ -75,8 +80,13 @@
 
     /** Launch the activity when its {@link ListView} item is clicked. */
     @Override
-    protected void onListItemClick(ListView listView, View view, int position, long id) {
+    protected final void onListItemClick(ListView listView, View view, int position, long id) {
         super.onListItemClick(listView, view, position, id);
+        handleItemClick(listView, view, position, id);
+    }
+
+    /** Override this in subclasses instead of onListItemClick */
+    protected void handleItemClick(ListView listView, View view, int position, long id) {
         Intent intent = getIntent(position);
         startActivityForResult(intent, LAUNCH_TEST_REQUEST_CODE);
     }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/DialogTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/DialogTestListActivity.java
new file mode 100644
index 0000000..cbd4887
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/DialogTestListActivity.java
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier;
+
+import android.app.AlertDialog;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.database.DataSetObserver;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.cts.verifier.R;
+
+/**
+ * Test list activity that supports showing dialogs with pass/fail buttons instead of
+ * starting new activities.
+ * In addition to that dialogs have a 'go' button that can be configured to launch an intent.
+ * Instructions are shown on top of the screen and a test preparation button is provided.
+ */
+public abstract class DialogTestListActivity extends PassFailButtons.TestListActivity {
+    private final int mLayoutId;
+    private final int mTitleStringId;
+    private final int mInfoStringId;
+    private final int mInstructionsStringId;
+
+    protected Button mPrepareTestButton;
+
+    protected int mCurrentTestPosition;
+
+    protected DialogTestListActivity(int layoutId, int titleStringId, int infoStringId,
+            int instructionsStringId) {
+        mLayoutId = layoutId;
+        mTitleStringId = titleStringId;
+        mInfoStringId = infoStringId;
+        mInstructionsStringId = instructionsStringId;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(mLayoutId);
+        setInfoResources(mTitleStringId, mInfoStringId, -1);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setResult(RESULT_CANCELED);
+
+        ArrayTestListAdapter adapter = new ArrayTestListAdapter(this);
+
+        setupTests(adapter);
+
+        adapter.registerDataSetObserver(new DataSetObserver() {
+            @Override
+            public void onChanged() {
+                updatePassButton();
+            }
+        });
+
+        setTestListAdapter(adapter);
+
+        mCurrentTestPosition = 0;
+
+        TextView instructionTextView = (TextView)findViewById(R.id.test_instructions);
+        instructionTextView.setText(mInstructionsStringId);
+        mPrepareTestButton = (Button)findViewById(R.id.prepare_test_button);
+    }
+
+    /**
+     * Subclasses must add their tests items to the provided adapter(usually instances of
+     * {@link DialogTestListItem} or {@link DialogTestListItemWithIcon} but any class deriving from
+     * {@link TestListAdapter.TestListItem} will do).
+     * @param adapter The adapter to add test items to.
+     */
+    protected abstract void setupTests(ArrayTestListAdapter adapter);
+
+    // Enable Pass Button when all tests passed.
+    private void updatePassButton() {
+        getPassButton().setEnabled(mAdapter.allTestsPassed());
+    }
+
+    private void showManualTestDialog(final DialogTestListItem test) {
+        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this)
+                .setIcon(android.R.drawable.ic_dialog_info)
+                .setTitle(mTitleStringId)
+                .setNeutralButton(R.string.go_button_text, null)
+                .setPositiveButton(R.string.pass_button_text, new AlertDialog.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        clearRemainingState(test);
+                        setTestResult(test, TestResult.TEST_RESULT_PASSED);
+                    }
+                })
+                .setNegativeButton(R.string.fail_button_text, new AlertDialog.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        clearRemainingState(test);
+                        setTestResult(test, TestResult.TEST_RESULT_FAILED);
+                    }
+                });
+        View customView = test.getCustomView();
+        if (customView != null) {
+            dialogBuilder.setView(customView);
+        } else {
+            dialogBuilder.setMessage(test.getManualTestInstruction());
+        }
+        final AlertDialog dialog = dialogBuilder.show();
+        // Note: Setting the OnClickListener on the Dialog rather than the Builder, prevents the
+        // dialog being dismissed on onClick.
+        dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (!startTestIntent(test)) {
+                    dialog.dismiss();
+                }
+            }
+        });
+    }
+
+    @Override
+    protected void handleItemClick(ListView l, View v, int position, long id) {
+        TestListAdapter.TestListItem test = (TestListAdapter.TestListItem) getListAdapter()
+                .getItem(position);
+        if (test instanceof DialogTestListItem) {
+            mCurrentTestPosition = position;
+            ((DialogTestListItem)test).performTest(this);
+        } else {
+            super.handleItemClick(l, v, position, id);
+        }
+    }
+
+
+    /**
+     * Start a test's manual intent
+     * @param test The test the manual intent of which is to be started.
+     * @return true if activity could be started successfully, false otherwise.
+     */
+    boolean startTestIntent(final DialogTestListItem test) {
+        final Intent intent = test.intent;
+        try {
+            startActivity(intent);
+        } catch (ActivityNotFoundException e) {
+            Toast.makeText(this, "Cannot start " + intent, Toast.LENGTH_LONG).show();
+            setTestResult(test, TestResult.TEST_RESULT_FAILED);
+            return false;
+        }
+        return true;
+    }
+
+    protected void clearRemainingState(final DialogTestListItem test) {
+        // do nothing, override in subclass if needed
+    }
+
+    protected void setTestResult(DialogTestListItem test, int result) {
+        // Bundle result in an intent to feed into handleLaunchTestResult
+        Intent resultIntent = new Intent();
+        TestResult.addResultData(resultIntent, result, test.testName, /* testDetails */ null,
+                /* reportLog */ null);
+        handleLaunchTestResult(RESULT_OK, resultIntent);
+        getListView().smoothScrollToPosition(mCurrentTestPosition + 1);
+    }
+
+    protected void showToast(int messageId) {
+        String message = getString(messageId);
+        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
+    }
+
+    protected static class DialogTestListItem extends TestListAdapter.TestListItem {
+
+        private String mManualInstruction;
+
+        public DialogTestListItem(Context context, int nameResId, String testId) {
+            super(context.getString(nameResId), testId, null, null, null, null);
+        }
+
+        public DialogTestListItem(Context context, int nameResId, String testId,
+                int testInstructionResId, Intent testIntent) {
+            super(context.getString(nameResId), testId, testIntent, null, null, null);
+            mManualInstruction = context.getString(testInstructionResId);
+        }
+
+        public void performTest(DialogTestListActivity activity) {
+            activity.showManualTestDialog(this);
+        }
+
+        public String getManualTestInstruction() {
+            return mManualInstruction;
+        }
+
+        public Intent getManualTestIntent() {
+            return intent;
+        }
+
+        public View getCustomView() {
+            return null;
+        }
+
+        @Override
+        boolean isTest() {
+            return true;
+        }
+    }
+
+    protected static class DialogTestListItemWithIcon extends DialogTestListItem {
+
+        private final int mImageResId;
+        private final Context mContext;
+
+        public DialogTestListItemWithIcon(Context context, int nameResId, String testId,
+                int testInstructionResId, Intent testIntent, int imageResId) {
+            super(context, nameResId, testId, testInstructionResId, testIntent);
+            mContext = context;
+            mImageResId = imageResId;
+        }
+
+        @Override
+        public View getCustomView() {
+            LayoutInflater layoutInflater = LayoutInflater.from(mContext);
+            View view = layoutInflater.inflate(R.layout.dialog_custom_view,
+                    null /* root */);
+            ((ImageView) view.findViewById(R.id.sample_icon)).setImageResource(mImageResId);
+            ((TextView) view.findViewById(R.id.message)).setText(getManualTestInstruction());
+            return view;
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java b/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java
index 2160902..ce092cc 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/TestListAdapter.java
@@ -141,7 +141,7 @@
             return new TestListItem(title, null, null, null, null, null);
         }
 
-        private TestListItem(String title, String testName, Intent intent,
+        protected TestListItem(String title, String testName, Intent intent,
                 String[] requiredFeatures, String[] excludedFeatures, String[] applicableFeatures) {
             this.title = title;
             this.testName = testName;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/TestResult.java b/apps/CtsVerifier/src/com/android/cts/verifier/TestResult.java
index d8a675c..c5d2d52 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/TestResult.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/TestResult.java
@@ -71,13 +71,18 @@
     private static Intent createResult(Activity activity, int testResult, String testName,
             String testDetails, ReportLog reportLog) {
         Intent data = new Intent(activity, activity.getClass());
-        data.putExtra(TEST_NAME, testName);
-        data.putExtra(TEST_RESULT, testResult);
-        data.putExtra(TEST_DETAILS, testDetails);
-        data.putExtra(TEST_METRICS, reportLog);
+        addResultData(data, testResult, testName, testDetails, reportLog);
         return data;
     }
 
+    public static void addResultData(Intent intent, int testResult, String testName,
+            String testDetails, ReportLog reportLog) {
+        intent.putExtra(TEST_NAME, testName);
+        intent.putExtra(TEST_RESULT, testResult);
+        intent.putExtra(TEST_DETAILS, testDetails);
+        intent.putExtra(TEST_METRICS, reportLog);
+    }
+
     /**
      * Convert the test activity's result into a {@link TestResult}. Only meant to be used by
      * {@link TestListActivity}.
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioBandSpecs.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioBandSpecs.java
new file mode 100644
index 0000000..9af4af1
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioBandSpecs.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio;
+
+public class AudioBandSpecs {
+    double mFreqStart;
+    double mFreqStop;
+    double mRippleStartTop;
+    double mRippleStartBottom;
+
+    double mRippleStopTop;
+    double mRippleStopBottom;
+
+    double mOffset;
+
+    public AudioBandSpecs(double fStart, double fStop, double startTop, double startBottom,
+            double stopTop, double stopBottom) {
+        initFreq(fStart, fStop);
+        initRipple(startTop, startBottom, stopTop, stopBottom);
+        setOffset(0);
+    }
+
+    public void initRipple(double startTop, double startBottom, double stopTop, double stopBottom) {
+        mRippleStartTop = startTop;
+        mRippleStartBottom = startBottom;
+        mRippleStopTop = stopTop;
+        mRippleStopBottom = stopBottom;
+        // note: top should be >= bottom, but no check is done here.
+    }
+
+    public void initFreq(double fStart, double fStop) {
+        mFreqStart = fStart;
+        mFreqStop = fStop;
+    }
+
+    public void setOffset(double offset) {
+        mOffset = offset;
+    }
+
+    /**
+     * Check if the given point is in bounds in this band.
+     */
+    public boolean isInBounds(double freq, double value) {
+        if (freq < mFreqStart || freq > mFreqStop) {
+            return false;
+        }
+
+        double d = mFreqStop - mFreqStart;
+        if (d <= 0) {
+            return false;
+        }
+
+        double e = freq - mFreqStart;
+        double vTop = (e / d) * (mRippleStopTop - mRippleStartTop) + mRippleStartTop + mOffset;
+        if (value > vTop) {
+            return false;
+        }
+
+        double vBottom = (e / d) * (mRippleStopBottom - mRippleStartBottom) + mRippleStartBottom
+                + mOffset;
+
+        if (value < vBottom) {
+            return false;
+        }
+        return true;
+    }
+
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(String.format("Freq %.1f - %.1f |", mFreqStart, mFreqStop));
+        sb.append(String.format("start [%.1f : %.1f] |", mRippleStartTop, mRippleStartBottom));
+        sb.append(String.format("stop  [%.1f : %.1f] |", mRippleStopTop, mRippleStopBottom));
+        sb.append(String.format("offset %.1f", mOffset));
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioFrequencyLineActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioFrequencyLineActivity.java
new file mode 100644
index 0000000..d3e2571
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioFrequencyLineActivity.java
@@ -0,0 +1,664 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.audio.wavelib.*;
+import com.android.compatibility.common.util.ReportLog;
+import com.android.compatibility.common.util.ResultType;
+import com.android.compatibility.common.util.ResultUnit;
+import android.content.Context;
+
+import android.media.AudioDeviceCallback;
+import android.media.AudioDeviceInfo;
+import android.media.AudioFormat;
+import android.media.AudioManager;
+import android.media.AudioTrack;
+import android.media.AudioRecord;
+import android.media.MediaRecorder;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.SystemClock;
+
+import android.util.Log;
+
+import android.view.View;
+import android.view.View.OnClickListener;
+
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.SeekBar;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+
+/**
+ * Tests Audio Device roundtrip latency by using a loopback plug.
+ */
+public class AudioFrequencyLineActivity extends PassFailButtons.Activity implements Runnable,
+    AudioRecord.OnRecordPositionUpdateListener {
+    private static final String TAG = "AudioFrequencyLineActivity";
+
+    static final int TEST_STARTED = 900;
+    static final int TEST_ENDED = 901;
+    static final int TEST_MESSAGE = 902;
+    static final double MIN_ENERGY_BAND_1 = -20.0;
+    static final double MIN_FRACTION_POINTS_IN_BAND = 0.3;
+
+    OnBtnClickListener mBtnClickListener = new OnBtnClickListener();
+    Context mContext;
+
+    Button mLoopbackPlugReady;
+    LinearLayout mLinearLayout;
+    Button mTestButton;
+    TextView mResultText;
+    ProgressBar mProgressBar;
+    //recording
+    private boolean mIsRecording = false;
+    private final Object mRecordingLock = new Object();
+    private AudioRecord mRecorder;
+    private int mMinRecordBufferSizeInSamples = 0;
+    private short[] mAudioShortArray;
+    private short[] mAudioShortArray2;
+
+    private final int mBlockSizeSamples = 1024;
+    private final int mSamplingRate = 48000;
+    private final int mSelectedRecordSource = MediaRecorder.AudioSource.VOICE_RECOGNITION;
+    private final int mChannelConfig = AudioFormat.CHANNEL_IN_MONO;
+    private final int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
+    private volatile Thread mRecordThread;
+    private boolean mRecordThreadShutdown = false;
+
+    PipeShort mPipe = new PipeShort(65536);
+    SoundPlayerObject mSPlayer;
+
+    private DspBufferComplex mC;
+    private DspBufferDouble mData;
+
+    private DspWindow mWindow;
+    private DspFftServer mFftServer;
+    private VectorAverage mFreqAverageMain = new VectorAverage();
+
+    private VectorAverage mFreqAverage0 = new VectorAverage();
+    private VectorAverage mFreqAverage1 = new VectorAverage();
+
+    private int mCurrentTest = -1;
+    int mBands = 4;
+    AudioBandSpecs[] bandSpecsArray = new AudioBandSpecs[mBands];
+
+    int mMaxLevel;
+    private class OnBtnClickListener implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            switch (v.getId()) {
+                case R.id.audio_frequency_line_plug_ready_btn:
+                    Log.i(TAG, "audio loopback plug ready");
+                    //enable all the other views.
+                    enableLayout(true);
+                    break;
+                case R.id.audio_frequency_line_test_btn:
+                    Log.i(TAG, "audio loopback test");
+                    startAudioTest();
+                    break;
+            }
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.audio_frequency_line_activity);
+
+        mContext = this;
+
+        mLoopbackPlugReady = (Button)findViewById(R.id.audio_frequency_line_plug_ready_btn);
+        mLoopbackPlugReady.setOnClickListener(mBtnClickListener);
+        mLinearLayout = (LinearLayout)findViewById(R.id.audio_frequency_line_layout);
+        mTestButton = (Button)findViewById(R.id.audio_frequency_line_test_btn);
+        mTestButton.setOnClickListener(mBtnClickListener);
+        mResultText = (TextView)findViewById(R.id.audio_frequency_line_results_text);
+        mProgressBar = (ProgressBar)findViewById(R.id.audio_frequency_line_progress_bar);
+        showWait(false);
+        enableLayout(false);         //disabled all content
+
+        mSPlayer = new SoundPlayerObject();
+        mSPlayer.setSoundWithResId(getApplicationContext(), R.raw.stereo_mono_white_noise_48);
+        mSPlayer.setBalance(0.5f);
+
+        //Init FFT stuff
+        mAudioShortArray2 = new short[mBlockSizeSamples*2];
+        mData = new DspBufferDouble(mBlockSizeSamples);
+        mC = new DspBufferComplex(mBlockSizeSamples);
+        mFftServer = new DspFftServer(mBlockSizeSamples);
+
+        int overlap = mBlockSizeSamples / 2;
+
+        mWindow = new DspWindow(DspWindow.WINDOW_HANNING, mBlockSizeSamples, overlap);
+
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setInfoResources(R.string.audio_frequency_line_test,
+                R.string.audio_frequency_line_info, -1);
+
+        //Init bands
+        bandSpecsArray[0] = new AudioBandSpecs(
+                50, 500,        /* frequency start,stop */
+                -20.0, -50,     /* start top,bottom value */
+                4.0, -4.0       /* stop top,bottom value */);
+
+        bandSpecsArray[1] = new AudioBandSpecs(
+                500,4000,       /* frequency start,stop */
+                4.0, -4.0,      /* start top,bottom value */
+                4.0, -4.0        /* stop top,bottom value */);
+
+        bandSpecsArray[2] = new AudioBandSpecs(
+                4000, 12000,    /* frequency start,stop */
+                4.0, -4.0,      /* start top,bottom value */
+                5.0, -5.0       /* stop top,bottom value */);
+
+        bandSpecsArray[3] = new AudioBandSpecs(
+                12000, 20000,   /* frequency start,stop */
+                5.0, -5.0,      /* start top,bottom value */
+                5.0, -30.0      /* stop top,bottom value */);
+    }
+
+    /**
+     * enable test ui elements
+     */
+    private void enableLayout(boolean enable) {
+        for (int i = 0; i < mLinearLayout.getChildCount(); i++) {
+            View view = mLinearLayout.getChildAt(i);
+            view.setEnabled(enable);
+        }
+    }
+
+    /**
+     * show active progress bar
+     */
+    private void showWait(boolean show) {
+        if (show) {
+            mProgressBar.setVisibility(View.VISIBLE);
+        } else {
+            mProgressBar.setVisibility(View.INVISIBLE);
+        }
+    }
+
+    private void setMaxLevel() {
+        AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+        mMaxLevel = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+        am.setStreamVolume(AudioManager.STREAM_MUSIC, (int)(mMaxLevel), 0);
+    }
+
+    /**
+     *  Start the loopback audio test
+     */
+    private void startAudioTest() {
+        if (mTestThread != null && !mTestThread.isAlive()) {
+            mTestThread = null; //kill it.
+        }
+
+        if (mTestThread == null) {
+            Log.v(TAG,"Executing test Thread");
+            mTestThread = new Thread(mPlayRunnable);
+            getPassButton().setEnabled(false);
+            if (!mSPlayer.isAlive())
+                mSPlayer.start();
+            mTestThread.start();
+        } else {
+            Log.v(TAG,"test Thread already running.");
+        }
+    }
+
+    Thread mTestThread;
+    Runnable mPlayRunnable = new Runnable() {
+        public void run() {
+            Message msg = Message.obtain();
+            msg.what = TEST_STARTED;
+            mMessageHandler.sendMessage(msg);
+            setMaxLevel();
+
+            sendMessage("Testing Left Capture");
+            mCurrentTest = 0;
+            mFreqAverage0.reset();
+            mSPlayer.setBalance(0.0f);
+            play();
+
+            sendMessage("Testing Right Capture");
+            mCurrentTest = 1;
+            mFreqAverage1.reset();
+            mSPlayer.setBalance(1.0f);
+            play();
+
+            mCurrentTest = -1;
+            sendMessage("Testing Completed");
+
+            Message msg2 = Message.obtain();
+            msg2.what = TEST_ENDED;
+            mMessageHandler.sendMessage(msg2);
+        }
+
+        private void play() {
+            startRecording();
+            mSPlayer.play(true);
+
+            try {
+                Thread.sleep(2000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            mSPlayer.play(false);
+            stopRecording();
+        }
+
+        private void sendMessage(String str) {
+            Message msg = Message.obtain();
+            msg.what = TEST_MESSAGE;
+            msg.obj = str;
+            mMessageHandler.sendMessage(msg);
+        }
+    };
+
+    private Handler mMessageHandler = new Handler() {
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            switch (msg.what) {
+            case TEST_STARTED:
+                showWait(true);
+                getPassButton().setEnabled(false);
+                break;
+            case TEST_ENDED:
+                showWait(false);
+                computeResults();
+                break;
+            case TEST_MESSAGE:
+                String str = (String)msg.obj;
+                if (str != null) {
+                    mResultText.setText(str);
+                }
+                break;
+            default:
+                Log.e(TAG, String.format("Unknown message: %d", msg.what));
+            }
+        }
+    };
+
+    private class Results {
+        private String mLabel;
+        public double[] mValuesLog;
+        int[] mPointsPerBand = new int[mBands];
+        double[] mAverageEnergyPerBand = new double[mBands];
+        int[] mInBoundPointsPerBand = new int[mBands];
+        public Results(String label) {
+            mLabel = label;
+        }
+
+        //append results
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            sb.append(String.format("Channel %s\n", mLabel));
+            sb.append("Level in Band 1 : " + (testLevel() ? "OK" :"FAILED") +"\n");
+            for (int b = 0; b < mBands; b++) {
+                double percent = 0;
+                if (mPointsPerBand[b] > 0) {
+                    percent = 100.0 * (double)mInBoundPointsPerBand[b] / mPointsPerBand[b];
+                }
+                sb.append(String.format(
+                        " Band %d: Av. Level: %.1f dB InBand: %d/%d (%.1f%%) %s\n",
+                        b, mAverageEnergyPerBand[b],
+                        mInBoundPointsPerBand[b],
+                        mPointsPerBand[b],
+                        percent,
+                        (testInBand(b) ? "OK" : "FAILED")));
+            }
+            return sb.toString();
+        }
+
+        public boolean testLevel() {
+            if (mAverageEnergyPerBand[1] >= MIN_ENERGY_BAND_1) {
+                return true;
+            }
+            return false;
+        }
+
+        public boolean testInBand(int b) {
+            if (b >= 0 && b < mBands && mPointsPerBand[b] > 0) {
+                if ((double)mInBoundPointsPerBand[b] / mPointsPerBand[b] >
+                MIN_FRACTION_POINTS_IN_BAND)
+                    return true;
+            }
+            return false;
+        }
+
+        public boolean testAll() {
+            if (!testLevel()) {
+                return false;
+            }
+            for (int b = 0; b < mBands; b++) {
+                if (!testInBand(b)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    /**
+     * compute test results
+     */
+    private void computeResults() {
+        Results resultsLeft = new Results("Left");
+        computeResultsForVector(mFreqAverage0, resultsLeft);
+        Results resultsRight = new Results("Right");
+        computeResultsForVector(mFreqAverage1, resultsRight);
+        if (resultsLeft.testAll() && resultsRight.testAll()) {
+            //enable button
+            getPassButton().setEnabled(true);
+        }
+    }
+
+    private void computeResultsForVector(VectorAverage freqAverage,Results results) {
+
+        int points = freqAverage.getSize();
+        if (points > 0) {
+            //compute vector in db
+            double[] values = new double[points];
+            freqAverage.getData(values, false);
+            results.mValuesLog = new double[points];
+            for (int i = 0; i < points; i++) {
+                results.mValuesLog[i] = 20 * Math.log10(values[i]);
+            }
+
+            int currentBand = 0;
+            for (int i = 0; i < points; i++) {
+                double freq = (double)mSamplingRate * i / (double)mBlockSizeSamples;
+                if (freq > bandSpecsArray[currentBand].mFreqStop) {
+                    currentBand++;
+                    if (currentBand >= mBands)
+                        break;
+                }
+
+                if (freq >= bandSpecsArray[currentBand].mFreqStart) {
+                    results.mAverageEnergyPerBand[currentBand] += results.mValuesLog[i];
+                    results.mPointsPerBand[currentBand]++;
+                }
+            }
+
+            for (int b = 0; b < mBands; b++) {
+                if (results.mPointsPerBand[b] > 0) {
+                    results.mAverageEnergyPerBand[b] =
+                            results.mAverageEnergyPerBand[b] / results.mPointsPerBand[b];
+                }
+            }
+
+            //set offset relative to band 1 level
+            for (int b = 0; b < mBands; b++) {
+                bandSpecsArray[b].setOffset(results.mAverageEnergyPerBand[1]);
+            }
+
+            //test points in band.
+            currentBand = 0;
+            for (int i = 0; i < points; i++) {
+                double freq = (double)mSamplingRate * i / (double)mBlockSizeSamples;
+                if (freq >  bandSpecsArray[currentBand].mFreqStop) {
+                    currentBand++;
+                    if (currentBand >= mBands)
+                        break;
+                }
+
+                if (freq >= bandSpecsArray[currentBand].mFreqStart) {
+                    double value = results.mValuesLog[i];
+                    if (bandSpecsArray[currentBand].isInBounds(freq, value)) {
+                        results.mInBoundPointsPerBand[currentBand]++;
+                    }
+                }
+            }
+
+            appendResultsToScreen(results.toString());
+            //store results
+            recordTestResults(results);
+        } else {
+            appendResultsToScreen("Failed testing channel " + results.mLabel);
+        }
+    }
+
+    //append results
+    private void appendResultsToScreen(String str) {
+        String currentText = mResultText.getText().toString();
+        mResultText.setText(currentText + "\n" + str);
+    }
+
+    /**
+     * Store test results in log
+     */
+    private void recordTestResults(Results results) {
+        String channelLabel = "channel_" + results.mLabel;
+
+        for (int b = 0; b < mBands; b++) {
+            String bandLabel = String.format(channelLabel + "_%d", b);
+            getReportLog().addValue(
+                    bandLabel + "_Level",
+                    results.mAverageEnergyPerBand[b],
+                    ResultType.HIGHER_BETTER,
+                    ResultUnit.NONE);
+
+            getReportLog().addValue(
+                    bandLabel + "_pointsinbound",
+                    results.mInBoundPointsPerBand[b],
+                    ResultType.HIGHER_BETTER,
+                    ResultUnit.COUNT);
+
+            getReportLog().addValue(
+                    bandLabel + "_pointstotal",
+                    results.mPointsPerBand[b],
+                    ResultType.NEUTRAL,
+                    ResultUnit.COUNT);
+        }
+
+        getReportLog().addValues(channelLabel + "_magnitudeSpectrumLog",
+                results.mValuesLog,
+                ResultType.NEUTRAL,
+                ResultUnit.NONE);
+
+        Log.v(TAG, "Results Recorded");
+    }
+
+    private void startRecording() {
+        synchronized (mRecordingLock) {
+            mIsRecording = true;
+        }
+
+        boolean successful = initRecord();
+        if (successful) {
+            startRecordingForReal();
+        } else {
+            Log.v(TAG, "Recorder initialization error.");
+            synchronized (mRecordingLock) {
+                mIsRecording = false;
+            }
+        }
+    }
+
+    private void startRecordingForReal() {
+        // start streaming
+        if (mRecordThread == null) {
+            mRecordThread = new Thread(AudioFrequencyLineActivity.this);
+            mRecordThread.setName("FrequencyAnalyzerThread");
+            mRecordThreadShutdown = false;
+        }
+        if (!mRecordThread.isAlive()) {
+            mRecordThread.start();
+        }
+
+        mPipe.flush();
+
+        long startTime = SystemClock.uptimeMillis();
+        mRecorder.startRecording();
+        if (mRecorder.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {
+            stopRecording();
+            return;
+        }
+        Log.v(TAG, "Start time: " + (long) (SystemClock.uptimeMillis() - startTime) + " ms");
+    }
+
+    private void stopRecording() {
+        synchronized (mRecordingLock) {
+            stopRecordingForReal();
+            mIsRecording = false;
+        }
+    }
+
+    private void stopRecordingForReal() {
+
+        // stop streaming
+        Thread zeThread = mRecordThread;
+        mRecordThread = null;
+        mRecordThreadShutdown = true;
+        if (zeThread != null) {
+            zeThread.interrupt();
+            try {
+                zeThread.join();
+            } catch(InterruptedException e) {
+                Log.v(TAG,"Error shutting down recording thread " + e);
+                //we don't really care about this error, just logging it.
+            }
+        }
+         // release recording resources
+        if (mRecorder != null) {
+            mRecorder.stop();
+            mRecorder.release();
+            mRecorder = null;
+        }
+    }
+
+    private boolean initRecord() {
+        int minRecordBuffSizeInBytes = AudioRecord.getMinBufferSize(mSamplingRate,
+                mChannelConfig, mAudioFormat);
+        Log.v(TAG,"FrequencyAnalyzer: min buff size = " + minRecordBuffSizeInBytes + " bytes");
+        if (minRecordBuffSizeInBytes <= 0) {
+            return false;
+        }
+
+        mMinRecordBufferSizeInSamples = minRecordBuffSizeInBytes / 2;
+        // allocate the byte array to read the audio data
+
+        mAudioShortArray = new short[mMinRecordBufferSizeInSamples];
+
+        Log.v(TAG, "Initiating record:");
+        Log.v(TAG, "      using source " + mSelectedRecordSource);
+        Log.v(TAG, "      at " + mSamplingRate + "Hz");
+
+        try {
+            mRecorder = new AudioRecord(mSelectedRecordSource, mSamplingRate,
+                    mChannelConfig, mAudioFormat, 2 * minRecordBuffSizeInBytes);
+        } catch (IllegalArgumentException e) {
+            return false;
+        }
+        if (mRecorder.getState() != AudioRecord.STATE_INITIALIZED) {
+            mRecorder.release();
+            mRecorder = null;
+            return false;
+        }
+        mRecorder.setRecordPositionUpdateListener(this);
+        mRecorder.setPositionNotificationPeriod(mBlockSizeSamples / 2);
+        return true;
+    }
+
+    // ---------------------------------------------------------
+    // Implementation of AudioRecord.OnPeriodicNotificationListener
+    // --------------------
+    public void onPeriodicNotification(AudioRecord recorder) {
+        int samplesAvailable = mPipe.availableToRead();
+        int samplesNeeded = mBlockSizeSamples;
+        if (samplesAvailable >= samplesNeeded) {
+            mPipe.read(mAudioShortArray2, 0, samplesNeeded);
+
+            //compute stuff.
+            double maxval = Math.pow(2, 15);
+            int clipcount = 0;
+            double cliplevel = (maxval-10) / maxval;
+            double sum = 0;
+            double maxabs = 0;
+            int i;
+            int index = 0;
+
+            for (i = 0; i < samplesNeeded; i++) {
+                double value = mAudioShortArray2[i] / maxval;
+                double valueabs = Math.abs(value);
+
+                if (valueabs > maxabs) {
+                    maxabs = valueabs;
+                }
+
+                if (valueabs > cliplevel) {
+                    clipcount++;
+                }
+
+                sum += value * value;
+                //fft stuff
+                if (index < mBlockSizeSamples) {
+                    mData.mData[index] = value;
+                }
+                index++;
+            }
+
+            //for the current frame, compute FFT and send to the viewer.
+
+            //apply window and pack as complex for now.
+            DspBufferMath.mult(mData, mData, mWindow.mBuffer);
+            DspBufferMath.set(mC, mData);
+            mFftServer.fft(mC, 1);
+
+            double[] halfMagnitude = new double[mBlockSizeSamples / 2];
+            for (i = 0; i < mBlockSizeSamples / 2; i++) {
+                halfMagnitude[i] = Math.sqrt(mC.mReal[i] * mC.mReal[i] + mC.mImag[i] * mC.mImag[i]);
+            }
+
+            mFreqAverageMain.setData(halfMagnitude, false); //average all of them!
+
+            switch(mCurrentTest) {
+                case 0:
+                    mFreqAverage0.setData(halfMagnitude, false);
+                    break;
+                case 1:
+                    mFreqAverage1.setData(halfMagnitude, false);
+                    break;
+            }
+        }
+    }
+
+    public void onMarkerReached(AudioRecord track) {
+    }
+
+    // ---------------------------------------------------------
+    // Implementation of Runnable for the audio recording + playback
+    // --------------------
+    public void run() {
+        int nSamplesRead = 0;
+
+        Thread thisThread = Thread.currentThread();
+        while (mRecordThread == thisThread && !mRecordThreadShutdown) {
+            // read from native recorder
+            nSamplesRead = mRecorder.read(mAudioShortArray, 0, mMinRecordBufferSizeInSamples);
+            if (nSamplesRead > 0) {
+                mPipe.write(mAudioShortArray, 0, nSamplesRead);
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioFrequencySpeakerActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioFrequencySpeakerActivity.java
new file mode 100644
index 0000000..f9334b3
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioFrequencySpeakerActivity.java
@@ -0,0 +1,732 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.audio.wavelib.*;
+import com.android.compatibility.common.util.ReportLog;
+import com.android.compatibility.common.util.ResultType;
+import com.android.compatibility.common.util.ResultUnit;
+import android.content.Context;
+import android.content.BroadcastReceiver;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import android.media.AudioDeviceCallback;
+import android.media.AudioDeviceInfo;
+import android.media.AudioFormat;
+import android.media.AudioManager;
+import android.media.AudioTrack;
+import android.media.AudioRecord;
+import android.media.MediaRecorder;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.SystemClock;
+
+import android.util.Log;
+
+import android.view.View;
+import android.view.View.OnClickListener;
+
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.SeekBar;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+
+/**
+ * Tests Audio Device roundtrip latency by using a loopback plug.
+ */
+public class AudioFrequencySpeakerActivity extends PassFailButtons.Activity implements Runnable,
+    AudioRecord.OnRecordPositionUpdateListener {
+    private static final String TAG = "AudioFrequencySpeakerActivity";
+
+    static final int TEST_STARTED = 900;
+    static final int TEST_ENDED = 901;
+    static final int TEST_MESSAGE = 902;
+    static final double MIN_ENERGY_BAND_1 = -50.0;          //dB Full Scale
+    static final double MAX_ENERGY_BAND_1_BASE = -60.0;     //dB Full Scale
+    static final double MIN_FRACTION_POINTS_IN_BAND = 0.3;
+
+    final OnBtnClickListener mBtnClickListener = new OnBtnClickListener();
+    Context mContext;
+
+    Button mLoopbackPlugReady;          //user signal to have connected USB Microphone
+    Button mTestButton;                 //user to start test
+    String mUsbDevicesInfo;             //usb device info for report
+    LinearLayout mLinearLayout;
+    TextView mResultText;
+    TextView mUsbStatusText;
+    ProgressBar mProgressBar;
+
+    private boolean mIsRecording = false;
+    private final Object mRecordingLock = new Object();
+    private AudioRecord mRecorder;
+    private int mMinRecordBufferSizeInSamples = 0;
+    private short[] mAudioShortArray;
+    private short[] mAudioShortArray2;
+
+    private final int mBlockSizeSamples = 1024;
+    private final int mSamplingRate = 48000;
+    private final int mSelectedRecordSource = MediaRecorder.AudioSource.VOICE_RECOGNITION;
+    private final int mChannelConfig = AudioFormat.CHANNEL_IN_MONO;
+    private final int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
+    private Thread mRecordThread;
+    private boolean mRecordThreadShutdown = false;
+
+    PipeShort mPipe = new PipeShort(65536);
+    SoundPlayerObject mSPlayer;
+
+    private DspBufferComplex mC;
+    private DspBufferDouble mData;
+
+    private DspWindow mWindow;
+    private DspFftServer mFftServer;
+    private VectorAverage mFreqAverageMain = new VectorAverage();
+
+    private VectorAverage mFreqAverageBase = new VectorAverage();
+    private VectorAverage mFreqAverageLeft = new VectorAverage();
+    private VectorAverage mFreqAverageRight = new VectorAverage();
+
+    private int mCurrentTest = -1;
+    int mBands = 4;
+    AudioBandSpecs[] bandSpecsArray = new AudioBandSpecs[mBands];
+    AudioBandSpecs[] baseBandSpecsArray = new AudioBandSpecs[mBands];
+
+    int mMaxLevel;
+    private class OnBtnClickListener implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            switch (v.getId()) {
+            case R.id.audio_frequency_speaker_mic_ready_btn:
+                testUSB();
+                break;
+            case R.id.audio_frequency_speaker_test_btn:
+                startAudioTest();
+                break;
+            }
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.audio_frequency_speaker_activity);
+
+        mContext = this;
+
+        mLoopbackPlugReady = (Button)findViewById(R.id.audio_frequency_speaker_mic_ready_btn);
+        mLoopbackPlugReady.setOnClickListener(mBtnClickListener);
+        mLinearLayout = (LinearLayout)findViewById(R.id.audio_frequency_speaker_layout);
+        mUsbStatusText = (TextView)findViewById(R.id.audio_frequency_speaker_usb_status);
+        mTestButton = (Button)findViewById(R.id.audio_frequency_speaker_test_btn);
+        mTestButton.setOnClickListener(mBtnClickListener);
+        mResultText = (TextView)findViewById(R.id.audio_frequency_speaker_results_text);
+        mProgressBar = (ProgressBar)findViewById(R.id.audio_frequency_speaker_progress_bar);
+        showWait(false);
+        enableLayout(false);         //disabled all content
+
+        mSPlayer = new SoundPlayerObject();
+        mSPlayer.setSoundWithResId(getApplicationContext(), R.raw.stereo_mono_white_noise_48);
+        mSPlayer.setBalance(0.5f);
+
+        //Init FFT stuff
+        mAudioShortArray2 = new short[mBlockSizeSamples*2];
+        mData = new DspBufferDouble(mBlockSizeSamples);
+        mC = new DspBufferComplex(mBlockSizeSamples);
+        mFftServer = new DspFftServer(mBlockSizeSamples);
+
+        int overlap = mBlockSizeSamples / 2;
+
+        mWindow = new DspWindow(DspWindow.WINDOW_HANNING, mBlockSizeSamples, overlap);
+
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setInfoResources(R.string.audio_frequency_speaker_test,
+                R.string.audio_frequency_speaker_info, -1);
+
+        //Init bands for Left/Right test
+        bandSpecsArray[0] = new AudioBandSpecs(
+                50, 500,        /* frequency start,stop */
+                -20.0, -50,     /* start top,bottom value */
+                4.0, -4.0       /* stop top,bottom value */);
+
+        bandSpecsArray[1] = new AudioBandSpecs(
+                500,4000,       /* frequency start,stop */
+                4.0, -4.0,      /* start top,bottom value */
+                4.0, -4.0        /* stop top,bottom value */);
+
+        bandSpecsArray[2] = new AudioBandSpecs(
+                4000, 12000,    /* frequency start,stop */
+                4.0, -4.0,      /* start top,bottom value */
+                5.0, -5.0       /* stop top,bottom value */);
+
+        bandSpecsArray[3] = new AudioBandSpecs(
+                12000, 20000,   /* frequency start,stop */
+                5.0, -5.0,      /* start top,bottom value */
+                5.0, -30.0      /* stop top,bottom value */);
+
+        //Init base bands for silence
+        baseBandSpecsArray[0] = new AudioBandSpecs(
+                50, 500,        /* frequency start,stop */
+                40.0, -50.0,     /* start top,bottom value */
+                5.0, -50.0       /* stop top,bottom value */);
+
+        baseBandSpecsArray[1] = new AudioBandSpecs(
+                500,4000,       /* frequency start,stop */
+                5.0, -50.0,      /* start top,bottom value */
+                5.0, -50.0        /* stop top,bottom value */);
+
+        baseBandSpecsArray[2] = new AudioBandSpecs(
+                4000, 12000,    /* frequency start,stop */
+                5.0, -50.0,      /* start top,bottom value */
+                5.0, -50.0       /* stop top,bottom value */);
+
+        baseBandSpecsArray[3] = new AudioBandSpecs(
+                12000, 20000,   /* frequency start,stop */
+                5.0, -50.0,      /* start top,bottom value */
+                5.0, -50.0      /* stop top,bottom value */);
+
+    }
+
+    /**
+     * enable test ui elements
+     */
+    private void enableLayout(boolean enable) {
+        for (int i = 0; i < mLinearLayout.getChildCount(); i++) {
+            View view = mLinearLayout.getChildAt(i);
+            view.setEnabled(enable);
+        }
+    }
+
+    /**
+     * show active progress bar
+     */
+    private void showWait(boolean show) {
+        if (show) {
+            mProgressBar.setVisibility(View.VISIBLE);
+        } else {
+            mProgressBar.setVisibility(View.INVISIBLE);
+        }
+    }
+
+    private void setMaxLevel() {
+        AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+        mMaxLevel = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+        am.setStreamVolume(AudioManager.STREAM_MUSIC, (int)(mMaxLevel), 0);
+    }
+
+    private void setMinLevel() {
+        AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+        am.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
+    }
+
+    /**
+     *  Start the loopback audio test
+     */
+    private void startAudioTest() {
+        if (mTestThread != null && !mTestThread.isAlive()) {
+            mTestThread = null; //kill it.
+        }
+
+        if (mTestThread == null) {
+            Log.v(TAG,"Executing test Thread");
+            mTestThread = new Thread(mPlayRunnable);
+            getPassButton().setEnabled(false);
+            if (!mSPlayer.isAlive())
+                mSPlayer.start();
+            mTestThread.start();
+        } else {
+            Log.v(TAG,"test Thread already running.");
+        }
+    }
+
+    Thread mTestThread;
+    Runnable mPlayRunnable = new Runnable() {
+        public void run() {
+            Message msg = Message.obtain();
+            msg.what = TEST_STARTED;
+            mMessageHandler.sendMessage(msg);
+
+            setMinLevel();
+            sendMessage("Testing Background Environment");
+            mCurrentTest = 0;
+            mSPlayer.setBalance(0.5f);
+            mFreqAverageBase.reset();
+            play();
+
+            setMaxLevel();
+            sendMessage("Testing Left Capture");
+            mCurrentTest = 1;
+            mFreqAverageLeft.reset();
+            mSPlayer.setBalance(0.0f);
+            play();
+
+            sendMessage("Testing Right Capture");
+            mCurrentTest = 2;
+            mFreqAverageRight.reset();
+            mSPlayer.setBalance(1.0f);
+            play();
+
+            mCurrentTest = -1;
+            sendMessage("Testing Completed");
+
+            Message msg2 = Message.obtain();
+            msg2.what = TEST_ENDED;
+            mMessageHandler.sendMessage(msg2);
+        }
+
+        private void play() {
+            startRecording();
+            mSPlayer.play(true);
+
+            try {
+                Thread.sleep(2000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            mSPlayer.play(false);
+            stopRecording();
+        }
+
+        private void sendMessage(String str) {
+            Message msg = Message.obtain();
+            msg.what = TEST_MESSAGE;
+            msg.obj = str;
+            mMessageHandler.sendMessage(msg);
+        }
+    };
+
+    private Handler mMessageHandler = new Handler() {
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            switch (msg.what) {
+            case TEST_STARTED:
+                showWait(true);
+                getPassButton().setEnabled(false);
+                break;
+            case TEST_ENDED:
+                showWait(false);
+                computeResults();
+                break;
+            case TEST_MESSAGE:
+                String str = (String)msg.obj;
+                if (str != null) {
+                    mResultText.setText(str);
+                }
+                break;
+            default:
+                Log.e(TAG, String.format("Unknown message: %d", msg.what));
+            }
+        }
+    };
+
+    private class Results {
+        private String mLabel;
+        public double[] mValuesLog;
+        int[] mPointsPerBand = new int[mBands];
+        double[] mAverageEnergyPerBand = new double[mBands];
+        int[] mInBoundPointsPerBand = new int[mBands];
+        public boolean mIsBaseMeasurement = false;
+        public Results(String label) {
+            mLabel = label;
+        }
+
+        //append results
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            sb.append(String.format("Channel %s\n", mLabel));
+            sb.append("Level in Band 1 : " + (testLevel() ? "OK" :"FAILED") +
+                    (mIsBaseMeasurement ? " (Base Meas.)" : "") + "\n");
+            for (int b = 0; b < mBands; b++) {
+                double percent = 0;
+                if (mPointsPerBand[b] > 0) {
+                    percent = 100.0 * (double)mInBoundPointsPerBand[b] / mPointsPerBand[b];
+                }
+                sb.append(String.format(
+                        " Band %d: Av. Level: %.1f dB InBand: %d/%d (%.1f%%) %s\n",
+                        b, mAverageEnergyPerBand[b],
+                        mInBoundPointsPerBand[b],
+                        mPointsPerBand[b],
+                        percent,
+                        (testInBand(b) ? "OK" : "FAILED")));
+            }
+            return sb.toString();
+        }
+
+        public boolean testLevel() {
+            if (mIsBaseMeasurement && mAverageEnergyPerBand[1] <= MAX_ENERGY_BAND_1_BASE) {
+                return true;
+            } else if (mAverageEnergyPerBand[1] >= MIN_ENERGY_BAND_1) {
+                return true;
+            }
+            return false;
+        }
+
+        public boolean testInBand(int b) {
+            if (b >= 0 && b < mBands && mPointsPerBand[b] > 0) {
+                if ((double)mInBoundPointsPerBand[b] / mPointsPerBand[b] >
+                MIN_FRACTION_POINTS_IN_BAND)
+                    return true;
+            }
+            return false;
+        }
+
+        public boolean testAll() {
+            if (!testLevel()) {
+                return false;
+            }
+            for (int b = 0; b < mBands; b++) {
+                if (!testInBand(b)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    /**
+     * compute test results
+     */
+    private void computeResults() {
+
+        Results resultsBase = new Results("Base");
+        computeResultsForVector(mFreqAverageBase, resultsBase, true, baseBandSpecsArray);
+        Results resultsLeft = new Results("Left");
+        computeResultsForVector(mFreqAverageLeft, resultsLeft, false, bandSpecsArray);
+        Results resultsRight = new Results("Right");
+        computeResultsForVector(mFreqAverageRight, resultsRight, false, bandSpecsArray);
+        if (resultsLeft.testAll() && resultsRight.testAll() && resultsBase.testAll()) {
+            //enable button
+            getPassButton().setEnabled(true);
+        }
+    }
+
+    private void computeResultsForVector(VectorAverage freqAverage,Results results, boolean isBase,
+            AudioBandSpecs[] bandSpecs) {
+
+        results.mIsBaseMeasurement = isBase;
+        int points = freqAverage.getSize();
+        if (points > 0) {
+            //compute vector in db
+            double[] values = new double[points];
+            freqAverage.getData(values, false);
+            results.mValuesLog = new double[points];
+            for (int i = 0; i < points; i++) {
+                results.mValuesLog[i] = 20 * Math.log10(values[i]);
+            }
+
+            int currentBand = 0;
+            for (int i = 0; i < points; i++) {
+                double freq = (double)mSamplingRate * i / (double)mBlockSizeSamples;
+                if (freq > bandSpecs[currentBand].mFreqStop) {
+                    currentBand++;
+                    if (currentBand >= mBands)
+                        break;
+                }
+
+                if (freq >= bandSpecs[currentBand].mFreqStart) {
+                    results.mAverageEnergyPerBand[currentBand] += results.mValuesLog[i];
+                    results.mPointsPerBand[currentBand]++;
+                }
+            }
+
+            for (int b = 0; b < mBands; b++) {
+                if (results.mPointsPerBand[b] > 0) {
+                    results.mAverageEnergyPerBand[b] =
+                            results.mAverageEnergyPerBand[b] / results.mPointsPerBand[b];
+                }
+            }
+
+            //set offset relative to band 1 level
+            for (int b = 0; b < mBands; b++) {
+                bandSpecs[b].setOffset(results.mAverageEnergyPerBand[1]);
+            }
+
+            //test points in band.
+            currentBand = 0;
+            for (int i = 0; i < points; i++) {
+                double freq = (double)mSamplingRate * i / (double)mBlockSizeSamples;
+                if (freq >  bandSpecs[currentBand].mFreqStop) {
+                    currentBand++;
+                    if (currentBand >= mBands)
+                        break;
+                }
+
+                if (freq >= bandSpecs[currentBand].mFreqStart) {
+                    double value = results.mValuesLog[i];
+                    if (bandSpecs[currentBand].isInBounds(freq, value)) {
+                        results.mInBoundPointsPerBand[currentBand]++;
+                    }
+                }
+            }
+
+            appendResultsToScreen(results.toString());
+            //store results
+            recordTestResults(results);
+        } else {
+            appendResultsToScreen("Failed testing channel " + results.mLabel);
+        }
+    }
+
+    //append results
+    private void appendResultsToScreen(String str) {
+        String currentText = mResultText.getText().toString();
+        mResultText.setText(currentText + "\n" + str);
+    }
+
+    /**
+     * Store test results in log
+     */
+    private void recordTestResults(Results results) {
+        String channelLabel = "channel_" + results.mLabel;
+
+        for (int b = 0; b < mBands; b++) {
+            String bandLabel = String.format(channelLabel + "_%d", b);
+            getReportLog().addValue(
+                    bandLabel + "_Level",
+                    results.mAverageEnergyPerBand[b],
+                    ResultType.HIGHER_BETTER,
+                    ResultUnit.NONE);
+
+            getReportLog().addValue(
+                    bandLabel + "_pointsinbound",
+                    results.mInBoundPointsPerBand[b],
+                    ResultType.HIGHER_BETTER,
+                    ResultUnit.COUNT);
+
+            getReportLog().addValue(
+                    bandLabel + "_pointstotal",
+                    results.mPointsPerBand[b],
+                    ResultType.NEUTRAL,
+                    ResultUnit.COUNT);
+        }
+
+        getReportLog().addValues(channelLabel + "_magnitudeSpectrumLog",
+                results.mValuesLog,
+                ResultType.NEUTRAL,
+                ResultUnit.NONE);
+
+        Log.v(TAG, "Results Recorded");
+    }
+
+    private void startRecording() {
+        synchronized (mRecordingLock) {
+            mIsRecording = true;
+        }
+
+        boolean successful = initRecord();
+        if (successful) {
+            startRecordingForReal();
+        } else {
+            Log.v(TAG, "Recorder initialization error.");
+            synchronized (mRecordingLock) {
+                mIsRecording = false;
+            }
+        }
+    }
+
+    private void startRecordingForReal() {
+        // start streaming
+        if (mRecordThread == null) {
+            mRecordThread = new Thread(AudioFrequencySpeakerActivity.this);
+            mRecordThread.setName("FrequencyAnalyzerThread");
+            mRecordThreadShutdown = false;
+        }
+        if (!mRecordThread.isAlive()) {
+            mRecordThread.start();
+        }
+
+        mPipe.flush();
+
+        long startTime = SystemClock.uptimeMillis();
+        mRecorder.startRecording();
+        if (mRecorder.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {
+            stopRecording();
+            return;
+        }
+        Log.v(TAG, "Start time: " + (long) (SystemClock.uptimeMillis() - startTime) + " ms");
+    }
+
+    private void stopRecording() {
+        synchronized (mRecordingLock) {
+            stopRecordingForReal();
+            mIsRecording = false;
+        }
+    }
+
+    private void stopRecordingForReal() {
+
+        // stop streaming
+        Thread zeThread = mRecordThread;
+        mRecordThread = null;
+        mRecordThreadShutdown = true;
+        if (zeThread != null) {
+            zeThread.interrupt();
+            try {
+                zeThread.join();
+            } catch(InterruptedException e) {
+                Log.v(TAG,"Error shutting down recording thread " + e);
+                //we don't really care about this error, just logging it.
+            }
+        }
+         // release recording resources
+        if (mRecorder != null) {
+            mRecorder.stop();
+            mRecorder.release();
+            mRecorder = null;
+        }
+    }
+
+    private boolean initRecord() {
+        int minRecordBuffSizeInBytes = AudioRecord.getMinBufferSize(mSamplingRate,
+                mChannelConfig, mAudioFormat);
+        Log.v(TAG,"FrequencyAnalyzer: min buff size = " + minRecordBuffSizeInBytes + " bytes");
+        if (minRecordBuffSizeInBytes <= 0) {
+            return false;
+        }
+
+        mMinRecordBufferSizeInSamples = minRecordBuffSizeInBytes / 2;
+        // allocate the byte array to read the audio data
+
+        mAudioShortArray = new short[mMinRecordBufferSizeInSamples];
+
+        Log.v(TAG, "Initiating record:");
+        Log.v(TAG, "      using source " + mSelectedRecordSource);
+        Log.v(TAG, "      at " + mSamplingRate + "Hz");
+
+        try {
+            mRecorder = new AudioRecord(mSelectedRecordSource, mSamplingRate,
+                    mChannelConfig, mAudioFormat, 2 * minRecordBuffSizeInBytes);
+        } catch (IllegalArgumentException e) {
+            return false;
+        }
+        if (mRecorder.getState() != AudioRecord.STATE_INITIALIZED) {
+            mRecorder.release();
+            mRecorder = null;
+            return false;
+        }
+        mRecorder.setRecordPositionUpdateListener(this);
+        mRecorder.setPositionNotificationPeriod(mBlockSizeSamples / 2);
+        return true;
+    }
+
+    // ---------------------------------------------------------
+    // Implementation of AudioRecord.OnPeriodicNotificationListener
+    // --------------------
+    public void onPeriodicNotification(AudioRecord recorder) {
+        int samplesAvailable = mPipe.availableToRead();
+        int samplesNeeded = mBlockSizeSamples;
+        if (samplesAvailable >= samplesNeeded) {
+            mPipe.read(mAudioShortArray2, 0, samplesNeeded);
+
+            //compute stuff.
+            double maxval = Math.pow(2, 15);
+            int clipcount = 0;
+            double cliplevel = (maxval-10) / maxval;
+            double sum = 0;
+            double maxabs = 0;
+            int i;
+            int index = 0;
+
+            for (i = 0; i < samplesNeeded; i++) {
+                double value = mAudioShortArray2[i] / maxval;
+                double valueabs = Math.abs(value);
+
+                if (valueabs > maxabs) {
+                    maxabs = valueabs;
+                }
+
+                if (valueabs > cliplevel) {
+                    clipcount++;
+                }
+
+                sum += value * value;
+                //fft stuff
+                if (index < mBlockSizeSamples) {
+                    mData.mData[index] = value;
+                }
+                index++;
+            }
+
+            //for the current frame, compute FFT and send to the viewer.
+
+            //apply window and pack as complex for now.
+            DspBufferMath.mult(mData, mData, mWindow.mBuffer);
+            DspBufferMath.set(mC, mData);
+            mFftServer.fft(mC, 1);
+
+            double[] halfMagnitude = new double[mBlockSizeSamples / 2];
+            for (i = 0; i < mBlockSizeSamples / 2; i++) {
+                halfMagnitude[i] = Math.sqrt(mC.mReal[i] * mC.mReal[i] + mC.mImag[i] * mC.mImag[i]);
+            }
+
+            mFreqAverageMain.setData(halfMagnitude, false); //average all of them!
+
+            switch(mCurrentTest) {
+                case 0:
+                    mFreqAverageBase.setData(halfMagnitude, false);
+                    break;
+                case 1:
+                    mFreqAverageLeft.setData(halfMagnitude, false);
+                    break;
+                case 2:
+                    mFreqAverageRight.setData(halfMagnitude, false);
+                    break;
+            }
+        }
+    }
+
+    public void onMarkerReached(AudioRecord track) {
+    }
+
+    // ---------------------------------------------------------
+    // Implementation of Runnable for the audio recording + playback
+    // --------------------
+    public void run() {
+        int nSamplesRead = 0;
+
+        Thread thisThread = Thread.currentThread();
+        while (mRecordThread == thisThread && !mRecordThreadShutdown) {
+            // read from native recorder
+            nSamplesRead = mRecorder.read(mAudioShortArray, 0, mMinRecordBufferSizeInSamples);
+            if (nSamplesRead > 0) {
+                mPipe.write(mAudioShortArray, 0, nSamplesRead);
+            }
+        }
+    }
+
+    private void testUSB() {
+        boolean isConnected = UsbMicrophoneTester.getIsMicrophoneConnected(getApplicationContext());
+        mUsbDevicesInfo = UsbMicrophoneTester.getUSBDeviceListString(getApplicationContext());
+
+        if (isConnected) {
+            mUsbStatusText.setText(
+                    getResources().getText(R.string.audio_frequency_speaker_mic_ready_text));
+            enableLayout(true);
+        } else {
+            mUsbStatusText.setText(
+                    getResources().getText(R.string.audio_frequency_speaker_mic_not_ready_text));
+            enableLayout(false);
+        }
+    }
+
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioLoopbackActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioLoopbackActivity.java
new file mode 100644
index 0000000..e603a69
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/AudioLoopbackActivity.java
@@ -0,0 +1,307 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+import com.android.compatibility.common.util.ReportLog;
+import com.android.compatibility.common.util.ResultType;
+import com.android.compatibility.common.util.ResultUnit;
+import android.content.Context;
+
+import android.media.AudioDeviceCallback;
+import android.media.AudioDeviceInfo;
+import android.media.AudioManager;
+import android.media.AudioTrack;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+
+import android.util.Log;
+
+import android.view.View;
+import android.view.View.OnClickListener;
+
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.SeekBar;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+
+/**
+ * Tests Audio Device roundtrip latency by using a loopback plug.
+ */
+public class AudioLoopbackActivity extends PassFailButtons.Activity {
+    private static final String TAG = "AudioLoopbackActivity";
+
+    public static final int BYTES_PER_FRAME = 2;
+
+    NativeAudioThread nativeAudioThread = null;
+
+    private int mSamplingRate = 44100;
+    private int mMinBufferSizeInFrames = 0;
+    private static final double CONFIDENCE_THRESHOLD = 0.6;
+    private Correlation mCorrelation = new Correlation();
+
+    OnBtnClickListener mBtnClickListener = new OnBtnClickListener();
+    Context mContext;
+
+    Button mLoopbackPlugReady;
+    TextView mAudioLevelText;
+    SeekBar mAudioLevelSeekbar;
+    LinearLayout mLinearLayout;
+    Button mTestButton;
+    TextView mResultText;
+    ProgressBar mProgressBar;
+
+    int mMaxLevel;
+    private class OnBtnClickListener implements OnClickListener {
+        @Override
+        public void onClick(View v) {
+            switch (v.getId()) {
+                case R.id.audio_loopback_plug_ready_btn:
+                    Log.i(TAG, "audio loopback plug ready");
+                    //enable all the other views.
+                    enableLayout(true);
+                    break;
+                case R.id.audio_loopback_test_btn:
+                    Log.i(TAG, "audio loopback test");
+                    startAudioTest();
+                    break;
+
+            }
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.audio_loopback_activity);
+
+        mContext = this;
+
+        mLoopbackPlugReady = (Button)findViewById(R.id.audio_loopback_plug_ready_btn);
+        mLoopbackPlugReady.setOnClickListener(mBtnClickListener);
+        mLinearLayout = (LinearLayout)findViewById(R.id.audio_loopback_layout);
+        mAudioLevelText = (TextView)findViewById(R.id.audio_loopback_level_text);
+        mAudioLevelSeekbar = (SeekBar)findViewById(R.id.audio_loopback_level_seekbar);
+        mTestButton =(Button)findViewById(R.id.audio_loopback_test_btn);
+        mTestButton.setOnClickListener(mBtnClickListener);
+        mResultText = (TextView)findViewById(R.id.audio_loopback_results_text);
+        mProgressBar = (ProgressBar)findViewById(R.id.audio_loopback_progress_bar);
+        showWait(false);
+
+        enableLayout(false);         //disabled all content
+        AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+        mMaxLevel = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+        mAudioLevelSeekbar.setMax(mMaxLevel);
+        am.setStreamVolume(AudioManager.STREAM_MUSIC, (int)(0.7 * mMaxLevel), 0);
+        refreshLevel();
+
+        mAudioLevelSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+            @Override
+            public void onStopTrackingTouch(SeekBar seekBar) {
+            }
+
+            @Override
+            public void onStartTrackingTouch(SeekBar seekBar) {
+            }
+
+            @Override
+            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+
+                AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+                am.setStreamVolume(AudioManager.STREAM_MUSIC,
+                        progress, 0);
+                refreshLevel();
+                Log.i(TAG,"Changed stream volume to: " + progress);
+            }
+        });
+
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        setInfoResources(R.string.sample_test, R.string.audio_loopback_info, -1);
+    }
+
+    /**
+     * refresh Audio Level seekbar and text
+     */
+    private void refreshLevel() {
+        AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+
+        int currentLevel = am.getStreamVolume(AudioManager.STREAM_MUSIC);
+        mAudioLevelSeekbar.setProgress(currentLevel);
+
+        String levelText = String.format("%s: %d/%d",
+                getResources().getString(R.string.audio_loopback_level_text),
+                currentLevel, mMaxLevel);
+        mAudioLevelText.setText(levelText);
+    }
+
+    /**
+     * enable test ui elements
+     */
+    private void enableLayout(boolean enable) {
+        for (int i = 0; i<mLinearLayout.getChildCount(); i++) {
+            View view = mLinearLayout.getChildAt(i);
+            view.setEnabled(enable);
+        }
+    }
+
+    /**
+     * show active progress bar
+     */
+    private void showWait(boolean show) {
+        if (show) {
+            mProgressBar.setVisibility(View.VISIBLE) ;
+        } else {
+            mProgressBar.setVisibility(View.INVISIBLE) ;
+        }
+    }
+
+    /**
+     *  Start the loopback audio test
+     */
+    private void startAudioTest() {
+        getPassButton().setEnabled(false);
+
+        //get system defaults for sampling rate, buffers.
+        AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+        String value = am.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);
+        mMinBufferSizeInFrames = Integer.parseInt(value);
+
+        int minBufferSizeInBytes = BYTES_PER_FRAME * mMinBufferSizeInFrames;
+
+        mSamplingRate = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_MUSIC);
+
+        Log.i(TAG, String.format("startAudioTest sr:%d , buffer:%d frames",
+                mSamplingRate, mMinBufferSizeInFrames));
+
+        nativeAudioThread = new NativeAudioThread();
+        if (nativeAudioThread != null) {
+            nativeAudioThread.setMessageHandler(mMessageHandler);
+            nativeAudioThread.mSessionId = 0;
+            nativeAudioThread.setParams(mSamplingRate,
+                    minBufferSizeInBytes,
+                    minBufferSizeInBytes,
+                    0x03 /*voice recognition*/);
+            nativeAudioThread.start();
+
+            try {
+                Thread.sleep(200);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            nativeAudioThread.runTest();
+
+        }
+    }
+
+    /**
+     * handler for messages from audio thread
+     */
+    private Handler mMessageHandler = new Handler() {
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            switch(msg.what) {
+                case NativeAudioThread.NATIVE_AUDIO_THREAD_MESSAGE_REC_STARTED:
+                    Log.v(TAG,"got message native rec started!!");
+                    showWait(true);
+                    mResultText.setText("Test Running...");
+                    break;
+                case NativeAudioThread.NATIVE_AUDIO_THREAD_MESSAGE_REC_ERROR:
+                    Log.v(TAG,"got message native rec can't start!!");
+                    showWait(false);
+                    mResultText.setText("Test Error.");
+                    break;
+                case NativeAudioThread.NATIVE_AUDIO_THREAD_MESSAGE_REC_COMPLETE:
+                case NativeAudioThread.NATIVE_AUDIO_THREAD_MESSAGE_REC_COMPLETE_ERRORS:
+                    if (nativeAudioThread != null) {
+                        Log.v(TAG,"Finished recording.");
+                        double [] waveData = nativeAudioThread.getWaveData();
+                        mCorrelation.computeCorrelation(waveData, mSamplingRate);
+                        mResultText.setText(String.format(
+                                "Test Finished\nLatency:%.2f ms\nConfidence: %.2f",
+                                mCorrelation.mEstimatedLatencyMs,
+                                mCorrelation.mEstimatedLatencyConfidence));
+
+                        recordTestResults();
+                        if (mCorrelation.mEstimatedLatencyConfidence >= CONFIDENCE_THRESHOLD) {
+                            getPassButton().setEnabled(true);
+                        }
+
+                        //close
+                        if (nativeAudioThread != null) {
+                            nativeAudioThread.isRunning = false;
+                            try {
+                                nativeAudioThread.finish();
+                                nativeAudioThread.join();
+                            } catch (InterruptedException e) {
+                                e.printStackTrace();
+                            }
+                            nativeAudioThread = null;
+                        }
+                        showWait(false);
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
+
+    /**
+     * Store test results in log
+     */
+    private void recordTestResults() {
+
+        getReportLog().addValue(
+                "Estimated Latency",
+                mCorrelation.mEstimatedLatencyMs,
+                ResultType.LOWER_BETTER,
+                ResultUnit.MS);
+
+        getReportLog().addValue(
+                "Confidence",
+                mCorrelation.mEstimatedLatencyConfidence,
+                ResultType.HIGHER_BETTER,
+                ResultUnit.NONE);
+
+        int audioLevel = mAudioLevelSeekbar.getProgress();
+        getReportLog().addValue(
+                "Audio Level",
+                audioLevel,
+                ResultType.NEUTRAL,
+                ResultUnit.NONE);
+
+        getReportLog().addValue(
+                "Frames Buffer Size",
+                mMinBufferSizeInFrames,
+                ResultType.NEUTRAL,
+                ResultUnit.NONE);
+
+        getReportLog().addValue(
+                "Sampling Rate",
+                mSamplingRate,
+                ResultType.NEUTRAL,
+                ResultUnit.NONE);
+
+        Log.v(TAG,"Results Recorded");
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/Correlation.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/Correlation.java
new file mode 100644
index 0000000..75b04eb
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/Correlation.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio;
+
+import android.util.Log;
+
+
+public class Correlation {
+
+    private int mBlockSize = 4096;
+    private int mSamplingRate = 44100;
+    private double [] mDataDownsampled = new double [mBlockSize];
+    private double [] mDataAutocorrelated = new double[mBlockSize];
+
+    public double mEstimatedLatencySamples = 0;
+    public double mEstimatedLatencyMs = 0;
+    public double mEstimatedLatencyConfidence = 0.0;
+
+    public void init(int blockSize, int samplingRate) {
+        mBlockSize = blockSize;
+        mSamplingRate = samplingRate;
+    }
+
+    public boolean computeCorrelation(double [] data, int samplingRate) {
+        boolean status = false;
+        log("Started Auto Correlation for data with " + data.length + " points");
+        mSamplingRate = samplingRate;
+
+        downsampleData(data, mDataDownsampled);
+
+        //correlation vector
+        autocorrelation(mDataDownsampled, mDataAutocorrelated);
+
+        int N = data.length; //all samples available
+        double groupSize =  (double) N / mBlockSize;  //samples per downsample point.
+
+        double maxValue = 0;
+        int maxIndex = -1;
+
+        double minLatencyMs = 8; //min latency expected. This algorithm should be improved.
+        int minIndex = (int)(0.5 + minLatencyMs * mSamplingRate / (groupSize*1000));
+
+        double average = 0;
+        double rms = 0;
+        //find max
+        for (int i=minIndex; i<mDataAutocorrelated.length; i++) {
+            average += mDataAutocorrelated[i];
+            rms += mDataAutocorrelated[i]*mDataAutocorrelated[i];
+            if (mDataAutocorrelated[i] > maxValue) {
+                maxValue = mDataAutocorrelated[i];
+                maxIndex = i;
+            }
+        }
+
+        rms = Math.sqrt(rms/mDataAutocorrelated.length);
+        average = average/mDataAutocorrelated.length;
+        log(String.format(" Maxvalue %f, max Index : %d/%d (%d)  minIndex=%d",maxValue, maxIndex,
+                mDataAutocorrelated.length, data.length, minIndex));
+
+        log(String.format("  average : %.3f  rms: %.3f", average, rms));
+
+        mEstimatedLatencyConfidence = 0.0;
+        if (average>0) {
+            double factor = 3.0;
+
+            double raw = (rms-average) /(factor*average);
+            log(String.format("Raw: %.3f",raw));
+            mEstimatedLatencyConfidence = Math.max(Math.min(raw, 1.0),0.0);
+        }
+
+        log(String.format(" ****Confidence: %.2f",mEstimatedLatencyConfidence));
+
+        mEstimatedLatencySamples = maxIndex*groupSize;
+
+        mEstimatedLatencyMs = mEstimatedLatencySamples *1000/mSamplingRate;
+
+        log(String.format(" latencySamples: %.2f  %.2f ms", mEstimatedLatencySamples,
+                mEstimatedLatencyMs));
+
+        status = true;
+        return status;
+    }
+
+    private boolean downsampleData(double [] data, double [] dataDownsampled) {
+
+        boolean status = false;
+        // mDataDownsampled = new double[mBlockSize];
+        for (int i=0; i<mBlockSize; i++) {
+            dataDownsampled[i] = 0;
+        }
+
+        int N = data.length; //all samples available
+        double groupSize =  (double) N / mBlockSize;
+
+        int currentIndex = 0;
+        double nextGroup = groupSize;
+        for (int i = 0; i<N && currentIndex<mBlockSize; i++) {
+
+            if (i> nextGroup) { //advanced to next group.
+                currentIndex++;
+                nextGroup += groupSize;
+            }
+
+            if (currentIndex>=mBlockSize) {
+                break;
+            }
+            dataDownsampled[currentIndex] += Math.abs(data[i]);
+        }
+
+        status = true;
+        return status;
+    }
+
+    private boolean autocorrelation(double [] data, double [] dataOut) {
+        boolean status = false;
+
+        double sumsquared = 0;
+        int N = data.length;
+        for (int i=0; i<N; i++) {
+            double value = data[i];
+            sumsquared += value*value;
+        }
+
+        if (sumsquared>0) {
+            for (int i = 0; i < N; i++) {
+                dataOut[i] = 0;
+                for (int j = 0; j < N - i; j++) {
+
+                    dataOut[i] += data[j] * data[i + j];
+                }
+                dataOut[i] = dataOut[i] / sumsquared;
+            }
+            status = true;
+        }
+
+        return status;
+    }
+
+    private static void log(String msg) {
+        Log.v("Recorder", msg);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/NativeAudioThread.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/NativeAudioThread.java
new file mode 100644
index 0000000..224d4c8
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/NativeAudioThread.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 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.
+ */
+
+//package org.drrickorang.loopback;
+
+package com.android.cts.verifier.audio;
+
+import android.media.AudioFormat;
+import android.media.AudioManager;
+import android.media.AudioTrack;
+//import android.media.MediaPlayer;
+import android.media.AudioRecord;
+import android.media.MediaRecorder;
+import android.util.Log;
+
+import android.os.Handler;
+import  android.os.Message;
+
+/**
+ * A thread/audio track based audio synth.
+ */
+public class NativeAudioThread extends Thread {
+
+    public boolean isRunning = false;
+    double twoPi = 6.28318530718;
+
+    public int mSessionId;
+
+    public double[] mvSamples; //captured samples
+    int mSamplesIndex;
+
+    private final int mSecondsToRun = 2;
+    public int mSamplingRate = 48000;
+    private int mChannelConfigIn = AudioFormat.CHANNEL_IN_MONO;
+    private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
+
+    int mMinPlayBufferSizeInBytes = 0;
+    int mMinRecordBuffSizeInBytes = 0;
+    private int mChannelConfigOut = AudioFormat.CHANNEL_OUT_MONO;
+
+    int mMicSource = 0;
+
+//    private double [] samples = new double[50000];
+
+    boolean isPlaying = false;
+    private Handler mMessageHandler;
+    boolean isDestroying = false;
+    boolean hasDestroyingErrors = false;
+
+    static final int NATIVE_AUDIO_THREAD_MESSAGE_REC_STARTED = 892;
+    static final int NATIVE_AUDIO_THREAD_MESSAGE_REC_ERROR = 893;
+    static final int NATIVE_AUDIO_THREAD_MESSAGE_REC_COMPLETE = 894;
+    static final int NATIVE_AUDIO_THREAD_MESSAGE_REC_COMPLETE_ERRORS = 895;
+
+    public void setParams(int samplingRate, int playBufferInBytes, int recBufferInBytes,
+            int micSource) {
+        mSamplingRate = samplingRate;
+        mMinPlayBufferSizeInBytes = playBufferInBytes;
+        mMinRecordBuffSizeInBytes = recBufferInBytes;
+        mMicSource = micSource;
+    }
+
+    //JNI load
+    static {
+        try {
+            System.loadLibrary("audioloopback_jni");
+        } catch (UnsatisfiedLinkError e) {
+            log("Error loading loopback JNI library");
+            e.printStackTrace();
+        }
+
+        /* TODO: gracefully fail/notify if the library can't be loaded */
+    }
+
+    //jni calls
+    public native long slesInit(int samplingRate, int frameCount, int micSource);
+    public native int slesProcessNext(long sles_data, double[] samples, long offset);
+    public native int slesDestroy(long sles_data);
+
+    public void run() {
+
+        setPriority(Thread.MAX_PRIORITY);
+        isRunning = true;
+
+        //erase output buffer
+        if (mvSamples != null)
+            mvSamples = null;
+
+        //resize
+        int nNewSize = (int)(1.1* mSamplingRate * mSecondsToRun ); //10% more just in case
+        mvSamples = new double[nNewSize];
+        mSamplesIndex = 0; //reset index
+
+        //clear samples
+        for (int i=0; i<nNewSize; i++) {
+            mvSamples[i] = 0;
+        }
+
+        //start playing
+        isPlaying = true;
+
+
+        log(" Started capture test");
+        if (mMessageHandler != null) {
+            Message msg = Message.obtain();
+            msg.what = NATIVE_AUDIO_THREAD_MESSAGE_REC_STARTED;
+            mMessageHandler.sendMessage(msg);
+        }
+
+
+
+        log(String.format("about to init, sampling rate: %d, buffer:%d", mSamplingRate,
+                mMinPlayBufferSizeInBytes/2 ));
+        long sles_data = slesInit(mSamplingRate, mMinPlayBufferSizeInBytes/2, mMicSource);
+        log(String.format("sles_data = 0x%X",sles_data));
+
+        if (sles_data == 0 ) {
+            log(" ERROR at JNI initialization");
+            if (mMessageHandler != null) {
+                Message msg = Message.obtain();
+                msg.what = NATIVE_AUDIO_THREAD_MESSAGE_REC_ERROR;
+                mMessageHandler.sendMessage(msg);
+            }
+        }  else {
+
+            //wait a little bit...
+            try {
+                sleep(10); //just to let it start properly?
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+
+
+            mSamplesIndex = 0;
+            int totalSamplesRead = 0;
+            long offset = 0;
+            for (int ii = 0; ii < mSecondsToRun; ii++) {
+                log(String.format("block %d...", ii));
+                int samplesRead = slesProcessNext(sles_data, mvSamples,offset);
+                totalSamplesRead += samplesRead;
+
+                offset += samplesRead;
+                log(" [" + ii + "] jni samples read:" + samplesRead + "  currentOffset:" + offset);
+            }
+
+            log(String.format(" samplesRead: %d, sampleOffset:%d", totalSamplesRead, offset));
+            log(String.format("about to destroy..."));
+
+            runDestroy(sles_data);
+
+            int maxTry = 20;
+            int tryCount = 0;
+            //isDestroying = true;
+            while (isDestroying) {
+
+                try {
+                    sleep(40);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+
+                tryCount++;
+
+                log("destroy try: " + tryCount);
+
+                if (tryCount >= maxTry) {
+                    hasDestroyingErrors = true;
+                    log("WARNING: waited for max time to properly destroy JNI.");
+                    break;
+                }
+            }
+            log(String.format("after destroying. TotalSamplesRead = %d", totalSamplesRead));
+
+            if (totalSamplesRead==0)
+            {
+                hasDestroyingErrors = true;
+            }
+
+            endTest();
+        }
+    }
+
+    public void setMessageHandler(Handler messageHandler) {
+        mMessageHandler = messageHandler;
+    }
+
+    private void runDestroy(final long sles_data ) {
+        isDestroying = true;
+
+        //start thread
+
+        final long local_sles_data = sles_data;
+        ////
+        Thread thread = new Thread(new Runnable() {
+            public void run() {
+                isDestroying = true;
+                log("**Start runnable destroy");
+
+                int status = slesDestroy(local_sles_data);
+                log(String.format("**End runnable destroy sles delete status: %d", status));
+                isDestroying = false;
+            }
+        });
+
+        thread.start();
+
+
+
+        log("end of runDestroy()");
+
+
+    }
+
+    public void togglePlay() {
+
+    }
+
+    public void runTest() {
+
+
+    }
+
+   public void endTest() {
+       log("--Ending capture test--");
+       isPlaying = false;
+
+
+       if (mMessageHandler != null) {
+           Message msg = Message.obtain();
+           if (hasDestroyingErrors)
+               msg.what = NATIVE_AUDIO_THREAD_MESSAGE_REC_COMPLETE_ERRORS;
+           else
+               msg.what = NATIVE_AUDIO_THREAD_MESSAGE_REC_COMPLETE;
+           mMessageHandler.sendMessage(msg);
+       }
+
+   }
+
+    public void finish() {
+
+        if (isRunning) {
+            isRunning = false;
+            try {
+                sleep(20);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private static void log(String msg) {
+        Log.v("Loopback", msg);
+    }
+
+    double [] getWaveData () {
+        return mvSamples;
+    }
+
+}  //end thread.
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/SoundPlayerObject.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/SoundPlayerObject.java
new file mode 100644
index 0000000..23b71c0
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/SoundPlayerObject.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio;
+
+import android.content.Context;
+import android.media.AudioFormat;
+import android.media.AudioManager;
+import android.media.AudioTrack;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.net.rtp.AudioStream;
+import android.util.Log;
+
+import com.android.cts.verifier.audio.wavelib.PipeShort;
+
+import java.io.IOException;
+
+public class SoundPlayerObject extends Thread {
+    private static final String LOGTAG = "SoundPlayerObject";
+    private MediaPlayer mMediaPlayer;
+    private boolean isInitialized = false;
+    private boolean isRunning = false;
+
+    public PipeShort mPipe = new PipeShort(65536);
+    private short[] mAudioShortArray;
+
+    public AudioTrack mAudioTrack;
+    public int mSamplingRate = 48000;
+    private int mChannelConfigOut = AudioFormat.CHANNEL_OUT_MONO;
+    private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
+    int mMinPlayBufferSizeInBytes = 0;
+    int mMinBufferSizeInSamples = 0;
+
+    private int mStreamType = AudioManager.STREAM_MUSIC;
+    private int mResId = -1;
+    private boolean mUseMediaPlayer = true;
+    private float mBalance = 0.5f; //0 left, 1 right
+
+    public int getCurrentResId() {
+        return mResId;
+    }
+
+    public int getStreamType () {
+        return mStreamType;
+    }
+
+    public void run() {
+        setPriority(Thread.MAX_PRIORITY);
+        isRunning = true;
+        while (isRunning) {
+
+            if (!mUseMediaPlayer && isInitialized && isPlaying()) {
+                int valuesAvailable = mPipe.availableToRead();
+                if (valuesAvailable > 0) {
+
+                    int valuesOfInterest = valuesAvailable;
+                    if (mMinBufferSizeInSamples < valuesOfInterest) {
+                        valuesOfInterest = mMinBufferSizeInSamples;
+                    }
+                    mPipe.read(mAudioShortArray, 0,valuesOfInterest);
+                    //inject into output.
+                    mAudioTrack.write(mAudioShortArray, 0, valuesOfInterest);
+                }
+            } else {
+                try {
+                    sleep(10);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    public void setBalance(float balance) {
+        mBalance = balance;
+        if (mUseMediaPlayer) {
+            if (mMediaPlayer != null) {
+                float left = Math.min(2.0f * (1.0f - mBalance), 1.0f);
+                float right = Math.min(2.0f * mBalance, 1.0f);
+                mMediaPlayer.setVolume(left, right);
+                log(String.format("Setting balance to %f", mBalance));
+            }
+        }
+    }
+
+    public void setStreamType(int streamType) {
+        mStreamType = streamType;
+    }
+
+    public void rewind() {
+        if (mUseMediaPlayer) {
+            if (mMediaPlayer != null) {
+                mMediaPlayer.seekTo(0);
+            }
+        }
+    }
+
+    public void setSoundWithResId(Context context, int resId) {
+        boolean playing = isPlaying();
+        //release player
+        releasePlayer();
+        mResId = resId;
+        if (mUseMediaPlayer) {
+            mMediaPlayer = new MediaPlayer();
+            try {
+                log("opening resource with stream type: " + mStreamType);
+                mMediaPlayer.setAudioStreamType(mStreamType);
+                mMediaPlayer.setDataSource(context.getApplicationContext(),
+                        Uri.parse("android.resource://com.android.cts.verifier/" + resId));
+                mMediaPlayer.prepare();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            mMediaPlayer.setLooping(true);
+            setBalance(mBalance);
+        } else {
+            mMinPlayBufferSizeInBytes = AudioTrack.getMinBufferSize(mSamplingRate,
+                    mChannelConfigOut, mAudioFormat);
+
+            mMinBufferSizeInSamples = mMinPlayBufferSizeInBytes / 2;
+            mAudioShortArray = new short[mMinBufferSizeInSamples * 4];
+
+            mAudioTrack = new AudioTrack(mStreamType,
+                    mSamplingRate,
+                    mChannelConfigOut,
+                    mAudioFormat,
+                    mMinPlayBufferSizeInBytes,
+                    AudioTrack.MODE_STREAM /* FIXME runtime test for API level 9 ,
+                mSessionId */);
+            mPipe.flush();
+            isInitialized = true;
+        }
+
+        log("done preparing media player");
+        if (playing)
+            play(true); //start playing if it was playing before
+    }
+
+    public boolean isPlaying() {
+        boolean result = false;
+        if (mUseMediaPlayer) {
+            if (mMediaPlayer != null) {
+                result = mMediaPlayer.isPlaying();
+            }
+        } else {
+            if (mAudioTrack != null) {
+                result = mAudioTrack.getPlayState() == AudioTrack.PLAYSTATE_PLAYING;
+            }
+        }
+        return result;
+    }
+
+    public void play(boolean play) {
+        if (mUseMediaPlayer) {
+            if (mMediaPlayer != null) {
+                if (play) {
+                    mMediaPlayer.start();
+                } else {
+                    mMediaPlayer.pause();
+                }
+            }
+        } else {
+            if (mAudioTrack != null && isInitialized) {
+                if (play) {
+                    mPipe.flush();
+                    mAudioTrack.flush();
+                    mAudioTrack.play();
+                } else {
+                    mAudioTrack.pause();
+                }
+            }
+        }
+    }
+
+    public void finish() {
+        play(false);
+        releasePlayer();
+    }
+
+    private void releasePlayer() {
+        if (mMediaPlayer != null) {
+            mMediaPlayer.stop();
+            mMediaPlayer.release();
+            mMediaPlayer = null;
+        }
+
+        if (mAudioTrack != null) {
+            mAudioTrack.stop();
+            mAudioTrack.release();
+            mAudioTrack = null;
+        }
+        isInitialized = false;
+    }
+
+    /*
+       Misc
+    */
+    private static void log(String msg) {
+        Log.v(LOGTAG, msg);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/UsbMicrophoneTester.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/UsbMicrophoneTester.java
new file mode 100644
index 0000000..c0b6b6a
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/UsbMicrophoneTester.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio;
+
+import android.content.Context;
+
+import android.hardware.usb.UsbAccessory;
+import android.hardware.usb.UsbConstants;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbInterface;
+import android.hardware.usb.UsbManager;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class UsbMicrophoneTester {
+
+    public static String getUSBDeviceListString(Context context) {
+        UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
+        StringBuilder sb = new StringBuilder();
+        HashMap<String, UsbDevice> devicelist = manager.getDeviceList();
+        for(UsbDevice usbDevice : devicelist.values()) {
+            sb.append("Model    : " + usbDevice.getDeviceName() + "\n");
+            sb.append(" Id      : " + usbDevice.getDeviceId() + "\n");
+            sb.append(" Class   : " + usbDevice.getDeviceClass() + "\n");
+            sb.append(" Prod.Id : " + usbDevice.getProductId() + "\n");
+            sb.append(" Vendor.Id : " + usbDevice.getVendorId() + "\n");
+            int iCount = usbDevice.getInterfaceCount();
+            for (int i = 0; i < iCount; i++) {
+                UsbInterface usbInterface = usbDevice.getInterface(i);
+                sb.append("    Interface " + i + " :\n");
+                sb.append("     Class: " + usbInterface.getInterfaceClass() + "\n");
+            }
+        }
+        return sb.toString();
+    }
+
+    public static boolean getIsMicrophoneConnected(Context context) {
+        UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
+        StringBuilder sb = new StringBuilder();
+        HashMap<String, UsbDevice> devicelist = manager.getDeviceList();
+        for(UsbDevice usbDevice : devicelist.values()) {
+            int iCount = usbDevice.getInterfaceCount();
+            for (int i = 0; i < iCount; i++) {
+                UsbInterface usbInterface = usbDevice.getInterface(i);
+                if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_AUDIO) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferBase.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferBase.java
new file mode 100644
index 0000000..0a8bdde
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferBase.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+public abstract class DspBufferBase {
+    private int mSize;
+
+    public DspBufferBase() {
+        setSize(0);
+    }
+
+    public DspBufferBase(int size) {
+        setSize(size);
+    }
+
+    public int getSize() {
+        return mSize;
+    }
+
+    public void setSize(int size) {
+        mSize = size;
+    }
+
+    public abstract void setValue(int index, double value);
+
+    public abstract void setValues(int index, double... values);
+
+    @Override
+    public String toString() {
+        return String.format("Size: %d", mSize);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferComplex.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferComplex.java
new file mode 100644
index 0000000..2b71343
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferComplex.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+public class DspBufferComplex extends DspBufferBase {
+    public double[] mReal;
+    public double[] mImag;
+
+    public DspBufferComplex(int size) {
+        super(size);
+    }
+
+    @Override
+    public void setSize(int size) {
+        if (size == getSize()) {
+            return;
+        }
+        mReal = new double[size];
+        mImag = new double[size];
+        super.setSize(size);
+    }
+
+    // Warning, these methods don't check for bounds!
+    @Override
+    public void setValues(int index, double... values) {
+        mReal[index] = values[0];
+        mImag[index] = values[1];
+    }
+
+    @Override
+    public void setValue(int index, double value) {
+        mReal[index] = value;
+        mImag[index] = 0;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        int size = getSize();
+        sb.append(String.format("Size: %d { ", size));
+        for (int i = 0; i < size; i++) {
+            sb.append(String.format("(%.3f, %3f) ", mReal[i], mImag[i]));
+        }
+        sb.append("}");
+        return sb.toString();
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferDouble.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferDouble.java
new file mode 100644
index 0000000..1b75da6
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferDouble.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+public class DspBufferDouble extends DspBufferBase {
+    public double[] mData;
+
+    public DspBufferDouble(int size) {
+        super(size);
+    }
+
+    @Override
+    public void setSize(int size) {
+        if (size == getSize()) {
+            return;
+        }
+        mData = new double[size];
+        super.setSize(size);
+    }
+
+    // Warning, these methods don't check for bounds!
+    @Override
+    public void setValues(int index, double... values) {
+        mData[index] = values[0];
+    }
+
+    @Override
+    public void setValue(int index, double value) {
+        mData[index] = value;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        int size = getSize();
+        sb.append(String.format("Size: %d { ", size));
+        int i = 0;
+        for (; i < size - 1; i++) {
+            sb.append(String.format("%.3f, ", mData[i]));
+        }
+        for(; i < size; i++) {
+            sb.append(String.format("%.3f", mData[i]));
+        }
+        sb.append(" }");
+        return sb.toString();
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferMath.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferMath.java
new file mode 100644
index 0000000..a9cbbd0
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspBufferMath.java
@@ -0,0 +1,329 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+import android.util.Log;
+
+public class DspBufferMath {
+    private static final String TAG = "DspBufferMath";
+    public static final int OPERANDS_TYPE_UNKNOWN  = -1;
+    public static final int OPERANDS_TYPE_REAL     = 0;
+    public static final int OPERANDS_TYPE_COMPLEX  = 1;
+    public static final int OPERANDS_TYPE_MIXED    = 2;
+
+    public static final int MATH_RESULT_UNDEFINED  = -1;
+    public static final int MATH_RESULT_SUCCESS    = 0;
+    public static final int MATH_RESULT_ERROR      = 1;
+
+    static private<T extends DspBufferBase> int estimateOperandsType(T a, T b) {
+        if (a instanceof DspBufferComplex) {
+            if (b instanceof DspBufferComplex) {
+                return OPERANDS_TYPE_COMPLEX;
+            } else if (b instanceof DspBufferDouble) {
+                return OPERANDS_TYPE_MIXED;
+            }
+        } else if (a instanceof DspBufferDouble) {
+            if (b instanceof DspBufferComplex) {
+                return OPERANDS_TYPE_MIXED;
+            } else if (b instanceof DspBufferDouble) {
+                return OPERANDS_TYPE_REAL;
+            }
+        }
+        return OPERANDS_TYPE_UNKNOWN;
+    }
+
+    /**
+     * adds r = a + b; element by element
+     *
+     * If the result is double vector, the imaginary part of complex operations is ignored.
+     */
+    static public <T extends DspBufferBase> int add(T r, T a, T b) {
+        int size = Math.min(a.getSize(), b.getSize());
+        r.setSize(size);
+
+        T x = a;
+        T y = b;
+        int opType = estimateOperandsType(a, b);
+
+        if (opType == OPERANDS_TYPE_MIXED) {
+            if (a instanceof  DspBufferDouble)  {
+                x = b; //Complex first
+                y = a;
+            }
+        }
+
+        if (opType == OPERANDS_TYPE_UNKNOWN) {
+            return MATH_RESULT_UNDEFINED;
+        }
+
+        if (r instanceof DspBufferComplex) {
+            switch (opType) {
+                case OPERANDS_TYPE_REAL:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] =
+                                ((DspBufferDouble) x).mData[i] + ((DspBufferDouble) y).mData[i];
+                        ((DspBufferComplex) r).mImag[i] = 0;
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_COMPLEX:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] =
+                                ((DspBufferComplex) x).mReal[i] + ((DspBufferComplex) y).mReal[i];
+                        ((DspBufferComplex) r).mImag[i] =
+                                ((DspBufferComplex) x).mImag[i] + ((DspBufferComplex) y).mImag[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] =
+                                ((DspBufferComplex) x).mReal[i] + ((DspBufferDouble) y).mData[i];
+                        ((DspBufferComplex) r).mImag[i] = ((DspBufferComplex) x).mImag[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        } else if (r instanceof DspBufferDouble) {
+            switch (opType) {
+                case OPERANDS_TYPE_REAL:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] =
+                                ((DspBufferDouble) x).mData[i] + ((DspBufferDouble) y).mData[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_COMPLEX:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] =
+                                ((DspBufferComplex) x).mReal[i] + ((DspBufferComplex) y).mReal[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] =
+                                ((DspBufferComplex) x).mReal[i] + ((DspBufferDouble) y).mData[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        }
+        return MATH_RESULT_ERROR;
+    }
+
+    /**
+     * mult r = a * b; element by element
+     */
+    static public <T extends DspBufferBase> int mult(T r, T a, T b) {
+        int size = Math.min(a.getSize(), b.getSize());
+        r.setSize(size);
+
+        T x = a;
+        T y = b;
+        int opType = estimateOperandsType(a, b);
+
+        if (opType == OPERANDS_TYPE_MIXED) {
+            if (a instanceof  DspBufferDouble)  {
+                x = b; //Complex first
+                y = a;
+            }
+        }
+
+        if (opType == OPERANDS_TYPE_UNKNOWN) {
+            return MATH_RESULT_UNDEFINED;
+        }
+
+        if (r instanceof DspBufferComplex) {
+            switch (opType) {
+                case OPERANDS_TYPE_REAL:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] =
+                                ((DspBufferDouble) x).mData[i] * ((DspBufferDouble) y).mData[i];
+                        ((DspBufferComplex) r).mImag[i] = 0;
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_COMPLEX:
+                    for (int i = 0; i < size; i++) {
+                        double A = ((DspBufferComplex) x).mReal[i];
+                        double B = ((DspBufferComplex) x).mImag[i];
+                        double C = ((DspBufferComplex) y).mReal[i];
+                        double D = ((DspBufferComplex) y).mImag[i];
+                        ((DspBufferComplex) r).mReal[i] = (C * A) - (B * D);
+                        ((DspBufferComplex) r).mImag[i] = (C * B) + (A * D);
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        double A = ((DspBufferComplex) x).mReal[i];
+                        double B = ((DspBufferComplex) x).mImag[i];
+                        double C = ((DspBufferDouble) y).mData[i];
+                        //double D = 0;
+                        ((DspBufferComplex) r).mReal[i] = C * A;
+                        ((DspBufferComplex) r).mImag[i] = C * B;
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        } else if (r instanceof DspBufferDouble) {
+            switch (opType) {
+                case OPERANDS_TYPE_REAL:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] =
+                                ((DspBufferDouble) x).mData[i] * ((DspBufferDouble) y).mData[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_COMPLEX:
+                    for (int i = 0; i < size; i++) {
+                        double A = ((DspBufferComplex) x).mReal[i];
+                        double B = ((DspBufferComplex) x).mImag[i];
+                        double C = ((DspBufferComplex) y).mReal[i];
+                        double D = ((DspBufferComplex) y).mImag[i];
+                        ((DspBufferDouble) r).mData[i] = (C * A) - (B * D);
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        double A = ((DspBufferComplex) x).mReal[i];
+                        double B = ((DspBufferComplex) x).mImag[i];
+                        double C = ((DspBufferDouble) y).mData[i];
+                        //double D = 0;
+                        ((DspBufferDouble) r).mData[i] = C * A;
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        }
+        return MATH_RESULT_ERROR;
+    }
+
+    /**
+     * mult r = a * v; element by element
+     */
+    static public <T extends DspBufferBase> int mult(T r, T a, double v) {
+        int size = a.getSize();
+        r.setSize(size);
+
+        T x = a;
+        int opType = estimateOperandsType(r, a);
+
+        if (opType == OPERANDS_TYPE_UNKNOWN) {
+            return MATH_RESULT_UNDEFINED;
+        }
+
+        if (r instanceof DspBufferComplex) {
+            switch (opType) {
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] = ((DspBufferDouble) x).mData[i] * v;
+                        ((DspBufferComplex) r).mImag[i] = 0;
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_COMPLEX:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] = ((DspBufferComplex) x).mReal[i] * v;
+                        ((DspBufferComplex) r).mImag[i] = ((DspBufferComplex) x).mImag[i] * v;
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        } else if (r instanceof DspBufferDouble) {
+            switch (opType) {
+                case OPERANDS_TYPE_REAL:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] = ((DspBufferDouble) x).mData[i] * v;
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] = ((DspBufferComplex) x).mReal[i] * v;
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        }
+        return MATH_RESULT_ERROR;
+    }
+
+    /**
+     * set r = a ; element by element
+     */
+    static public <T extends DspBufferBase> int set(T r, T a) {
+        int size = a.getSize();
+        r.setSize(size);
+
+        T x = a;
+        int opType = estimateOperandsType(r, a);
+
+        if (opType == OPERANDS_TYPE_UNKNOWN) {
+            return MATH_RESULT_UNDEFINED;
+        }
+
+        if (r instanceof DspBufferComplex) {
+            switch (opType) {
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] = ((DspBufferDouble) x).mData[i];
+                        ((DspBufferComplex) r).mImag[i] = 0;
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_COMPLEX:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferComplex) r).mReal[i] = ((DspBufferComplex) x).mReal[i];
+                        ((DspBufferComplex) r).mImag[i] = ((DspBufferComplex) x).mImag[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        } else if (r instanceof DspBufferDouble) {
+            switch(opType) {
+                case OPERANDS_TYPE_REAL:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] = ((DspBufferDouble) x).mData[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+                case OPERANDS_TYPE_MIXED:
+                    for (int i = 0; i < size; i++) {
+                        ((DspBufferDouble) r).mData[i] = ((DspBufferComplex) x).mReal[i];
+                    }
+                    return MATH_RESULT_SUCCESS;
+            }
+        }
+        return MATH_RESULT_ERROR;
+    }
+
+
+    /**
+     * set r = v ; all elements the same
+     * It keeps the size of the return vector
+     */
+    static public <T extends DspBufferBase> int set(T r, double ...values) {
+        int size = r.getSize();
+
+        double a = 0;
+        double b = 0;
+        if (values.length > 0) {
+            a = values[0];
+        }
+        if (values.length > 1) {
+            b = values[1];
+        }
+
+        if (r instanceof DspBufferComplex) {
+            for (int i = 0; i < size; i++) {
+                ((DspBufferComplex) r).mReal[i] = a;
+                ((DspBufferComplex) r).mImag[i] = b;
+            }
+            return MATH_RESULT_SUCCESS;
+        } else if (r instanceof DspBufferDouble) {
+            for (int i = 0; i < size; i++) {
+                ((DspBufferDouble) r).mData[i] = a;
+            }
+            return MATH_RESULT_SUCCESS;
+        }
+        return MATH_RESULT_ERROR;
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspFftServer.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspFftServer.java
new file mode 100644
index 0000000..09337f1
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspFftServer.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+public class DspFftServer {
+    private int mN = 0;
+    private int mOrder = 0;
+
+    DspBufferDouble mCos;
+    DspBufferDouble mSin;
+    public boolean isInitialized = false;
+
+    public DspFftServer(int size) {
+        init(size);
+    }
+
+    public boolean init(int size) {
+        boolean status = false;
+        mN=size;
+
+        mOrder = (int) (Math.log(mN) / Math.log(2));
+        if (mN == (1 << mOrder)) {
+            mCos = new DspBufferDouble(mN / 2);
+            mSin = new DspBufferDouble(mN / 2);
+            for (int i = 0; i < mN / 2; i++) {
+                mCos.mData[i] = Math.cos(-2 * Math.PI * i / mN);
+                mSin.mData[i] = Math.sin(-2 * Math.PI * i / mN);
+            }
+            status = true;
+        } else {
+            mN = 0;
+            throw new RuntimeException("FFT must be power of 2");
+        }
+        isInitialized = status;
+        return status;
+    }
+
+    public void fft(DspBufferComplex r, int sign) {
+        int ii, jj, kk, n1, n2, aa;
+        double cc, ss, t1, t2;
+
+        // Bit-reverse
+        jj = 0;
+        n2 = mN / 2;
+        for (ii = 1; ii < mN - 1; ii++) {
+            n1 = n2;
+            while (jj >= n1) {
+                jj = jj - n1;
+                n1 = n1 / 2;
+            }
+            jj = jj + n1;
+
+            if (ii < jj) {
+                t1 =  r.mReal[ii];
+                r.mReal[ii] = r.mReal[jj];
+                r.mReal[jj] = t1;
+                t1 = r.mImag[ii];
+                r.mImag[ii] = r.mImag[jj];
+                r.mImag[jj] = t1;
+            }
+        }
+
+        // FFT
+        n1 = 0;
+        n2 = 1;
+        for (ii = 0; ii < mOrder; ii++) {
+            n1 = n2;
+            n2 = n2 + n2;
+            aa = 0;
+
+            for (jj = 0; jj < n1; jj++) {
+                cc = mCos.mData[aa];
+                ss = sign * mSin.mData[aa];
+                aa += 1 << (mOrder - ii - 1);
+                for (kk = jj; kk < mN; kk = kk + n2) {
+                    t1 = cc * r.mReal[kk + n1] - ss * r.mImag[kk + n1];
+                    t2 = ss * r.mReal[kk + n1] + cc * r.mImag[kk + n1];
+                    r.mReal[kk + n1] = r.mReal[kk] - t1;
+                    r.mImag[kk + n1] = r.mImag[kk] - t2;
+                    r.mReal[kk] = r.mReal[kk] + t1;
+                    r.mImag[kk] = r.mImag[kk] + t2;
+                }
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspWindow.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspWindow.java
new file mode 100644
index 0000000..3ccca43
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/DspWindow.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+public class DspWindow {
+    public DspBufferDouble mBuffer;
+    private int mWindowType = WINDOW_RECTANGULAR;
+    private int mSize;
+    private int mOverlap;
+
+    private static final double TWOPI = Math.PI * 2;
+
+    public static final int WINDOW_RECTANGULAR = 0;
+    public static final int WINDOW_TRIANGULAR = 1;
+    public static final int WINDOW_TRIANGULAR_FLAT_TOP = 2;
+    public static final int WINDOW_HAMMING = 3;
+    public static final int WINDOW_HAMMING_FLAT_TOP = 4;
+    public static final int WINDOW_HANNING = 5;
+    public static final int WINDOW_HANNING_FLAT_TOP = 6;
+
+    public DspWindow(int windowType, int size, int overlap) {
+        init(windowType, size, overlap);
+    }
+
+    public DspWindow(int windowType, int size)  {
+        init(windowType, size, size / 2);
+    }
+
+    public void init(int windowType, int size, int overlap) {
+        if (size > 0 && overlap > 0) {
+            mSize = size;
+            mOverlap = overlap;
+            if (mOverlap > mSize / 2) {
+                mOverlap = mSize / 2;
+            }
+
+            mBuffer = new DspBufferDouble(mSize);
+            if (fillWindow(mBuffer, windowType, mOverlap)) {
+                mWindowType = windowType;
+            }
+        }
+    }
+
+    public void scale(double scale) {
+        DspBufferMath.mult(mBuffer, mBuffer, scale);
+    }
+
+    public static boolean fillWindow(DspBufferDouble r, int type, int overlap) {
+        boolean status = false;
+        int size = r.getSize();
+        if (overlap > size / 2) {
+            overlap = size / 2;
+        }
+
+        switch(type) {
+            case WINDOW_RECTANGULAR:
+                status = fillRectangular(r);
+                break;
+            case WINDOW_TRIANGULAR:
+                status = fillTriangular(r, size / 2);
+                break;
+            case WINDOW_TRIANGULAR_FLAT_TOP:
+                status = fillTriangular(r, overlap);
+                break;
+            case WINDOW_HAMMING:
+                status = fillHamming(r, size / 2);
+                break;
+            case WINDOW_HAMMING_FLAT_TOP:
+                status = fillHamming(r, overlap);
+                break;
+            case WINDOW_HANNING:
+                status = fillHanning(r, size / 2);
+                break;
+            case WINDOW_HANNING_FLAT_TOP:
+                status = fillHanning(r, overlap);
+                break;
+        }
+        return status;
+    }
+
+    private static boolean fillRectangular(DspBufferDouble r) {
+        if (DspBufferMath.set(r, 1.0) == DspBufferMath.MATH_RESULT_SUCCESS) {
+            return true;
+        }
+        return false;
+    }
+
+    private static boolean fillTriangular(DspBufferDouble b, int overlap) {
+        int size = b.getSize();
+        if (overlap > size / 2) {
+            overlap = size / 2;
+        }
+
+        double value;
+        //ramp up
+        int i = 0;
+        if (overlap > 0) {
+            for (i = 0; i < overlap; i++) {
+                value = (2.0 * i + 1) / (2 * overlap);
+                b.mData[i] = value;
+            }
+        }
+
+        //flat top
+        for (; i < size - overlap; i++) {
+            b.mData[i] = 1.0;
+        }
+
+        //ramp down
+        if (overlap > 0) {
+            for (; i < size; i++) {
+                value = (2.0 * (size - i) - 1) / (2 * overlap);
+                b.mData[i] = value;
+            }
+        }
+        return true;
+    }
+
+    private static boolean fillHamming(DspBufferDouble b, int overlap) {
+        int size = b.getSize();
+        if (overlap > size / 2)
+            overlap = size / 2;
+
+        //create window, then copy
+        double value;
+
+        int twoOverlap = 2 * overlap;
+        //ramp up
+        int i = 0;
+        if (overlap > 0) {
+            for (i = 0; i < overlap; i++) {
+                value = 0.54 - 0.46 * Math.cos(TWOPI * i / (twoOverlap - 1));
+                b.mData[i] = value;
+            }
+        }
+
+        //flat top
+        for (; i < size - overlap; i++) {
+            b.mData[i] = 1.0;
+        }
+
+        //ramp down
+        int k;
+        if (overlap > 0) {
+            for (; i < size; i++) {
+                k = i - (size - 2 * overlap);
+                value = 0.54 - 0.46 * Math.cos(TWOPI * k / (twoOverlap - 1));
+                b.mData[i] = value;
+            }
+        }
+        return true;
+    }
+
+    private static boolean fillHanning(DspBufferDouble b, int overlap) {
+        int size = b.getSize();
+        if (overlap > size / 2)
+            overlap = size / 2;
+
+        //create window, then copy
+        double value;
+
+        int twoOverlap = 2*overlap;
+        //ramp up
+        int i = 0;
+        if (overlap > 0) {
+            for (i = 0; i < overlap; i++) {
+                value = 0.5 * (1.0 - Math.cos(TWOPI * i / (twoOverlap - 1)));
+                b.mData[i] = value;
+            }
+        }
+
+        //flat top
+        for (; i < size - overlap; i++) {
+            b.mData[i] = 1.0;
+        }
+
+        //ramp down
+        if (overlap > 0) {
+            for (; i < size; i++) {
+                int k = i - (size - 2 * overlap);
+                value = 0.5 * (1.0 - Math.cos(TWOPI * k / (twoOverlap - 1)));
+                b.mData[i] = value;
+            }
+        }
+        return true;
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/PipeShort.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/PipeShort.java
new file mode 100644
index 0000000..83b171f
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/PipeShort.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+// Non-blocking pipe supports a single writer and single reader.
+// The write side of a pipe permits overruns; flow control is the caller's responsibility.
+
+public class PipeShort {
+    private int mFront;
+    private int mRear;
+    private short mBuffer[];
+    private volatile int mVolatileRear; // written by write(), read by read()
+    private int mMaxValues;
+    private int mBytesOverrun;
+    private int mOverruns;
+    public static final int OVERRUN = -2;
+
+    // maxBytes will be rounded up to a power of 2, and all slots are available. Must be >= 2.
+    public PipeShort(int maxValues)
+    {
+        mMaxValues = roundup(maxValues);
+        mBuffer = new short[mMaxValues];
+    }
+
+    // buffer must != null.
+    // offset must be >= 0.
+    // count is maximum number of bytes to copy, and must be >= 0.
+    // offset + count must be <= buffer.length.
+    // Returns actual number of bytes copied >= 0.
+    public int write(short[] buffer, int offset, int count)
+    {
+        int rear = mRear & (mMaxValues - 1);
+        int written = mMaxValues - rear;
+        if (written > count) {
+            written = count;
+        }
+        System.arraycopy(buffer, offset, mBuffer, rear, written);
+        if (rear + written == mMaxValues) {
+            if ((count -= written) > rear) {
+                count = rear;
+            }
+            if (count > 0) {
+                System.arraycopy(buffer, offset + written, mBuffer, 0, count);
+                written += count;
+            }
+        }
+        mRear += written;
+        mVolatileRear = mRear;
+        return written;
+    }
+
+    public int availableToRead()
+    {
+        int rear = mVolatileRear;
+        int avail = rear - mFront;
+        if (avail > mMaxValues) {
+            // Discard 1/16 of the most recent data in pipe to avoid another overrun immediately
+            int oldFront = mFront;
+            mFront = rear - mMaxValues + (mMaxValues >> 4);
+            mBytesOverrun += mFront - oldFront;
+            ++mOverruns;
+            return OVERRUN;
+        }
+        return avail;
+    }
+
+    // buffer must != null.
+    // offset must be >= 0.
+    // count is maximum number of bytes to copy, and must be >= 0.
+    // offset + count must be <= buffer.length.
+    // Returns actual number of bytes copied >= 0.
+    public int read(short[] buffer, int offset, int count)
+    {
+        int avail = availableToRead();
+        if (avail <= 0) {
+            return avail;
+        }
+        // An overrun can occur from here on and be silently ignored,
+        // but it will be caught at next read()
+        if (count > avail) {
+            count = avail;
+        }
+        int front = mFront & (mMaxValues - 1);
+        int red = mMaxValues - front;
+        if (red > count) {
+            red = count;
+        }
+        // In particular, an overrun during the System.arraycopy will result in reading corrupt data
+        System.arraycopy(mBuffer, front, buffer, offset, red);
+        // We could re-read the rear pointer here to detect the corruption, but why bother?
+        if (front + red == mMaxValues) {
+            if ((count -= red) > front) {
+                count = front;
+            }
+            if (count > 0) {
+                System.arraycopy(mBuffer, 0, buffer, offset + red, count);
+                red += count;
+            }
+        }
+        mFront += red;
+        return red;
+    }
+
+    public void flush()
+    {
+        mRear = mFront;
+        mVolatileRear = mFront;
+    }
+
+    // Round up to the next highest power of 2
+    private static int roundup(int v)
+    {
+        // Integer.numberOfLeadingZeros() returns 32 for zero input
+        if (v == 0) {
+            v = 1;
+        }
+        int lz = Integer.numberOfLeadingZeros(v);
+        int rounded = 0x80000000 >>> lz;
+        // 0x800000001 and higher are actually rounded _down_ to prevent overflow
+        if (v > rounded && lz > 0) {
+            rounded <<= 1;
+        }
+        return rounded;
+    }
+
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/VectorAverage.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/VectorAverage.java
new file mode 100644
index 0000000..41f0411
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/wavelib/VectorAverage.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.audio.wavelib;
+
+import android.util.Log;
+
+public class VectorAverage {
+    private static final String LOGTAG = "VectorAverage";
+    private static final int mVersion = 0;
+    private double[] mData;
+    private int mValueCount = 0;
+
+    public void setData(double[] data, boolean replace) {
+        int size = data.length;
+        if (mData == null || mData.length != size) {
+            mData = new double[size];
+            mValueCount = 0;
+        }
+        if (replace || mValueCount == 0) {
+            System.arraycopy(data, 0, mData, 0, size);
+            mValueCount = 1;
+        } else {
+            for (int i = 0; i < size; i++) {
+                mData[i] += data[i];
+            }
+            mValueCount++;
+        }
+    }
+
+    public int getData(double[] data, boolean raw) {
+        int nCount = 0;
+        if (mData != null && mData.length <= data.length) {
+            nCount = mData.length;
+            if (mValueCount == 0) {
+                for (int i = 0; i < nCount; i++) {
+                    data[i] = 0;
+                }
+            } else if (!raw && mValueCount > 1) {
+                for (int i = 0; i < nCount; i++) {
+                    data[i] = mData[i] / mValueCount;
+                }
+            } else {
+                for (int i = 0; i < nCount; i++) {
+                    data[i] = mData[i];
+                }
+            }
+        }
+        return nCount;
+    }
+
+    public int getCount() {
+        return mValueCount;
+    }
+
+    public int getSize() {
+        if (mData != null) {
+            return mData.length;
+        }
+        return 0;
+    }
+
+    public void reset() {
+        mValueCount = 0;
+    }
+
+    private final String SERIALIZED_VERSION = "VECTOR_AVERAGE_VERSION";
+    private final String SERIALIZED_COUNT = "COUNT";
+
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+
+        //version
+        sb.append(SERIALIZED_VERSION +"="+ mVersion +"\n");
+
+        double[] data = new double[getSize()];
+        getData(data,false);
+
+        //element count
+        int nCount = data.length;
+        sb.append(SERIALIZED_COUNT + "=" + nCount +"\n");
+
+        for (int i = 0; i < nCount; i++) {
+            sb.append(String.format("%f\n",data[i]));
+        }
+
+        return sb.toString();
+    }
+
+    public boolean initFromString(String string) {
+        boolean success = false;
+
+        String[] lines = string.split(System.getProperty("line.separator"));
+
+        int lineCount = lines.length;
+        if (lineCount > 3) {
+            int nVersion = -1;
+            int nCount = -1;
+            int nIndex = 0;
+
+            //search for version:
+            while (nIndex < lineCount) {
+                String[] separated = lines[nIndex].split("=");
+                nIndex++;
+                if (separated.length > 1 && separated[0].equalsIgnoreCase(SERIALIZED_VERSION)) {
+                    nVersion = Integer.parseInt(separated[1]);
+                    break;
+                }
+            }
+
+            if (nVersion >= 0) {
+                //get count
+
+                while (nIndex < lineCount) {
+                    String[] separated = lines[nIndex].split("=");
+                    nIndex++;
+                    if (separated.length > 1 && separated[0].equalsIgnoreCase(SERIALIZED_COUNT)) {
+                        nCount = Integer.parseInt(separated[1]);
+                        break;
+                    }
+                }
+
+                if (nCount > 0 && nCount <= lineCount-2 && nCount < 20000) { //foolproof
+                    //now add nCount to the vector.
+                    double[] data = new double[nCount];
+                    int dataIndex=0;
+
+                    while (nIndex < lineCount) {
+                        double value = Double.parseDouble(lines[nIndex]);
+                        data[dataIndex++] = value;
+                        nIndex++;
+                    }
+                    setData(data, true);
+                    success = true;
+                }
+            }
+        }
+
+        return success;
+    }
+
+    private static void log(String msg) {
+        Log.v(LOGTAG, msg);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleAdvertiserService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleAdvertiserService.java
index b4a6416..5a60ad0 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleAdvertiserService.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleAdvertiserService.java
@@ -42,7 +42,7 @@
 public class BleAdvertiserService extends Service {
 
     public static final boolean DEBUG = true;
-    public static final String TAG = "BleAdvertiseService";
+    public static final String TAG = "BleAdvertiserService";
 
     public static final int COMMAND_START_ADVERTISE = 0;
     public static final int COMMAND_STOP_ADVERTISE = 1;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
index d325b65..9c5b31d 100755
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
@@ -236,8 +236,15 @@
     public void onSurfaceTextureAvailable(SurfaceTexture surface,
             int width, int height) {
         mPreviewTexture = surface;
-        mPreviewTexWidth = width;
-        mPreviewTexHeight = height;
+        if (mFormatView.getMeasuredWidth() != width
+                || mFormatView.getMeasuredHeight() != height) {
+            mPreviewTexWidth = mFormatView.getMeasuredWidth();
+            mPreviewTexHeight = mFormatView.getMeasuredHeight();
+         } else {
+            mPreviewTexWidth = width;
+            mPreviewTexHeight = height;
+        }
+
         if (mCamera != null) {
             startPreview();
         }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java
index 5b034fe..3037376 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java
@@ -497,6 +497,7 @@
                         mSocketWriteQueue.clear();
                         mOpenSocket.close();
                         mOpenSocket = null;
+                        mSocketWriteRunnable.setOpenSocket(null);
                         Logt.i(TAG, "Socket disconnected");
                     }
                 } catch (java.io.IOException e) {
@@ -509,9 +510,12 @@
             Logt.i(TAG, "Socket server loop exited");
             mThreadExitFlag = true;
             try {
-                if (mOpenSocket != null) {
-                    mOpenSocket.close();
-                    mOpenSocket = null;
+                synchronized(mSocketWriteDrainLock) {
+                    if (mOpenSocket != null) {
+                        mOpenSocket.close();
+                        mOpenSocket = null;
+                        mSocketWriteRunnable.setOpenSocket(null);
+                    }
                 }
             } catch (java.io.IOException e) {
                 Logt.w(TAG, "Exception closing socket");
@@ -1152,25 +1156,34 @@
             }
 
             // Initiate the captures.
+            long maxExpTimeNs = -1;
             for (int i = 0; i < requests.size(); i++) {
+                CaptureRequest.Builder req = requests.get(i);
                 // For DNG captures, need the LSC map to be available.
                 if (mCaptureRawIsDng) {
-                    requests.get(i).set(CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE, 1);
+                    req.set(CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE, 1);
+                }
+                Long expTimeNs = req.get(CaptureRequest.SENSOR_EXPOSURE_TIME);
+                if (expTimeNs != null && expTimeNs > maxExpTimeNs) {
+                    maxExpTimeNs = expTimeNs;
                 }
 
-                CaptureRequest.Builder req = requests.get(i);
                 for (int j = 0; j < numSurfaces; j++) {
                     req.addTarget(mOutputImageReaders[j].getSurface());
                 }
                 mSession.capture(req.build(), mCaptureResultListener, mResultHandler);
             }
 
+            long timeout = TIMEOUT_CALLBACK * 1000;
+            if (maxExpTimeNs > 0) {
+                timeout += maxExpTimeNs / 1000000; // ns to ms
+            }
             // Make sure all callbacks have been hit (wait until captures are done).
             // If no timeouts are received after a timeout, then fail.
             int currentCount = mCountCallbacksRemaining.get();
             while (currentCount > 0) {
                 try {
-                    Thread.sleep(TIMEOUT_CALLBACK*1000);
+                    Thread.sleep(timeout);
                 } catch (InterruptedException e) {
                     throw new ItsException("Timeout failure", e);
                 }
@@ -1282,8 +1295,8 @@
                         CaptureRequest.REPROCESS_EFFECTIVE_EXPOSURE_FACTOR));
 
                 inputReqest.set(CaptureRequest.NOISE_REDUCTION_MODE,
-                        CaptureRequest.NOISE_REDUCTION_MODE_OFF);
-                inputReqest.set(CaptureRequest.EDGE_MODE, CaptureRequest.EDGE_MODE_OFF);
+                        CaptureRequest.NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG);
+                inputReqest.set(CaptureRequest.EDGE_MODE, CaptureRequest.EDGE_MODE_ZERO_SHUTTER_LAG);
                 inputReqest.set(CaptureRequest.REPROCESS_EFFECTIVE_EXPOSURE_FACTOR, null);
                 inputReqest.addTarget(mInputImageReader.getSurface());
                 mSession.capture(inputReqest.build(), captureCallbackWaiter, mResultHandler);
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/orientation/CameraOrientationActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/orientation/CameraOrientationActivity.java
index 273d78a..49b34fd 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/orientation/CameraOrientationActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/orientation/CameraOrientationActivity.java
@@ -389,6 +389,7 @@
         int targetWidth = w;
 
         boolean aspectRatio = true;
+        boolean maintainCeiling = true;
         while(true) {
             for (Camera.Size size : sizes) {
                 if(aspectRatio) {
@@ -399,20 +400,27 @@
                 }
                 curDiff = Math.abs(size.height - targetHeight) +
                         Math.abs(size.width - targetWidth);
-                if (curDiff < minDiff
+                if (maintainCeiling && curDiff < minDiff
                         && size.height <= targetHeight
                         && size.width <= targetWidth) {
                     optimalSize = size;
                     minDiff = curDiff;
+                } else if (maintainCeiling == false
+                               && curDiff < minDiff) {
+                    //try to get as close as possible
+                    optimalSize = size;
+                    minDiff = curDiff;
                 }
             }
-            if (optimalSize == null) {
+            if (optimalSize == null && aspectRatio == true) {
                 // Cannot find a match, so repeat search and
                 // ignore aspect ratio requirement
                 aspectRatio = false;
-                continue;
-            }
-            else {
+            } else if (maintainCeiling == true) {
+                //Camera resolutions are greater than ceiling provided
+                //lets try to get as close as we can
+                maintainCeiling = false;
+            } else {
                 break;
             }
         }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
index 48ce03c..0a397e8 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
@@ -268,6 +268,7 @@
                 @Override
                 public void onCompletion(MediaPlayer mp) {
                     isPlayingBack = false;
+                    mPlaybackView.stopPlayback();
                     captureButton.setEnabled(true);
                     mStatusLabel.setText(getResources().getString(R.string.status_ready));
                 }
@@ -562,7 +563,7 @@
         if (matchedSize == null) {
             for (int i = mPreviewSizes.size() - 1; i >= 0; i--) {
                 if (Math.abs((float)mPreviewSizes.get(i).width * recordSize.height /
-                        mPreviewSizes.get(i).height / recordSize.width - 1) < 0.1) {
+                        mPreviewSizes.get(i).height / recordSize.width - 1) < 0.12) {
                     matchedSize = mCamera.new Size(mPreviewSizes.get(i).width,
                             mPreviewSizes.get(i).height);
                     break;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
index 36acf42..51e0a62 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
@@ -230,6 +230,10 @@
             new Feature("android.software.voice_recognizers", false),
     };
 
+    public static final Feature[] ALL_MNC_FEATURES = {
+            new Feature(PackageManager.FEATURE_MIDI, false),
+    };
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -261,6 +265,9 @@
 
         // add features from latest to last so that the latest requirements are put in the set first
         int apiVersion = Build.VERSION.SDK_INT;
+        if (apiVersion >= Build.VERSION_CODES.M) {
+            Collections.addAll(features, ALL_MNC_FEATURES);
+        }
         if (apiVersion >= Build.VERSION_CODES.LOLLIPOP) {
             Collections.addAll(features, ALL_LOLLIPOP_FEATURES);
         }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
index 112a6e3..bee1241 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
@@ -16,33 +16,24 @@
 
 package com.android.cts.verifier.managedprovisioning;
 
-import android.app.AlertDialog;
 import android.app.admin.DevicePolicyManager;
 import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.provider.Settings;
 import android.util.Log;
-import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.View.OnClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.TextView;
 import android.widget.Toast;
 
-import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.ArrayTestListAdapter;
+import com.android.cts.verifier.DialogTestListActivity;
 import com.android.cts.verifier.R;
 import com.android.cts.verifier.TestListActivity;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.android.cts.verifier.TestListAdapter.TestListItem;
+import com.android.cts.verifier.TestResult;
 
 /**
  * CTS verifier test for BYOD managed provisioning flow.
@@ -55,64 +46,50 @@
  * The first two verifications are performed automatically, by interacting with profile owner using
  * cross-profile intents, while the last two are carried out manually by the user.
  */
-public class ByodFlowTestActivity extends PassFailButtons.ListActivity {
+public class ByodFlowTestActivity extends DialogTestListActivity {
 
     private final String TAG = "ByodFlowTestActivity";
+    private static final int REQUEST_MANAGED_PROVISIONING = 0;
     private static final int REQUEST_PROFILE_OWNER_STATUS = 1;
     private static final int REQUEST_INTENT_FILTERS_STATUS = 2;
 
     private ComponentName mAdminReceiverComponent;
 
-    private TestAdapter mTestListAdapter;
-    private View mStartProvisioningButton;
-    private List<TestItem> mTests = new ArrayList<TestItem>();
+    private DialogTestListItem mProfileOwnerInstalled;
+    private DialogTestListItem mProfileAccountVisibleTest;
+    private DialogTestListItem mDeviceAdminVisibleTest;
+    private DialogTestListItem mWorkAppVisibleTest;
+    private DialogTestListItem mCrossProfileIntentFiltersTest;
+    private DialogTestListItem mDisableNonMarketTest;
+    private DialogTestListItem mEnableNonMarketTest;
+    private DialogTestListItem mWorkNotificationBadgedTest;
+    private DialogTestListItem mWorkStatusBarIconTest;
+    private DialogTestListItem mWorkStatusBarToastTest;
+    private DialogTestListItem mAppSettingsVisibleTest;
+    private DialogTestListItem mLocationSettingsVisibleTest;
+    private DialogTestListItem mCredSettingsVisibleTest;
+    private DialogTestListItem mPrintSettingsVisibleTest;
+    private DialogTestListItem mIntentFiltersTest;
+    private DialogTestListItem mPermissionLockdownTest;
+    private DialogTestListItem mCrossProfileImageCaptureSupportTest;
+    private DialogTestListItem mCrossProfileVideoCaptureSupportTest;
+    private DialogTestListItem mCrossProfileAudioCaptureSupportTest;
+    private TestListItem mKeyguardDisabledFeaturesTest;
 
-    protected DevicePolicyManager mDevicePolicyManager;
-
-    private TestItem mProfileOwnerInstalled;
-    private TestItem mProfileAccountVisibleTest;
-    private TestItem mDeviceAdminVisibleTest;
-    private TestItem mWorkAppVisibleTest;
-    private TestItem mCrossProfileIntentFiltersTest;
-    private TestItem mDisableNonMarketTest;
-    private TestItem mEnableNonMarketTest;
-    private TestItem mWorkNotificationBadgedTest;
-    private TestItem mWorkStatusBarIconTest;
-    private TestItem mWorkStatusBarToastTest;
-    private TestItem mAppSettingsVisibleTest;
-    private TestItem mLocationSettingsVisibleTest;
-    private TestItem mCredSettingsVisibleTest;
-    private TestItem mPrintSettingsVisibleTest;
-    private TestItem mIntentFiltersTest;
-    private TestItem mCrossProfileImageCaptureSupportTest;
-    private TestItem mCrossProfileVideoCaptureSupportTest;
-    private TestItem mCrossProfileAudioCaptureSupportTest;
-
-    private int mCurrentTestPosition;
+    public ByodFlowTestActivity() {
+        super(R.layout.provisioning_byod,
+                R.string.provisioning_byod, R.string.provisioning_byod_info,
+                R.string.provisioning_byod_instructions);
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mAdminReceiverComponent = new ComponentName(this, DeviceAdminTestReceiver.class.getName());
-        mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
+
         disableComponent();
-
-        setContentView(R.layout.provisioning_byod);
-        setInfoResources(R.string.provisioning_byod, R.string.provisioning_byod_info, -1);
-        setPassFailButtonClickListeners();
-        getPassButton().setEnabled(false);
-        setResult(RESULT_CANCELED);
-
-        setupTests();
-
-        mTestListAdapter = new TestAdapter(this);
-        setListAdapter(mTestListAdapter);
-        mTestListAdapter.addAll(mTests);
-
-        mCurrentTestPosition = 0;
-
-        mStartProvisioningButton = findViewById(R.id.byod_start);
-        mStartProvisioningButton.setOnClickListener(new OnClickListener() {
+        mPrepareTestButton.setText(R.string.provisioning_byod_start);
+        mPrepareTestButton.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
                 startByodProvisioning();
@@ -138,25 +115,34 @@
         // This is called when managed provisioning completes successfully without reboot.
         super.onNewIntent(intent);
         if (ByodHelperActivity.ACTION_PROFILE_OWNER_STATUS.equals(intent.getAction())) {
-            handleStatusUpdate(intent);
+            handleStatusUpdate(RESULT_OK, intent);
         }
     }
 
     @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        // Called after queryProfileOwner()
-        if (requestCode == REQUEST_PROFILE_OWNER_STATUS && resultCode == RESULT_OK) {
-            handleStatusUpdate(data);
-            // Called after checkIntentFilters()
-        } else if (requestCode == REQUEST_INTENT_FILTERS_STATUS) {
-            handleIntentFiltersStatus(resultCode);
+    protected void handleActivityResult(int requestCode, int resultCode, Intent data) {
+        switch (requestCode) {
+            case REQUEST_MANAGED_PROVISIONING:
+                return;
+            case REQUEST_PROFILE_OWNER_STATUS: {
+                // Called after queryProfileOwner()
+                handleStatusUpdate(resultCode, data);
+            } break;
+            case REQUEST_INTENT_FILTERS_STATUS: {
+                // Called after checkIntentFilters()
+                handleIntentFiltersStatus(resultCode);
+            } break;
+            default: {
+                super.handleActivityResult(requestCode, resultCode, data);
+            }
         }
     }
 
-    private void handleStatusUpdate(Intent data) {
-        boolean provisioned = data.getBooleanExtra(ByodHelperActivity.EXTRA_PROVISIONED, false);
-        setTestResult(mProfileOwnerInstalled, provisioned ? TestResult.Passed : TestResult.Failed);
+    private void handleStatusUpdate(int resultCode, Intent data) {
+        boolean provisioned = data != null &&
+                data.getBooleanExtra(ByodHelperActivity.EXTRA_PROVISIONED, false);
+        setTestResult(mProfileOwnerInstalled, (provisioned && resultCode == RESULT_OK) ?
+                TestResult.TEST_RESULT_PASSED : TestResult.TEST_RESULT_FAILED);
     }
 
     @Override
@@ -167,10 +153,13 @@
         super.finish();
     }
 
-    private void setupTests() {
-        mProfileOwnerInstalled = new TestItem(this, R.string.provisioning_byod_profileowner) {
+    @Override
+    protected void setupTests(ArrayTestListAdapter adapter) {
+        mProfileOwnerInstalled = new DialogTestListItem(this,
+                R.string.provisioning_byod_profileowner,
+                "BYOD_ProfileOwnerInstalled") {
             @Override
-            public void performTest(ByodFlowTestActivity activity) {
+            public void performTest(DialogTestListActivity activity) {
                 queryProfileOwner(true);
             }
         };
@@ -179,113 +168,150 @@
          * To keep the image in this test up to date, use the instructions in
          * {@link ByodIconSamplerActivity}.
          */
-        mWorkAppVisibleTest = new TestItemWithIcon(this,
+        mWorkAppVisibleTest = new DialogTestListItemWithIcon(this,
                 R.string.provisioning_byod_workapps_visible,
+                "BYOD_WorkAppVisibleTest",
                 R.string.provisioning_byod_workapps_visible_instruction,
                 new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),
                 R.drawable.badged_icon);
 
-        mWorkNotificationBadgedTest = new TestItemWithIcon(this,
+        mWorkNotificationBadgedTest = new DialogTestListItemWithIcon(this,
                 R.string.provisioning_byod_work_notification,
+                "BYOD_WorkNotificationBadgedTest",
                 R.string.provisioning_byod_work_notification_instruction,
                 new Intent(WorkNotificationTestActivity.ACTION_WORK_NOTIFICATION),
                 R.drawable.ic_corp_icon);
 
         Intent workStatusIcon = new Intent(WorkStatusTestActivity.ACTION_WORK_STATUS_ICON);
         workStatusIcon.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mWorkStatusBarIconTest = new TestItemWithIcon(this,
+        mWorkStatusBarIconTest = new DialogTestListItemWithIcon(this,
                 R.string.provisioning_byod_work_status_icon,
+                "BYOD_WorkStatusBarIconTest",
                 R.string.provisioning_byod_work_status_icon_instruction,
                 workStatusIcon,
                 R.drawable.stat_sys_managed_profile_status);
 
         Intent workStatusToast = new Intent(WorkStatusTestActivity.ACTION_WORK_STATUS_TOAST);
         workStatusToast.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mWorkStatusBarToastTest = new TestItem(this,
+        mWorkStatusBarToastTest = new DialogTestListItem(this,
                 R.string.provisioning_byod_work_status_toast,
+                "BYOD_WorkStatusBarToastTest",
                 R.string.provisioning_byod_work_status_toast_instruction,
                 workStatusToast);
 
-        mDisableNonMarketTest = new TestItem(this, R.string.provisioning_byod_nonmarket_deny,
+        mDisableNonMarketTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_nonmarket_deny,
+                "BYOD_DisableNonMarketTest",
                 R.string.provisioning_byod_nonmarket_deny_info,
                 new Intent(ByodHelperActivity.ACTION_INSTALL_APK)
                         .putExtra(ByodHelperActivity.EXTRA_ALLOW_NON_MARKET_APPS, false));
 
-        mEnableNonMarketTest = new TestItem(this, R.string.provisioning_byod_nonmarket_allow,
+        mEnableNonMarketTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_nonmarket_allow,
+                "BYOD_EnableNonMarketTest",
                 R.string.provisioning_byod_nonmarket_allow_info,
                 new Intent(ByodHelperActivity.ACTION_INSTALL_APK)
                         .putExtra(ByodHelperActivity.EXTRA_ALLOW_NON_MARKET_APPS, true));
 
-        mProfileAccountVisibleTest = new TestItem(this, R.string.provisioning_byod_profile_visible,
+        mProfileAccountVisibleTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_profile_visible,
+                "BYOD_ProfileAccountVisibleTest",
                 R.string.provisioning_byod_profile_visible_instruction,
                 new Intent(Settings.ACTION_SETTINGS));
 
-        mAppSettingsVisibleTest = new TestItem(this, R.string.provisioning_byod_app_settings,
+        mAppSettingsVisibleTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_app_settings,
+                "BYOD_AppSettingsVisibleTest",
                 R.string.provisioning_byod_app_settings_instruction,
                 new Intent(Settings.ACTION_APPLICATION_SETTINGS));
 
-        mDeviceAdminVisibleTest = new TestItem(this, R.string.provisioning_byod_admin_visible,
+        mDeviceAdminVisibleTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_admin_visible,
+                "BYOD_DeviceAdminVisibleTest",
                 R.string.provisioning_byod_admin_visible_instruction,
                 new Intent(Settings.ACTION_SECURITY_SETTINGS));
 
-        mCredSettingsVisibleTest = new TestItem(this, R.string.provisioning_byod_cred_settings,
+        mCredSettingsVisibleTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_cred_settings,
+                "BYOD_CredSettingsVisibleTest",
                 R.string.provisioning_byod_cred_settings_instruction,
                 new Intent(Settings.ACTION_SECURITY_SETTINGS));
 
-        mLocationSettingsVisibleTest = new TestItem(this,
+        mLocationSettingsVisibleTest = new DialogTestListItem(this,
                 R.string.provisioning_byod_location_settings,
+                "BYOD_LocationSettingsVisibleTest",
                 R.string.provisioning_byod_location_settings_instruction,
                 new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
 
-        mPrintSettingsVisibleTest = new TestItem(this, R.string.provisioning_byod_print_settings,
+        mPrintSettingsVisibleTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_print_settings,
+                "BYOD_PrintSettingsVisibleTest",
                 R.string.provisioning_byod_print_settings_instruction,
                 new Intent(Settings.ACTION_PRINT_SETTINGS));
 
         Intent intent = new Intent(CrossProfileTestActivity.ACTION_CROSS_PROFILE);
         Intent chooser = Intent.createChooser(intent,
                 getResources().getString(R.string.provisioning_cross_profile_chooser));
-        mCrossProfileIntentFiltersTest = new TestItem(this,
+        mCrossProfileIntentFiltersTest = new DialogTestListItem(this,
                 R.string.provisioning_byod_cross_profile,
+                "BYOD_CrossProfileIntentFiltersTest",
                 R.string.provisioning_byod_cross_profile_instruction,
                 chooser);
 
+        mKeyguardDisabledFeaturesTest = TestListItem.newTest(this,
+                R.string.provisioning_byod_keyguard_disabled_features,
+                KeyguardDisabledFeaturesActivity.class.getName(),
+                new Intent(this, KeyguardDisabledFeaturesActivity.class), null);
+
         // Test for checking if the required intent filters are set during managed provisioning.
-        mIntentFiltersTest = new TestItem(this,
-                R.string.provisioning_byod_cross_profile_intent_filters) {
+        mIntentFiltersTest = new DialogTestListItem(this,
+                R.string.provisioning_byod_cross_profile_intent_filters,
+                "BYOD_IntentFiltersTest") {
             @Override
-            public void performTest(ByodFlowTestActivity activity) {
+            public void performTest(DialogTestListActivity activity) {
                 checkIntentFilters();
             }
         };
+        
+        Intent permissionCheckIntent = new Intent(
+                PermissionLockdownTestActivity.ACTION_MANAGED_PROFILE_CHECK_PERMISSION_LOCKDOWN);
+        mPermissionLockdownTest = new DialogTestListItem(this,
+                R.string.device_profile_owner_permission_lockdown_test,
+                "BYOD_PermissionLockdownTest",
+                R.string.profile_owner_permission_lockdown_test_info,
+                permissionCheckIntent);
 
-        mTests.add(mProfileOwnerInstalled);
+        adapter.add(mProfileOwnerInstalled);
 
         // Badge related tests
-        mTests.add(mWorkAppVisibleTest);
-        mTests.add(mWorkNotificationBadgedTest);
-        mTests.add(mWorkStatusBarIconTest);
-        mTests.add(mWorkStatusBarToastTest);
+        adapter.add(mWorkAppVisibleTest);
+        adapter.add(mWorkNotificationBadgedTest);
+        adapter.add(mWorkStatusBarIconTest);
+        adapter.add(mWorkStatusBarToastTest);
 
         // Settings related tests.
-        mTests.add(mProfileAccountVisibleTest);
-        mTests.add(mDeviceAdminVisibleTest);
-        mTests.add(mCredSettingsVisibleTest);
-        mTests.add(mAppSettingsVisibleTest);
-        mTests.add(mLocationSettingsVisibleTest);
-        mTests.add(mPrintSettingsVisibleTest);
+        adapter.add(mProfileAccountVisibleTest);
+        adapter.add(mDeviceAdminVisibleTest);
+        adapter.add(mCredSettingsVisibleTest);
+        adapter.add(mAppSettingsVisibleTest);
+        adapter.add(mLocationSettingsVisibleTest);
+        adapter.add(mPrintSettingsVisibleTest);
 
-        mTests.add(mCrossProfileIntentFiltersTest);
-        mTests.add(mDisableNonMarketTest);
-        mTests.add(mEnableNonMarketTest);
-        mTests.add(mIntentFiltersTest);
+        adapter.add(mCrossProfileIntentFiltersTest);
+        adapter.add(mDisableNonMarketTest);
+        adapter.add(mEnableNonMarketTest);
+        adapter.add(mIntentFiltersTest);
+        adapter.add(mPermissionLockdownTest);
+        adapter.add(mKeyguardDisabledFeaturesTest);
 
         if (canResolveIntent(ByodHelperActivity.getCaptureImageIntent())) {
             // Capture image intent can be resolved in primary profile, so test.
-            mCrossProfileImageCaptureSupportTest = new TestItem(this,
+            mCrossProfileImageCaptureSupportTest = new DialogTestListItem(this,
                     R.string.provisioning_byod_capture_image_support,
+                    "BYOD_CrossProfileImageCaptureSupportTest",
                     R.string.provisioning_byod_capture_image_support_info,
                     new Intent(ByodHelperActivity.ACTION_CAPTURE_AND_CHECK_IMAGE));
-            mTests.add(mCrossProfileImageCaptureSupportTest);
+            adapter.add(mCrossProfileImageCaptureSupportTest);
         } else {
             // Capture image intent cannot be resolved in primary profile, so skip test.
             Toast.makeText(ByodFlowTestActivity.this,
@@ -295,11 +321,12 @@
 
         if (canResolveIntent(ByodHelperActivity.getCaptureVideoIntent())) {
             // Capture video intent can be resolved in primary profile, so test.
-            mCrossProfileVideoCaptureSupportTest = new TestItem(this,
+            mCrossProfileVideoCaptureSupportTest = new DialogTestListItem(this,
                     R.string.provisioning_byod_capture_video_support,
+                    "BYOD_CrossProfileVideoCaptureSupportTest",
                     R.string.provisioning_byod_capture_video_support_info,
                     new Intent(ByodHelperActivity.ACTION_CAPTURE_AND_CHECK_VIDEO));
-            mTests.add(mCrossProfileVideoCaptureSupportTest);
+            adapter.add(mCrossProfileVideoCaptureSupportTest);
         } else {
             // Capture video intent cannot be resolved in primary profile, so skip test.
             Toast.makeText(ByodFlowTestActivity.this,
@@ -310,11 +337,12 @@
         /* TODO: reinstate when bug b/20131958 is fixed
         if (canResolveIntent(ByodHelperActivity.getCaptureAudioIntent())) {
             // Capture audio intent can be resolved in primary profile, so test.
-            mCrossProfileAudioCaptureSupportTest = new TestItem(this,
+            mCrossProfileAudioCaptureSupportTest = new DialogTestListItem(this,
                     R.string.provisioning_byod_capture_audio_support,
+                    "BYOD_CrossProfileAudioCaptureSupportTest",
                     R.string.provisioning_byod_capture_audio_support_info,
                     new Intent(ByodHelperActivity.ACTION_CAPTURE_AND_CHECK_AUDIO));
-            mTests.add(mCrossProfileAudioCaptureSupportTest);
+            adapter.add(mCrossProfileAudioCaptureSupportTest);
         } else {
             // Capture audio intent cannot be resolved in primary profile, so skip test.
             Toast.makeText(ByodFlowTestActivity.this,
@@ -324,67 +352,18 @@
         */
     }
 
-    @Override
-    protected void onListItemClick(ListView l, View v, int position, long id) {
-        super.onListItemClick(l, v, position, id);
-        mCurrentTestPosition = position;
-        TestItem test = (TestItem) getListAdapter().getItem(position);
-        test.performTest(this);
-    }
-
     // Return whether the intent can be resolved in the current profile
     private boolean canResolveIntent(Intent intent) {
         return intent.resolveActivity(getPackageManager()) != null;
     }
 
-    private void showManualTestDialog(final TestItem test) {
-        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this)
-                .setIcon(android.R.drawable.ic_dialog_info)
-                .setTitle(R.string.provisioning_byod)
-                .setNeutralButton(R.string.provisioning_byod_go, null)
-                .setPositiveButton(R.string.pass_button_text, new AlertDialog.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        clearRemainingState(test);
-                        setTestResult(test, TestResult.Passed);
-                    }
-                })
-                .setNegativeButton(R.string.fail_button_text, new AlertDialog.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        clearRemainingState(test);
-                        setTestResult(test, TestResult.Failed);
-                    }
-                });
-        View customView = test.getCustomView();
-        if (customView != null) {
-            dialogBuilder.setView(customView);
-        } else {
-            dialogBuilder.setMessage(test.getManualTestInstruction());
-        }
-        final AlertDialog dialog = dialogBuilder.show();
-        // Note: Setting the OnClickListener on the Dialog rather than the Builder, prevents the
-        // dialog being dismissed on onClick.
-        dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                try {
-                    ByodFlowTestActivity.this.startActivity(test.getManualTestIntent());
-                } catch (ActivityNotFoundException e) {
-                    Toast.makeText(ByodFlowTestActivity.this,
-                            "Cannot start " + test.getManualTestIntent(), Toast.LENGTH_LONG).show();
-                    setTestResult(test, TestResult.Failed);
-                    dialog.dismiss();
-                }
-            }
-        });
-    }
-
-    private void clearRemainingState(final TestItem test) {
+    @Override
+    protected void clearRemainingState(final DialogTestListItem test) {
+        super.clearRemainingState(test);
         if (WorkNotificationTestActivity.ACTION_WORK_NOTIFICATION.equals(
                 test.getManualTestIntent().getAction())) {
             try {
-                ByodFlowTestActivity.this.startActivity(new Intent(
+                startActivity(new Intent(
                         WorkNotificationTestActivity.ACTION_CLEAR_WORK_NOTIFICATION));
             } catch (ActivityNotFoundException e) {
                 // User shouldn't run this test before work profile is set up.
@@ -392,19 +371,6 @@
         }
     }
 
-    private void setTestResult(TestItem test, TestResult result) {
-        test.setPassFailState(result);
-
-        boolean testSucceeds = true;
-        for(TestItem aTest : mTests) {
-            testSucceeds &= (aTest.getPassFailState() == TestResult.Passed);
-        }
-        getPassButton().setEnabled(testSucceeds);
-        mTestListAdapter.notifyDataSetChanged();
-
-        this.getListView().smoothScrollToPosition(mCurrentTestPosition + 1);
-    }
-
     private void startByodProvisioning() {
         Intent sending = new Intent(DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE);
         sending.putExtra(DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME,
@@ -413,7 +379,7 @@
         if (sending.resolveActivity(getPackageManager()) != null) {
             // ManagedProvisioning must be started with startActivityForResult, but we don't
             // care about the result, so passing 0 as a requestCode
-            startActivityForResult(sending, 0);
+            startActivityForResult(sending, REQUEST_MANAGED_PROVISIONING);
         } else {
             showToast(R.string.provisioning_byod_disabled);
         }
@@ -426,7 +392,7 @@
         }
         catch (ActivityNotFoundException e) {
             Log.d(TAG, "queryProfileOwner: ActivityNotFoundException", e);
-            setTestResult(mProfileOwnerInstalled, TestResult.Failed);
+            setTestResult(mProfileOwnerInstalled, TestResult.TEST_RESULT_FAILED);
             if (showToast) {
                 showToast(R.string.provisioning_byod_no_activity);
             }
@@ -452,7 +418,7 @@
             startActivityForResult(intent, REQUEST_INTENT_FILTERS_STATUS);
         } catch (ActivityNotFoundException e) {
             Log.d(TAG, "checkIntentFilters: ActivityNotFoundException", e);
-            setTestResult(mIntentFiltersTest, TestResult.Failed);
+            setTestResult(mIntentFiltersTest, TestResult.TEST_RESULT_FAILED);
             showToast(R.string.provisioning_byod_no_activity);
         }
     }
@@ -470,142 +436,22 @@
         final boolean intentFiltersSet =
                 intentFiltersSetForPrimaryIntents & intentFiltersSetForManagedIntents;
         setTestResult(mIntentFiltersTest,
-                intentFiltersSet ? TestResult.Passed : TestResult.Failed);
+                intentFiltersSet ? TestResult.TEST_RESULT_PASSED : TestResult.TEST_RESULT_FAILED);
     }
 
     private void disableComponent() {
         // Disable app components in the current profile, so only the counterpart in the other profile
         // can respond (via cross-profile intent filter)
-        getPackageManager().setComponentEnabledSetting(new ComponentName(
-                this, ByodHelperActivity.class),
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                PackageManager.DONT_KILL_APP);
-        getPackageManager().setComponentEnabledSetting(new ComponentName(
-                this, WorkNotificationTestActivity.class),
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                PackageManager.DONT_KILL_APP);
-        getPackageManager().setComponentEnabledSetting(new ComponentName(
-                this, WorkStatusTestActivity.class),
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                PackageManager.DONT_KILL_APP);
-    }
-
-    private void showToast(int messageId) {
-        String message = getString(messageId);
-        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
-    }
-
-    enum TestResult {
-        Unknown, Failed, Passed
-    }
-
-    static class TestItem {
-
-        private String mDisplayName;
-        private TestResult mPassed;
-        private boolean mManualTest;
-        private String mManualInstruction;
-        private Intent mManualIntent;
-
-        public TestItem(Context context, int nameResId) {
-            mDisplayName = context.getString(nameResId);
-            mPassed = TestResult.Unknown;
-            mManualTest = false;
-        }
-
-        public void performTest(ByodFlowTestActivity activity) {
-            if (isManualTest()) {
-                activity.showManualTestDialog(this);
-            }
-        }
-
-        public TestItem(Context context, int nameResId, int testInstructionResId, Intent testIntent) {
-            mDisplayName = context.getString(nameResId);
-            mPassed = TestResult.Unknown;
-            mManualTest = true;
-            mManualInstruction = context.getString(testInstructionResId);
-            mManualIntent = testIntent;
-        }
-
-        @Override
-        public String toString() {
-            return mDisplayName;
-        }
-
-        TestResult getPassFailState() {
-            return mPassed;
-        }
-
-        void setPassFailState(TestResult state) {
-            mPassed = state;
-        }
-
-        public boolean isManualTest() {
-            return mManualTest;
-        }
-
-        public String getManualTestInstruction() {
-            return mManualInstruction;
-        }
-
-        public Intent getManualTestIntent() {
-            return mManualIntent;
-        }
-
-        public View getCustomView() {
-            return null;
-        }
-    }
-
-    static class TestItemWithIcon extends TestItem {
-
-        private int mImageResId;
-        private Context mContext;
-
-        public TestItemWithIcon(Context context, int nameResId, int testInstructionResId,
-                Intent testIntent, int imageResId) {
-            super(context, nameResId, testInstructionResId, testIntent);
-            mContext = context;
-            mImageResId = imageResId;
-        }
-
-        @Override
-        public View getCustomView() {
-            LayoutInflater layoutInflater = LayoutInflater.from(mContext);
-            View view = layoutInflater.inflate(R.layout.byod_custom_view,
-                    null /* root */);
-            ((ImageView) view.findViewById(R.id.sample_icon)).setImageResource(mImageResId);
-            ((TextView) view.findViewById(R.id.message)).setText(getManualTestInstruction());
-            return view;
-        }
-    }
-
-    static class TestAdapter extends ArrayAdapter<TestItem> {
-
-        public TestAdapter(Context context) {
-            super(context, android.R.layout.simple_list_item_1);
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            TextView view = (TextView) super.getView(position, convertView, parent);
-
-            TestItem item = getItem(position);
-            int backgroundResource = 0;
-            int iconResource = 0;
-            if (item.getPassFailState() == TestResult.Passed) {
-                backgroundResource = R.drawable.test_pass_gradient;
-                iconResource = R.drawable.fs_good;
-            } else if (item.getPassFailState() == TestResult.Failed){
-                backgroundResource = R.drawable.test_fail_gradient;
-                iconResource = R.drawable.fs_error;
-            }
-            view.setBackgroundResource(backgroundResource);
-            view.setPadding(10, 0, 10, 0);
-            view.setCompoundDrawablePadding(10);
-            view.setCompoundDrawablesWithIntrinsicBounds(0, 0, iconResource, 0);
-
-            return view;
+        final String[] components = {
+            ByodHelperActivity.class.getName(),
+            WorkNotificationTestActivity.class.getName(),
+            WorkStatusTestActivity.class.getName(),
+            PermissionLockdownTestActivity.ACTIVITY_ALIAS
+        };
+        for (String component : components) {
+            getPackageManager().setComponentEnabledSetting(new ComponentName(this, component),
+                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                    PackageManager.DONT_KILL_APP);
         }
     }
 }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
index d8a3387..09e6393 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
@@ -39,7 +39,6 @@
 import java.util.ArrayList;
 
 import com.android.cts.verifier.R;
-import com.android.cts.verifier.managedprovisioning.ByodFlowTestActivity.TestResult;
 import com.android.cts.verifier.managedprovisioning.ByodPresentMediaDialog.DialogCallback;
 
 /**
@@ -68,8 +67,13 @@
     public static final String ACTION_CAPTURE_AND_CHECK_VIDEO = "com.android.cts.verifier.managedprovisioning.BYOD_CAPTURE_AND_CHECK_VIDEO";
     // Primage -> managed intent: request to capture and check an audio recording
     public static final String ACTION_CAPTURE_AND_CHECK_AUDIO = "com.android.cts.verifier.managedprovisioning.BYOD_CAPTURE_AND_CHECK_AUDIO";
+    public static final String ACTION_KEYGUARD_DISABLED_FEATURES =
+            "com.android.cts.verifier.managedprovisioning.BYOD_KEYGUARD_DISABLED_FEATURES";
+    public static final String ACTION_LOCKNOW =
+            "com.android.cts.verifier.managedprovisioning.BYOD_LOCKNOW";
 
     public static final String EXTRA_PROVISIONED = "extra_provisioned";
+    public static final String EXTRA_PARAMETER_1 = "extra_parameter_1";
 
     // Primary -> managed intent: set unknown sources restriction and install package
     public static final String ACTION_INSTALL_APK = "com.android.cts.verifier.managedprovisioning.BYOD_INSTALL_APK";
@@ -188,6 +192,14 @@
                 finish();
             }
             return;
+        } else if (ACTION_KEYGUARD_DISABLED_FEATURES.equals(action)) {
+            final int value = intent.getIntExtra(EXTRA_PARAMETER_1,
+                    DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE);
+            ComponentName admin = DeviceAdminTestReceiver.getReceiverComponentName();
+            mDevicePolicyManager.setKeyguardDisabledFeatures(admin, value);
+        } else if (ACTION_LOCKNOW.equals(action)) {
+            mDevicePolicyManager.lockNow();
+            setResult(RESULT_OK);
         }
         // This activity has no UI and is only used to respond to CtsVerifier in the primary side.
         finish();
@@ -268,6 +280,10 @@
         return new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
     }
 
+    public static Intent createLockIntent() {
+        return new Intent(ACTION_LOCKNOW);
+    }
+
     private Uri getTempUri(String fileName) {
         final File file = new File(getFilesDir() + File.separator + "images"
                 + File.separator + fileName);
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java
index ef5d62d..b18e816 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java
@@ -61,11 +61,16 @@
             filter.addAction(ByodHelperActivity.ACTION_CAPTURE_AND_CHECK_IMAGE);
             filter.addAction(ByodHelperActivity.ACTION_CAPTURE_AND_CHECK_VIDEO);
             filter.addAction(ByodHelperActivity.ACTION_CAPTURE_AND_CHECK_AUDIO);
+            filter.addAction(ByodHelperActivity.ACTION_KEYGUARD_DISABLED_FEATURES);
+            filter.addAction(ByodHelperActivity.ACTION_LOCKNOW);
             filter.addAction(CrossProfileTestActivity.ACTION_CROSS_PROFILE);
             filter.addAction(WorkNotificationTestActivity.ACTION_WORK_NOTIFICATION);
+            filter.addAction(WorkNotificationTestActivity.ACTION_WORK_NOTIFICATION_ON_LOCKSCREEN);
             filter.addAction(WorkNotificationTestActivity.ACTION_CLEAR_WORK_NOTIFICATION);
             filter.addAction(WorkStatusTestActivity.ACTION_WORK_STATUS_TOAST);
             filter.addAction(WorkStatusTestActivity.ACTION_WORK_STATUS_ICON);
+            filter.addAction(
+                    PermissionLockdownTestActivity.ACTION_MANAGED_PROFILE_CHECK_PERMISSION_LOCKDOWN);
             dpm.addCrossProfileIntentFilter(getWho(context), filter,
                     DevicePolicyManager.FLAG_MANAGED_CAN_ACCESS_PARENT);
 
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceOwnerPositiveTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceOwnerPositiveTestActivity.java
index 1a5e73c..a6a5e5a 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceOwnerPositiveTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceOwnerPositiveTestActivity.java
@@ -25,6 +25,7 @@
 import android.content.pm.PackageManager;
 import android.database.DataSetObserver;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.util.Log;
 import android.view.View;
@@ -62,12 +63,18 @@
     static final String COMMAND_SET_GLOBAL_SETTING = "set-global-setting";
     static final String COMMAND_SET_STATUSBAR_DISABLED = "set-statusbar-disabled";
     static final String COMMAND_SET_KEYGUARD_DISABLED = "set-keyguard-disabled";
+    static final String COMMAND_CHECK_PERMISSION_LOCKDOWN = "check-permission-lockdown";
     static final String EXTRA_SETTING = "extra-setting";
 
     private static final String CHECK_DEVICE_OWNER_TEST_ID = "CHECK_DEVICE_OWNER";
+    private static final String DEVICE_ADMIN_SETTINGS_ID = "DEVICE_ADMIN_SETTINGS";
     private static final String WIFI_LOCKDOWN_TEST_ID = WifiLockdownTestActivity.class.getName();
     private static final String DISABLE_STATUS_BAR_TEST_ID = "DISABLE_STATUS_BAR";
     private static final String DISABLE_KEYGUARD_TEST_ID = "DISABLE_KEYGUARD";
+    private static final String CHECK_PERMISSION_LOCKDOWN_TEST_ID =
+            PermissionLockdownTestActivity.class.getName();
+    private static final String DISALLOW_CONFIG_BT_ID = "DISALLOW_CONFIG_BT";
+    private static final String DISALLOW_CONFIG_WIFI_ID = "DISALLOW_CONFIG_WIFI";
     private static final String REMOVE_DEVICE_OWNER_TEST_ID = "REMOVE_DEVICE_OWNER";
 
     @Override
@@ -129,11 +136,49 @@
                 new Intent(this, CommandReceiver.class)
                         .putExtra(EXTRA_COMMAND, COMMAND_CHECK_DEVICE_OWNER)
                         ));
+
+        // device admin settings
+        adapter.add(createInteractiveTestItem(this, DEVICE_ADMIN_SETTINGS_ID,
+                R.string.device_owner_device_admin_visible,
+                R.string.device_owner_device_admin_visible_info,
+                new ButtonInfo(
+                        R.string.device_owner_settings_go,
+                        new Intent(Settings.ACTION_SECURITY_SETTINGS))));
+
         PackageManager packageManager = getPackageManager();
         if (packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
+            // WiFi Lock down tests
             adapter.add(createTestItem(this, WIFI_LOCKDOWN_TEST_ID,
                     R.string.device_owner_wifi_lockdown_test,
                     new Intent(this, WifiLockdownTestActivity.class)));
+
+            // DISALLOW_CONFIG_WIFI
+            adapter.add(createInteractiveTestItem(this, DISALLOW_CONFIG_WIFI_ID,
+                    R.string.device_owner_disallow_config_wifi,
+                    R.string.device_owner_disallow_config_wifi_info,
+                    new ButtonInfo[] {
+                            new ButtonInfo(
+                                    R.string.device_owner_user_restriction_set,
+                                    createSetUserRestrictionIntent(
+                                            UserManager.DISALLOW_CONFIG_WIFI)),
+                            new ButtonInfo(
+                                    R.string.device_owner_settings_go,
+                                    new Intent(Settings.ACTION_WIFI_SETTINGS))}));
+        }
+
+        // DISALLOW_CONFIG_BLUETOOTH
+        if (packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
+            adapter.add(createInteractiveTestItem(this, DISALLOW_CONFIG_BT_ID,
+                    R.string.device_owner_disallow_config_bt,
+                    R.string.device_owner_disallow_config_bt_info,
+                    new ButtonInfo[] {
+                            new ButtonInfo(
+                                    R.string.device_owner_user_restriction_set,
+                                    createSetUserRestrictionIntent(
+                                            UserManager.DISALLOW_CONFIG_BLUETOOTH)),
+                            new ButtonInfo(
+                                    R.string.device_owner_settings_go,
+                                    new Intent(Settings.ACTION_BLUETOOTH_SETTINGS))}));
         }
 
         // setStatusBarDisabled
@@ -164,6 +209,11 @@
                                 createDeviceOwnerIntentWithBooleanParameter(
                                         COMMAND_SET_KEYGUARD_DISABLED, false))}));
 
+        // setPermissionGrantState
+        adapter.add(createTestItem(this, CHECK_PERMISSION_LOCKDOWN_TEST_ID,
+                R.string.device_profile_owner_permission_lockdown_test,
+                new Intent(PermissionLockdownTestActivity.ACTION_CHECK_PERMISSION_LOCKDOWN)));
+
         // removeDeviceOwner
         adapter.add(createInteractiveTestItem(this, REMOVE_DEVICE_OWNER_TEST_ID,
                 R.string.device_owner_remove_device_owner_test,
@@ -207,6 +257,12 @@
                 .putExtra(EXTRA_PARAMETER_1, value);
     }
 
+    private Intent createSetUserRestrictionIntent(String restriction) {
+        return new Intent(this, CommandReceiver.class)
+                .putExtra(EXTRA_COMMAND, COMMAND_ADD_USER_RESTRICTION)
+                .putExtra(EXTRA_RESTRICTION, restriction);
+    }
+
     public static class CommandReceiver extends Activity {
         @Override
         public void onCreate(Bundle savedInstanceState) {
@@ -268,6 +324,8 @@
 
             dpm.setStatusBarDisabled(admin, false);
             dpm.setKeyguardDisabled(admin, false);
+            dpm.clearUserRestriction(admin, UserManager.DISALLOW_CONFIG_BLUETOOTH);
+            dpm.clearUserRestriction(admin, UserManager.DISALLOW_CONFIG_WIFI);
             dpm.clearDeviceOwnerApp(getPackageName());
         }
     }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/KeyguardDisabledFeaturesActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/KeyguardDisabledFeaturesActivity.java
new file mode 100644
index 0000000..0fdc498
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/KeyguardDisabledFeaturesActivity.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.managedprovisioning;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.hardware.fingerprint.FingerprintManager;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.view.View;
+import android.view.View.OnClickListener;
+
+import com.android.cts.verifier.ArrayTestListAdapter;
+import com.android.cts.verifier.DialogTestListActivity;
+import com.android.cts.verifier.R;
+
+public class KeyguardDisabledFeaturesActivity extends DialogTestListActivity {
+
+    public KeyguardDisabledFeaturesActivity() {
+        super(R.layout.provisioning_byod,
+                R.string.provisioning_byod_keyguard_disabled_features,
+                R.string.provisioning_byod_keyguard_disabled_features_info,
+                R.string.provisioning_byod_keyguard_disabled_features_instruction);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mPrepareTestButton.setText(
+                R.string.provisioning_byod_keyguard_disabled_features_prepare_button);
+        mPrepareTestButton.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    resetPassword("testpassword");
+                    setKeyguardDisabledFeatures(DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS |
+                            DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT |
+                            DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
+                }
+            });
+    }
+
+    @Override
+    public void finish() {
+        // Pass and fail buttons are known to call finish() when clicked, and this is when we want to
+        // clear the password.
+        resetPassword(null);
+        super.finish();
+    }
+
+    private void setKeyguardDisabledFeatures(final int flags) {
+        Intent setKeyguardDisabledFeaturesIntent =
+                new Intent(ByodHelperActivity.ACTION_KEYGUARD_DISABLED_FEATURES)
+                .putExtra(ByodHelperActivity.EXTRA_PARAMETER_1, flags);
+        startActivity(setKeyguardDisabledFeaturesIntent);
+    }
+
+    /**
+     * Reset device password
+     * @param password password to reset to (may be null)
+     */
+    private void resetPassword(String password) {
+        DevicePolicyManager dpm = (DevicePolicyManager)
+                getSystemService(Context.DEVICE_POLICY_SERVICE);
+        dpm.resetPassword(password, 0);
+    }
+
+    @Override
+    protected void setupTests(ArrayTestListAdapter adapter) {
+        adapter.add(new DialogTestListItem(this, R.string.provisioning_byod_disable_trust_agents,
+                "BYOD_DisableTrustAgentsTest",
+                R.string.provisioning_byod_disable_trust_agents_instruction,
+                new Intent(Settings.ACTION_SECURITY_SETTINGS)));
+        adapter.add(new DialogTestListItemWithIcon(this,
+                R.string.provisioning_byod_disable_notifications,
+                "BYOD_DisableUnredactedNotifications",
+                R.string.provisioning_byod_disable_notifications_instruction,
+                new Intent(WorkNotificationTestActivity.ACTION_WORK_NOTIFICATION_ON_LOCKSCREEN),
+                R.drawable.ic_corp_icon));
+        FingerprintManager fpm = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
+        if (fpm.isHardwareDetected()) {
+            adapter.add(new DialogTestListItem(this,
+                    R.string.provisioning_byod_fingerprint_disabled_in_settings,
+                    "BYOD_FingerprintDisabledInSettings",
+                    R.string.provisioning_byod_fingerprint_disabled_in_settings_instruction,
+                    new Intent(Settings.ACTION_SECURITY_SETTINGS)));
+            adapter.add(new DialogTestListItem(this, R.string.provisioning_byod_disable_fingerprint,
+                    "BYOD_DisableFingerprint",
+                    R.string.provisioning_byod_disable_fingerprint_instruction,
+                    ByodHelperActivity.createLockIntent()));
+        }
+    }
+
+    @Override
+    protected void clearRemainingState(final DialogTestListItem test) {
+        super.clearRemainingState(test);
+        if (WorkNotificationTestActivity.ACTION_WORK_NOTIFICATION_ON_LOCKSCREEN.equals(
+                test.getManualTestIntent().getAction())) {
+            try {
+                startActivity(new Intent(
+                        WorkNotificationTestActivity.ACTION_CLEAR_WORK_NOTIFICATION));
+            } catch (ActivityNotFoundException e) {
+                // User shouldn't run this test before work profile is set up.
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/PermissionLockdownTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/PermissionLockdownTestActivity.java
new file mode 100644
index 0000000..ea7e801
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/PermissionLockdownTestActivity.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.managedprovisioning;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+public class PermissionLockdownTestActivity extends PassFailButtons.Activity
+        implements RadioGroup.OnCheckedChangeListener {
+    private static final String PERMISSION_APP_PACKAGE = "com.android.cts.permissionapp";
+
+    // Alias used for starting the activity from ByodFlowTestActivity (Managed profile tests).
+    static final String ACTIVITY_ALIAS
+            = "com.android.cts.verifier.managedprovisioning" +
+                    ".ManagedProfilePermissionLockdownTestActivity";
+
+    private static final String MANAGED_PROVISIONING_ACTION_PREFIX
+            = "com.android.cts.verifier.managedprovisioning.action.";
+    // Indicates that activity is started for device owner case.
+    static final String ACTION_CHECK_PERMISSION_LOCKDOWN
+            = MANAGED_PROVISIONING_ACTION_PREFIX + "CHECK_PERMISSION_LOCKDOWN";
+    // Indicates that activity is started for profile owner case.
+    static final String ACTION_MANAGED_PROFILE_CHECK_PERMISSION_LOCKDOWN
+            = MANAGED_PROVISIONING_ACTION_PREFIX + "MANAGED_PROFILE_CHECK_PERMISSION_LOCKDOWN";
+
+    // Permission grant states will be set on this permission.
+    private static final String CONTACTS_PERMISSION = android.Manifest.permission.READ_CONTACTS;
+
+    private boolean mDeviceOwnerTest;
+    private DevicePolicyManager mDevicePolicyManager;
+    private ComponentName mAdmin;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.permission_lockdown);
+
+        mDevicePolicyManager =
+                (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mAdmin = DeviceAdminTestReceiver.getReceiverComponentName();
+
+        mDeviceOwnerTest =
+                ACTION_CHECK_PERMISSION_LOCKDOWN.equals(getIntent().getAction()) ? true : false;
+        // Return immediately if we are neither profile nor device owner.
+        if (!isProfileOrDeviceOwner()) {
+            setTestResultAndFinish(false);
+            return;
+        }
+
+        buildLayout();
+    }
+
+    private void buildLayout() {
+        PackageManager packageManager = getPackageManager();
+        ApplicationInfo applicationInfo = null;
+        try {
+            // We need to make sure that the CtsPermissionApp is installed on the device or
+            // work profile.
+            applicationInfo = packageManager.getApplicationInfo(
+                    PERMISSION_APP_PACKAGE, 0 /* flags */);
+        } catch (PackageManager.NameNotFoundException e) {
+            showToast(getString(R.string.package_not_found, PERMISSION_APP_PACKAGE));
+            setTestResultAndFinish(false);
+            return;
+        }
+
+        ImageView packageIconImageView = (ImageView) findViewById(R.id.package_icon);
+        packageIconImageView.setImageDrawable(packageManager.getApplicationIcon(applicationInfo));
+        TextView packageNameTextView = (TextView) findViewById(R.id.package_name);
+        packageNameTextView.setText(packageManager.getApplicationLabel(applicationInfo));
+
+        TextView permissionNameTextView = (TextView) findViewById(R.id.permission_name);
+        permissionNameTextView.setText(CONTACTS_PERMISSION);
+
+        // Get the current permission grant state for initializing the RadioGroup.
+        int currentPermissionState = mDevicePolicyManager.getPermissionGrantState(mAdmin,
+                    PERMISSION_APP_PACKAGE, CONTACTS_PERMISSION);
+        RadioGroup permissionRadioGroup = (RadioGroup) findViewById(R.id.permission_group);
+        switch (currentPermissionState) {
+            case DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED: {
+                permissionRadioGroup.check(R.id.permission_allow);
+            } break;
+            case DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT: {
+                permissionRadioGroup.check(R.id.permission_default);
+            } break;
+            case  DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED: {
+                permissionRadioGroup.check(R.id.permission_deny);
+            } break;
+        }
+        permissionRadioGroup.setOnCheckedChangeListener(this);
+
+        addFinishOrPassFailButtons();
+    }
+
+    private void addFinishOrPassFailButtons() {
+        // In case of device owner, we include the pass-fail buttons where as in case of profile
+        // owner, we add a finish button.
+        ViewGroup parentView = (ViewGroup) findViewById(R.id.permission_lockdown_activity);
+        if (mDeviceOwnerTest) {
+            parentView.addView(
+                    getLayoutInflater().inflate(R.layout.pass_fail_buttons, parentView, false));
+            setInfoResources(R.string.device_profile_owner_permission_lockdown_test,
+                    R.string.device_owner_permission_lockdown_test_info, 0);
+            setPassFailButtonClickListeners();
+        } else {
+            Button finishButton = new Button(this);
+            finishButton.setText(R.string.finish_button_label);
+            finishButton.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    PermissionLockdownTestActivity.this.setTestResultAndFinish(false);
+                }
+            });
+            parentView.addView(finishButton);
+        }
+    }
+
+    // Dispatches an intent to open the Settings screen for CtsPermissionApp.
+    public void openSettings(View v) {
+        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
+                .setData(Uri.fromParts("package", PERMISSION_APP_PACKAGE, null))
+                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        try {
+            startActivity(intent);
+        } catch (ActivityNotFoundException e) {
+            showToast(getString(R.string.activity_not_found, intent));
+        }
+    }
+
+    @Override
+    public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
+        int permissionGrantState = -1;
+        switch (checkedId) {
+            case R.id.permission_allow: {
+                permissionGrantState = DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED;
+            } break;
+            case R.id.permission_default: {
+                permissionGrantState = DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT;
+            } break;
+            case R.id.permission_deny: {
+                permissionGrantState = DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED;
+            } break;
+        }
+        mDevicePolicyManager.setPermissionGrantState(mAdmin, PERMISSION_APP_PACKAGE,
+                CONTACTS_PERMISSION, permissionGrantState);
+    }
+
+    private boolean isProfileOrDeviceOwner() {
+        String adminPackage = mAdmin.getPackageName();
+        if (mDeviceOwnerTest && !mDevicePolicyManager.isDeviceOwnerApp(adminPackage)) {
+            showToast(getString(R.string.not_device_owner, adminPackage));
+            return false;
+        } else if (!mDeviceOwnerTest && !mDevicePolicyManager.isProfileOwnerApp(adminPackage)) {
+            showToast(getString(R.string.not_profile_owner, adminPackage));
+            return false;
+        }
+        return true;
+    }
+
+    private void showToast(String toast) {
+        Toast.makeText(this, toast, Toast.LENGTH_LONG).show();
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/WorkNotificationTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/WorkNotificationTestActivity.java
index c85ccf5..a912d2c 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/WorkNotificationTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/WorkNotificationTestActivity.java
@@ -19,7 +19,9 @@
 import android.app.Activity;
 import android.app.Notification;
 import android.app.NotificationManager;
+import android.app.admin.DevicePolicyManager;
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 
 import com.android.cts.verifier.R;
@@ -30,26 +32,37 @@
 public class WorkNotificationTestActivity extends Activity {
     public static final String ACTION_WORK_NOTIFICATION =
             "com.android.cts.verifier.managedprovisioning.WORK_NOTIFICATION";
+    public static final String ACTION_WORK_NOTIFICATION_ON_LOCKSCREEN =
+            "com.android.cts.verifier.managedprovisioning.LOCKSCREEN_NOTIFICATION";
     public static final String ACTION_CLEAR_WORK_NOTIFICATION =
             "com.android.cts.verifier.managedprovisioning.CLEAR_WORK_NOTIFICATION";
     private static final int NOTIFICATION_ID = 7;
+    private NotificationManager mNotificationManager;
+
+    private void showWorkNotification(int visibility) {
+        final Notification notification = new Notification.Builder(this)
+                .setSmallIcon(R.drawable.icon)
+                .setContentTitle(getString(R.string.provisioning_byod_work_notification_title))
+                .setVisibility(visibility)
+                .setAutoCancel(true)
+                .build();
+        mNotificationManager.notify(NOTIFICATION_ID, notification);
+    }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         final String action = getIntent().getAction();
-        final NotificationManager notificationManager = (NotificationManager)
-                getSystemService(Context.NOTIFICATION_SERVICE);
+        mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
         if (ACTION_WORK_NOTIFICATION.equals(action)) {
-            final Notification notification = new Notification.Builder(this)
-                .setSmallIcon(R.drawable.icon)
-                .setContentTitle(getString(R.string.provisioning_byod_work_notification_title))
-                .setVisibility(Notification.VISIBILITY_PUBLIC)
-                .setAutoCancel(true)
-                .build();
-            notificationManager.notify(NOTIFICATION_ID, notification);
+            showWorkNotification(Notification.VISIBILITY_PUBLIC);
+        } else if (ACTION_WORK_NOTIFICATION_ON_LOCKSCREEN.equals(action)) {
+            DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(
+                    Context.DEVICE_POLICY_SERVICE);
+            dpm.lockNow();
+            showWorkNotification(Notification.VISIBILITY_PRIVATE);
         } else if (ACTION_CLEAR_WORK_NOTIFICATION.equals(action)) {
-            notificationManager.cancel(NOTIFICATION_ID);
+            mNotificationManager.cancel(NOTIFICATION_ID);
         }
         finish();
     }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/LlcpVersionActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/LlcpVersionActivity.java
new file mode 100644
index 0000000..ce5a3d4
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/LlcpVersionActivity.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+package com.android.cts.verifier.nfc;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.nfc.NdefMessage;
+import android.nfc.NdefRecord;
+import android.nfc.NfcAdapter;
+import android.nfc.NfcEvent;
+import android.nfc.NfcManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.widget.TextView;
+
+import java.nio.charset.Charset;
+
+/**
+ * Test activity that sends a particular NDEF Push message to another NFC device.
+ */
+public class LlcpVersionActivity extends PassFailButtons.Activity implements
+        NfcAdapter.CreateNdefMessageCallback {
+
+    private static final int NFC_NOT_ENABLED_DIALOG_ID = 1;
+    private static final int NDEF_PUSH_NOT_ENABLED_DIALOG_ID = 2;
+
+    private NfcAdapter mNfcAdapter;
+    private TextView mTextView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.pass_fail_text);
+        setInfoResources(R.string.nfc_llcp_version_check, R.string.nfc_llcp_version_check_info, 0);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+
+        mTextView = (TextView) findViewById(R.id.text);
+        mTextView.setText(R.string.nfc_llcp_version_check_info);
+
+        NfcManager nfcManager = (NfcManager) getSystemService(NFC_SERVICE);
+        mNfcAdapter = nfcManager.getDefaultAdapter();
+    }
+
+    private static NdefMessage getTestMessage() {
+        byte[] mimeBytes = "application/com.android.cts.verifier.nfc"
+                .getBytes(Charset.forName("US-ASCII"));
+        byte[] id = new byte[] {1, 3, 3, 7};
+        byte[] payload = "CTS Verifier NDEF Push Tag".getBytes(Charset.forName("US-ASCII"));
+        return new NdefMessage(new NdefRecord[] {
+                new NdefRecord(NdefRecord.TNF_MIME_MEDIA, mimeBytes, id, payload)
+        });
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        if (!mNfcAdapter.isEnabled()) {
+            showDialog(NFC_NOT_ENABLED_DIALOG_ID);
+        } else if (!mNfcAdapter.isNdefPushEnabled()) {
+            /* Sender must have NDEF push enabled */
+            showDialog(NDEF_PUSH_NOT_ENABLED_DIALOG_ID);
+        }
+
+        mNfcAdapter.setNdefPushMessageCallback(this, this);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+    }
+
+    @Override
+    public Dialog onCreateDialog(int id, Bundle args) {
+        switch (id) {
+            case NFC_NOT_ENABLED_DIALOG_ID:
+                return NfcDialogs.createNotEnabledDialog(this);
+            case NDEF_PUSH_NOT_ENABLED_DIALOG_ID:
+                return NfcDialogs.createNdefPushNotEnabledDialog(this);
+            default:
+                return super.onCreateDialog(id, args);
+        }
+    }
+
+    @Override
+    public NdefMessage createNdefMessage(NfcEvent event) {
+        if (event.peerLlcpMajorVersion <= 1 && event.peerLlcpMinorVersion < 2) {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    mTextView.setText(R.string.nfc_llcp_version_check_failure);
+                }
+            });
+        } else {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    getPassButton().setEnabled(true);
+                    mTextView.setText(R.string.nfc_llcp_version_check_success);
+                }
+            });
+        }
+        return null;
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NdefPushSenderActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NdefPushSenderActivity.java
index f3f37c4..2f77895 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NdefPushSenderActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NdefPushSenderActivity.java
@@ -23,6 +23,7 @@
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
 import android.nfc.NfcAdapter;
+import android.nfc.NfcEvent;
 import android.nfc.NfcManager;
 import android.os.Bundle;
 import android.widget.TextView;
@@ -32,7 +33,8 @@
 /**
  * Test activity that sends a particular NDEF Push message to another NFC device.
  */
-public class NdefPushSenderActivity extends PassFailButtons.Activity {
+public class NdefPushSenderActivity extends PassFailButtons.Activity implements
+        NfcAdapter.CreateNdefMessageCallback {
 
     static final NdefMessage TEST_MESSAGE = getTestMessage();
 
@@ -76,13 +78,12 @@
             showDialog(NDEF_PUSH_NOT_ENABLED_DIALOG_ID);
         }
 
-        mNfcAdapter.enableForegroundNdefPush(this, TEST_MESSAGE);
+        mNfcAdapter.setNdefPushMessageCallback(this, this);
     }
 
     @Override
     protected void onPause() {
         super.onPause();
-        mNfcAdapter.disableForegroundNdefPush(this);
     }
 
     @Override
@@ -96,4 +97,9 @@
                 return super.onCreateDialog(id, args);
         }
     }
+
+    @Override
+    public NdefMessage createNdefMessage(NfcEvent event) {
+        return getTestMessage();
+    }
 }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
index cb90241..68fc027 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
@@ -28,6 +28,7 @@
 import android.nfc.tech.MifareUltralight;
 import android.nfc.tech.Ndef;
 import android.nfc.tech.TagTechnology;
+import android.os.Build;
 import android.os.Bundle;
 
 /** Activity that lists all the NFC tests. */
@@ -58,6 +59,11 @@
                 NdefPushReceiverActivity.class.getName(),
                 new Intent(this, NdefPushReceiverActivity.class), null));
 
+        if ("MNC".equals(Build.VERSION.CODENAME) || Build.VERSION.SDK_INT >= 23) {
+            adapter.add(TestListItem.newTest(this, R.string.nfc_llcp_version_check,
+                    LlcpVersionActivity.class.getName(),
+                    new Intent(this, LlcpVersionActivity.class), null));
+        }
         adapter.add(TestListItem.newCategory(this, R.string.nfc_tag_verification));
         adapter.add(TestListItem.newTest(this, R.string.nfc_ndef,
                 NDEF_ID, getTagIntent(Ndef.class), null));
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceReaderTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceReaderTestActivity.java
index 035ce86..879916b 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceReaderTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/hce/HceReaderTestActivity.java
@@ -40,12 +40,6 @@
 
         if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
             adapter.add(TestListItem.newCategory(this, R.string.nfc_hce_reader_tests));
-            /*
-             * Only add this test when supported in platform
-            adapter.add(TestListItem.newTest(this, R.string.nfc_hce_default_route_reader,
-                    SimpleReaderActivity.class.getName(),
-                    DefaultRouteEmulatorActivity.buildReaderIntent(this), null));
-             */
 
             adapter.add(TestListItem.newTest(this, R.string.nfc_hce_protocol_params_reader,
                     ProtocolParamsReaderActivity.class.getName(),
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/AttentionManagementVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/AttentionManagementVerifierActivity.java
index d8f196a..4898ab2 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/AttentionManagementVerifierActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/AttentionManagementVerifierActivity.java
@@ -85,6 +85,7 @@
         tests.add(new InsertContactsTest());
         tests.add(new SetModeNoneTest());
         tests.add(new NoneInterceptsAllTest());
+        tests.add(new SetModeAllTest());
         tests.add(new SetModePriorityTest());
         tests.add(new PriorityInterceptsSomeTest());
         tests.add(new SetModeAllTest());
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java
index 07d9cc9..25a36b6 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/notifications/InteractiveVerifierActivity.java
@@ -165,8 +165,9 @@
     protected void onSaveInstanceState (Bundle outState) {
         final int stateIndex = mTestList.indexOf(mCurrentTest);
         outState.putInt(STATE, stateIndex);
-        outState.putInt(STATUS, mCurrentTest.status);
-        Log.i(TAG, "saved state(" + stateIndex + "}, status(" + (mCurrentTest.status) + ")");
+        final int status = mCurrentTest == null ? SETUP : mCurrentTest.status;
+        outState.putInt(STATUS, status);
+        Log.i(TAG, "saved state(" + stateIndex + "}, status(" + status + ")");
     }
 
     @Override
@@ -383,6 +384,7 @@
 
         @Override
         void test() {
+            mNm.cancelAll();
             Intent settings = new Intent(NOTIFICATION_LISTENER_SETTINGS);
             if (settings.resolveActivity(mPackageManager) == null) {
                 logFail("no settings activity");
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/p2p/P2pTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/p2p/P2pTestListActivity.java
index d133eda..920c9ae 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/p2p/P2pTestListActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/p2p/P2pTestListActivity.java
@@ -125,12 +125,12 @@
      * If WiFi Direct is disabled, show the dialog to jump to system setting activity.
      **/
     @Override
-    protected void onListItemClick(ListView listView, View view, int position, long id) {
+    protected void handleItemClick(ListView listView, View view, int position, long id) {
         if (!mIsP2pEnabled) {
             showP2pEnableDialog();
             return;
         }
-        super.onListItemClick(listView, view, position, id);
+        super.handleItemClick(listView, view, position, id);
     }
 
     /**
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/FingerprintBoundKeysTest.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/FingerprintBoundKeysTest.java
new file mode 100644
index 0000000..70899c6
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/FingerprintBoundKeysTest.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.verifier.security;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.Manifest;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.hardware.fingerprint.FingerprintManager;
+import android.os.Bundle;
+import android.os.CancellationSignal;
+import android.util.Log;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyPermanentlyInvalidatedException;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.UserNotAuthenticatedException;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import java.io.IOException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+
+public class FingerprintBoundKeysTest extends PassFailButtons.Activity {
+    private static final String TAG = "FingerprintBoundKeysTest";
+
+    /** Alias for our key in the Android Key Store. */
+    private static final String KEY_NAME = "my_key";
+    private static final byte[] SECRET_BYTE_ARRAY = new byte[] {1, 2, 3, 4, 5, 6};
+    private static final int AUTHENTICATION_DURATION_SECONDS = 5;
+    private static final int CONFIRM_CREDENTIALS_REQUEST_CODE = 1;
+    private static final int FINGERPRINT_PERMISSION_REQUEST_CODE = 0;
+
+    private FingerprintManager mFingerprintManager;
+    private KeyguardManager mKeyguardManager;
+    private FingerprintAuthDialogFragment mFingerprintDialog;
+    private Cipher mCipher;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.sec_screen_lock_keys_main);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.sec_fingerprint_bound_key_test, R.string.sec_fingerprint_bound_key_test_info, -1);
+        getPassButton().setEnabled(false);
+        requestPermissions(new String[]{Manifest.permission.USE_FINGERPRINT},
+                FINGERPRINT_PERMISSION_REQUEST_CODE);
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] state) {
+        if (requestCode == FINGERPRINT_PERMISSION_REQUEST_CODE && state[0] == PackageManager.PERMISSION_GRANTED) {
+            mFingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
+            mKeyguardManager = (KeyguardManager) getSystemService(KeyguardManager.class);
+
+            try {
+                KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+                keyStore.load(null);
+                SecretKey secretKey = (SecretKey) keyStore.getKey(KEY_NAME, null);
+                mCipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/"
+                            + KeyProperties.BLOCK_MODE_CBC + "/"
+                            + KeyProperties.ENCRYPTION_PADDING_PKCS7);
+
+                mCipher.init(Cipher.ENCRYPT_MODE, secretKey);
+            } catch (KeyPermanentlyInvalidatedException e) {
+                createKey();
+                showToast("The key has been invalidated, please try again.\n");
+            } catch (NoSuchPaddingException | KeyStoreException | CertificateException | UnrecoverableKeyException | IOException
+                    | NoSuchAlgorithmException | InvalidKeyException e) {
+                throw new RuntimeException("Failed to init Cipher", e);
+            }
+
+            Button startTestButton = (Button) findViewById(R.id.sec_start_test_button);
+            startTestButton.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (tryEncrypt()) {
+                        showToast("Test failed. Key accessible without auth.");
+                    } else {
+                        showAuthenticationScreen();
+                    }
+                }
+
+            });
+
+            if (!mKeyguardManager.isKeyguardSecure()) {
+                // Show a message that the user hasn't set up a lock screen.
+                showToast( "Secure lock screen hasn't been set up.\n"
+                                + "Go to 'Settings -> Security -> Screen lock' to set up a lock screen");
+                startTestButton.setEnabled(false);
+            } else if (!mFingerprintManager.hasEnrolledFingerprints()) {
+                showToast("No fingerprints enrolled.\n"
+                                + "Go to 'Settings -> Security -> Fingerprint' to set up a fingerprint");
+                startTestButton.setEnabled(false);
+            } else {
+                createKey();
+            }
+        }
+    }
+
+    /**
+     * Creates a symmetric key in the Android Key Store which can only be used after the user has
+     * authenticated with device credentials within the last X seconds.
+     */
+    private void createKey() {
+        // Generate a key to decrypt payment credentials, tokens, etc.
+        // This will most likely be a registration step for the user when they are setting up your app.
+        try {
+            KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+            keyStore.load(null);
+            KeyGenerator keyGenerator = KeyGenerator.getInstance(
+                    KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
+
+            // Set the alias of the entry in Android KeyStore where the key will appear
+            // and the constrains (purposes) in the constructor of the Builder
+            keyGenerator.init(new KeyGenParameterSpec.Builder(KEY_NAME,
+                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
+                    .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
+                    .setUserAuthenticationRequired(true)
+                    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
+                    .build());
+            keyGenerator.generateKey();
+        } catch (NoSuchAlgorithmException | NoSuchProviderException
+                | InvalidAlgorithmParameterException | KeyStoreException
+                | CertificateException | IOException e) {
+            throw new RuntimeException("Failed to create a symmetric key", e);
+        }
+    }
+
+    /**
+     * Tries to encrypt some data with the generated key in {@link #createKey} which is
+     * only works if the user has just authenticated via device credentials.
+     */
+    private boolean tryEncrypt() {
+        try {
+            mCipher.doFinal(SECRET_BYTE_ARRAY);
+            return true;
+        } catch (BadPaddingException | IllegalBlockSizeException e) {
+            return false;
+        }
+    }
+
+    private void showAuthenticationScreen() {
+        mFingerprintDialog = new FingerprintAuthDialogFragment();
+        mFingerprintDialog.show(getFragmentManager(), "fingerprint_dialog");
+    }
+
+    private void showToast(String message) {
+        Toast.makeText(this, message, Toast.LENGTH_LONG)
+            .show();
+    }
+
+    public class FingerprintAuthDialogFragment extends DialogFragment {
+
+        private CancellationSignal mCancellationSignal;
+        private FingerprintManagerCallback mFingerprintManagerCallback;
+        private boolean mSelfCancelled;
+
+        class FingerprintManagerCallback extends FingerprintManager.AuthenticationCallback {
+            @Override
+            public void onAuthenticationError(int errMsgId, CharSequence errString) {
+                if (!mSelfCancelled) {
+                    showToast(errString.toString());
+                }
+            }
+
+            @Override
+            public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
+                showToast(helpString.toString());
+            }
+
+            @Override
+            public void onAuthenticationFailed() {
+                showToast(getString(R.string.sec_fp_auth_failed));
+            }
+
+            @Override
+            public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
+                if (tryEncrypt()) {
+                    showToast("Test passed.");
+                    getPassButton().setEnabled(true);
+                    FingerprintAuthDialogFragment.this.dismiss();
+                } else {
+                    showToast("Test failed. Key not accessible after auth");
+                }
+            }
+        }
+
+        @Override
+        public void onDismiss(DialogInterface dialog) {
+            mCancellationSignal.cancel();
+            mSelfCancelled = true;
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            mCancellationSignal = new CancellationSignal();
+            mSelfCancelled = false;
+            mFingerprintManagerCallback = new FingerprintManagerCallback();
+            mFingerprintManager.authenticate(new FingerprintManager.CryptoObject(mCipher),
+                    mCancellationSignal, 0, mFingerprintManagerCallback, null);
+            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+            builder.setMessage(R.string.sec_fp_dialog_message);
+            return builder.create();
+        }
+
+    }
+}
+
+
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/ScreenLockBoundKeysTest.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/ScreenLockBoundKeysTest.java
new file mode 100644
index 0000000..863488b
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/ScreenLockBoundKeysTest.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+package com.android.cts.verifier.security;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.app.AlertDialog;
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyPermanentlyInvalidatedException;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.UserNotAuthenticatedException;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import java.io.IOException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+
+public class ScreenLockBoundKeysTest extends PassFailButtons.Activity {
+
+    /** Alias for our key in the Android Key Store. */
+    private static final String KEY_NAME = "my_lock_key";
+    private static final byte[] SECRET_BYTE_ARRAY = new byte[] {1, 2, 3, 4, 5, 6};
+    private static final int AUTHENTICATION_DURATION_SECONDS = 5;
+    private static final int CONFIRM_CREDENTIALS_REQUEST_CODE = 1;
+
+    private KeyguardManager mKeyguardManager;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.sec_screen_lock_keys_main);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.sec_lock_bound_key_test, R.string.sec_lock_bound_key_test_info, -1);
+
+        mKeyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
+
+        getPassButton().setEnabled(false);
+
+        Button startTestButton = (Button) findViewById(R.id.sec_start_test_button);
+        startTestButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                showToast("Test running...");
+                v.postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (tryEncrypt()) {
+                            showToast("Test failed. Key accessible without auth.");
+                        } else {
+                            showAuthenticationScreen();
+                        }
+                    }
+                },
+                AUTHENTICATION_DURATION_SECONDS * 1000);
+            }
+
+        });
+
+        if (!mKeyguardManager.isKeyguardSecure()) {
+            // Show a message that the user hasn't set up a lock screen.
+            Toast.makeText(this,
+                    "Secure lock screen hasn't set up.\n"
+                            + "Go to 'Settings -> Security -> Screenlock' to set up a lock screen",
+                    Toast.LENGTH_LONG).show();
+            startTestButton.setEnabled(false);
+            return;
+        }
+
+        createKey();
+    }
+
+    /**
+     * Creates a symmetric key in the Android Key Store which can only be used after the user has
+     * authenticated with device credentials within the last X seconds.
+     */
+    private void createKey() {
+        // Generate a key to decrypt payment credentials, tokens, etc.
+        // This will most likely be a registration step for the user when they are setting up your app.
+        try {
+            KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+            keyStore.load(null);
+            KeyGenerator keyGenerator = KeyGenerator.getInstance(
+                    KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
+
+            // Set the alias of the entry in Android KeyStore where the key will appear
+            // and the constrains (purposes) in the constructor of the Builder
+            keyGenerator.init(new KeyGenParameterSpec.Builder(KEY_NAME,
+                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
+                    .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
+                    .setUserAuthenticationRequired(true)
+                            // Require that the user has unlocked in the last 30 seconds
+                    .setUserAuthenticationValidityDurationSeconds(AUTHENTICATION_DURATION_SECONDS)
+                    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
+                    .build());
+            keyGenerator.generateKey();
+        } catch (NoSuchAlgorithmException | NoSuchProviderException
+                | InvalidAlgorithmParameterException | KeyStoreException
+                | CertificateException | IOException e) {
+            throw new RuntimeException("Failed to create a symmetric key", e);
+        }
+    }
+
+    /**
+     * Tries to encrypt some data with the generated key in {@link #createKey} which is
+     * only works if the user has just authenticated via device credentials.
+     */
+    private boolean tryEncrypt() {
+        try {
+            KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+            keyStore.load(null);
+            SecretKey secretKey = (SecretKey) keyStore.getKey(KEY_NAME, null);
+            Cipher cipher = Cipher.getInstance(
+                    KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/"
+                            + KeyProperties.ENCRYPTION_PADDING_PKCS7);
+
+            // Try encrypting something, it will only work if the user authenticated within
+            // the last AUTHENTICATION_DURATION_SECONDS seconds.
+            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
+            cipher.doFinal(SECRET_BYTE_ARRAY);
+            return true;
+        } catch (UserNotAuthenticatedException e) {
+            // User is not authenticated, let's authenticate with device credentials.
+            return false;
+        } catch (KeyPermanentlyInvalidatedException e) {
+            // This happens if the lock screen has been disabled or reset after the key was
+            // generated after the key was generated.
+            createKey();
+            Toast.makeText(this, "Set up lockscreen after test ran. Retry the test.\n"
+                            + e.getMessage(),
+                    Toast.LENGTH_LONG).show();
+            return false;
+        } catch (BadPaddingException | IllegalBlockSizeException | KeyStoreException |
+                CertificateException | UnrecoverableKeyException | IOException
+                | NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private void showAuthenticationScreen() {
+        // Create the Confirm Credentials screen. You can customize the title and description. Or
+        // we will provide a generic one for you if you leave it null
+        Intent intent = mKeyguardManager.createConfirmDeviceCredentialIntent(null, null);
+        if (intent != null) {
+            startActivityForResult(intent, CONFIRM_CREDENTIALS_REQUEST_CODE);
+        }
+    }
+
+    private void showToast(String message) {
+        Toast.makeText(this, message, Toast.LENGTH_LONG)
+            .show();
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        switch (requestCode) {
+            case CONFIRM_CREDENTIALS_REQUEST_CODE:
+                if (resultCode == RESULT_OK) {
+                    if (tryEncrypt()) {
+                        showToast("Test passed.");
+                        getPassButton().setEnabled(true);
+                    } else {
+                        showToast("Test failed. Key not accessible after auth");
+                    }
+                }
+        }
+    }
+}
+
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java
index d066fce..83e3054 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/DeviceSuspendTestActivity.java
@@ -55,7 +55,7 @@
         private PendingIntent mPendingIntent;
         private AlarmManager mAlarmManager;
         private static String ACTION_ALARM = "DeviceSuspendTestActivity.ACTION_ALARM";
-        private static String TAG = "DeviceSuspendTestActivity";
+        private static String TAG = "DeviceSuspendSensorTest";
         private SensorManager mSensorManager;
 
         @Override
@@ -169,6 +169,22 @@
             return runAPWakeUpWhenFIFOFull(wakeUpSensor);
         }
 
+        public String testAccelBatchingInAPSuspendLargeReportLatency() throws Throwable {
+            Sensor accel = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+            if (accel == null) {
+                throw new SensorNotSupportedException(Sensor.TYPE_ACCELEROMETER, false);
+            }
+            return runAPWakeUpByAlarmNonWakeSensor(accel, (int)TimeUnit.SECONDS.toMicros(1000));
+        }
+
+        public String testAccelBatchingInAPSuspendZeroReportLatency() throws Throwable {
+            Sensor accel = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+           if (accel == null) {
+                throw new SensorNotSupportedException(Sensor.TYPE_ACCELEROMETER, false);
+            }
+            return runAPWakeUpByAlarmNonWakeSensor(accel, 0);
+        }
+
         public String runAPWakeUpWhenReportLatencyExpires(Sensor sensor) throws Throwable {
             int fifoMaxEventCount = sensor.getFifoMaxEventCount();
             if (fifoMaxEventCount == 0) {
@@ -196,9 +212,7 @@
                     MAX_REPORT_LATENCY_US,
                     true /*isDeviceSuspendTest*/);
 
-            int numEventsToWaitFor = MAX_REPORT_LATENCY_US/maximumExpectedSamplingPeriodUs;
             TestSensorOperation op = TestSensorOperation.createOperation(environment,
-                                                                          numEventsToWaitFor,
                                                                           mDeviceSuspendLock,
                                                                           false);
             final int ALARM_WAKE_UP_DELAY_MS = MAX_REPORT_LATENCY_US/1000 +
@@ -208,6 +222,7 @@
                                     SystemClock.elapsedRealtime() + ALARM_WAKE_UP_DELAY_MS,
                                     mPendingIntent);
             try {
+                Log.i(TAG, "Running .. " + getCurrentTestNode().getName() + " " + sensor.getName());
                 op.execute(getCurrentTestNode());
             } finally {
                 mAlarmManager.cancel(mPendingIntent);
@@ -244,16 +259,59 @@
                     MAX_REPORT_LATENCY_US,
                     true /*isDeviceSuspendTest*/);
 
-           int numEventsToWaitFor = fifoMaxEventCount;
-            TestSensorOperation op = TestSensorOperation.createOperation(environment,
-                                                                          numEventsToWaitFor,
-                                                                          mDeviceSuspendLock,
-                                                                         true);
+           TestSensorOperation op = TestSensorOperation.createOperation(environment,
+                                                                        mDeviceSuspendLock,
+                                                                        true);
             mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                                     SystemClock.elapsedRealtime() + ALARM_WAKE_UP_DELAY_MS,
                                     mPendingIntent);
             op.addDefaultVerifications();
             try {
+                Log.i(TAG, "Running .. " + getCurrentTestNode().getName() + " " + sensor.getName());
+                op.execute(getCurrentTestNode());
+            } finally {
+                mAlarmManager.cancel(mPendingIntent);
+            }
+            return null;
+        }
+
+        public String runAPWakeUpByAlarmNonWakeSensor(Sensor sensor, int maxReportLatencyUs)
+            throws  Throwable {
+            int fifoMaxEventCount = sensor.getFifoMaxEventCount();
+            if (fifoMaxEventCount == 0) {
+                throw new SensorTestStateNotSupportedException("Batching not supported.");
+            }
+            int maximumExpectedSamplingPeriodUs = sensor.getMaxDelay();
+            if (maximumExpectedSamplingPeriodUs == 0 ||
+                    maximumExpectedSamplingPeriodUs > 200000) {
+                // If maxDelay is not defined, set the value for 5 Hz.
+                maximumExpectedSamplingPeriodUs = 200000;
+            }
+            int fifoBasedReportLatencyUs = fifoMaxEventCount * maximumExpectedSamplingPeriodUs;
+
+            // Ensure that FIFO based report latency is at least 20 seconds, we need at least 10
+            // seconds of time to allow the device to be in suspend state.
+            if (fifoBasedReportLatencyUs < 20000000L) {
+                throw new SensorTestStateNotSupportedException("FIFO too small to test reliably");
+            }
+
+            TestSensorEnvironment environment = new TestSensorEnvironment(
+                    this,
+                    sensor,
+                    false,
+                    maximumExpectedSamplingPeriodUs,
+                    maxReportLatencyUs,
+                    true /*isDeviceSuspendTest*/);
+
+            final int ALARM_WAKE_UP_DELAY_MS = 20000;
+            TestSensorOperation op = TestSensorOperation.createOperation(environment,
+                                                                         mDeviceSuspendLock,
+                                                                         true);
+            mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+                                    SystemClock.elapsedRealtime() + ALARM_WAKE_UP_DELAY_MS,
+                                    mPendingIntent);
+            try {
+                Log.i(TAG, "Running .. " + getCurrentTestNode().getName() + " " + sensor.getName());
                 op.execute(getCurrentTestNode());
             } finally {
                 mAlarmManager.cancel(mPendingIntent);
diff --git a/apps/PermissionApp/Android.mk b/apps/PermissionApp/Android.mk
new file mode 100644
index 0000000..57950da
--- /dev/null
+++ b/apps/PermissionApp/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# Don't include this package in any target.
+LOCAL_MODULE_TAGS := optional
+
+# When built, explicitly put it in the data partition.
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsPermissionApp
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/apps/PermissionApp/AndroidManifest.xml b/apps/PermissionApp/AndroidManifest.xml
new file mode 100644
index 0000000..82e3617
--- /dev/null
+++ b/apps/PermissionApp/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.permissionapp">
+
+    <uses-sdk android:minSdkVersion="23"/>
+
+    <uses-permission android:name="android.permission.READ_CONTACTS"/>
+
+    <application android:label="CtsPermissionApp"
+            android:icon="@drawable/ic_permissionapp">
+        <activity android:name=".PermissionActivity" >
+            <intent-filter>
+                <action android:name="com.android.cts.permission.action.CHECK_HAS_PERMISSION" />
+                <action android:name="com.android.cts.permission.action.REQUEST_PERMISSION" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
+
diff --git a/apps/PermissionApp/res/drawable-hdpi/ic_permissionapp.png b/apps/PermissionApp/res/drawable-hdpi/ic_permissionapp.png
new file mode 100644
index 0000000..6fe4112
--- /dev/null
+++ b/apps/PermissionApp/res/drawable-hdpi/ic_permissionapp.png
Binary files differ
diff --git a/apps/PermissionApp/res/drawable-mdpi/ic_permissionapp.png b/apps/PermissionApp/res/drawable-mdpi/ic_permissionapp.png
new file mode 100644
index 0000000..a7a5666
--- /dev/null
+++ b/apps/PermissionApp/res/drawable-mdpi/ic_permissionapp.png
Binary files differ
diff --git a/apps/PermissionApp/res/drawable-xhdpi/ic_permissionapp.png b/apps/PermissionApp/res/drawable-xhdpi/ic_permissionapp.png
new file mode 100644
index 0000000..1e47732
--- /dev/null
+++ b/apps/PermissionApp/res/drawable-xhdpi/ic_permissionapp.png
Binary files differ
diff --git a/apps/PermissionApp/res/drawable-xxhdpi/ic_permissionapp.png b/apps/PermissionApp/res/drawable-xxhdpi/ic_permissionapp.png
new file mode 100644
index 0000000..0e849b3
--- /dev/null
+++ b/apps/PermissionApp/res/drawable-xxhdpi/ic_permissionapp.png
Binary files differ
diff --git a/apps/PermissionApp/res/drawable-xxxhdpi/ic_permissionapp.png b/apps/PermissionApp/res/drawable-xxxhdpi/ic_permissionapp.png
new file mode 100644
index 0000000..242a6b1
--- /dev/null
+++ b/apps/PermissionApp/res/drawable-xxxhdpi/ic_permissionapp.png
Binary files differ
diff --git a/apps/PermissionApp/src/com/android/cts/permission/permissionapp/PermissionActivity.java b/apps/PermissionApp/src/com/android/cts/permission/permissionapp/PermissionActivity.java
new file mode 100644
index 0000000..01b60d3
--- /dev/null
+++ b/apps/PermissionApp/src/com/android/cts/permission/permissionapp/PermissionActivity.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.permissionapp;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.lang.Override;
+
+/**
+ * A simple activity that requests permissions and returns the result.
+ */
+public class PermissionActivity extends Activity {
+    private static final String TAG = "PermissionActivity";
+
+    private static final String ACTION_CHECK_HAS_PERMISSION
+            = "com.android.cts.permission.action.CHECK_HAS_PERMISSION";
+    private static final String ACTION_REQUEST_PERMISSION
+            = "com.android.cts.permission.action.REQUEST_PERMISSION";
+    private static final String ACTION_PERMISSION_RESULT
+            = "com.android.cts.permission.action.PERMISSION_RESULT";
+    private static final String EXTRA_PERMISSION
+            = "com.android.cts.permission.extra.PERMISSION";
+    private static final String EXTRA_GRANT_STATE
+            = "com.android.cts.permission.extra.GRANT_STATE";
+    private static final int PERMISSION_ERROR = -2;
+    private static final int PERMISSIONS_REQUEST_CODE = 100;
+
+    private String mPermission;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final Intent received = getIntent();
+        Log.d(TAG, "Started with " + received);
+
+        final String action = received.getAction();
+        mPermission = received.getStringExtra(EXTRA_PERMISSION);
+        if (ACTION_REQUEST_PERMISSION.equals(action)) {
+            Log.d(TAG, "Requesting permission " + mPermission);
+            requestPermissions(new String[] {mPermission}, PERMISSIONS_REQUEST_CODE);
+        } else if (ACTION_CHECK_HAS_PERMISSION.equals(action)) {
+            Log.d(TAG, "Checking permission " + mPermission);
+            sendResultBroadcast(checkSelfPermission(mPermission));
+        } else {
+            Log.w(TAG, "Unknown intent received: " + received);
+            finish();
+        }
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            int[] grantResults) {
+        if (requestCode != PERMISSIONS_REQUEST_CODE ||
+                permissions.length != 1 ||
+                !permissions[0].equals(mPermission)) {
+            Log.d(TAG, "Received wrong permissions result");
+            sendResultBroadcast(PERMISSION_ERROR);
+        } else {
+            Log.d(TAG, "Received valid permission result: " + grantResults[0]);
+            sendResultBroadcast(grantResults[0]);
+        }
+    }
+
+    private void sendResultBroadcast(int result) {
+        Log.d(TAG, "Sending result broadcast: " + result);
+        Intent broadcast = new Intent(ACTION_PERMISSION_RESULT);
+        broadcast.putExtra(EXTRA_GRANT_STATE, result);
+        sendBroadcast(broadcast);
+        finish();
+    }
+}
diff --git a/build/config.mk b/build/config.mk
index ffc71ba..56d4ae6 100644
--- a/build/config.mk
+++ b/build/config.mk
@@ -47,3 +47,4 @@
 BUILD_CTS_DEQP_PACKAGE := cts/build/test_deqp_package.mk
 BUILD_CTS_SUPPORT_PACKAGE := cts/build/support_package.mk
 BUILD_CTS_MODULE_TEST_CONFIG := cts/build/module_test_config.mk
+BUILD_CTS_DEVICE_INFO_PACKAGE := cts/build/device_info_package.mk
diff --git a/build/device_info_package.mk b/build/device_info_package.mk
new file mode 100644
index 0000000..600f6a1
--- /dev/null
+++ b/build/device_info_package.mk
@@ -0,0 +1,67 @@
+# Copyright (C) 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.
+
+#
+# Builds a package which can be instrumented to retrieve information about the device under test.
+#
+
+DEVICE_INFO_PACKAGE := com.android.compatibility.common.deviceinfo
+DEVICE_INFO_INSTRUMENT := com.android.compatibility.common.deviceinfo.DeviceInfoInstrument
+DEVICE_INFO_PERMISSIONS += android.permission.WRITE_EXTERNAL_STORAGE
+DEVICE_INFO_ACTIVITIES += $(DEVICE_INFO_PACKAGE).GenericDeviceInfo
+
+# Add the base device info
+LOCAL_STATIC_JAVA_LIBRARIES += compatibility-device-info
+
+# Generator of APK manifests.
+MANIFEST_GENERATOR_JAR := $(HOST_OUT_JAVA_LIBRARIES)/compatibility-manifest-generator.jar
+MANIFEST_GENERATOR := java -jar $(MANIFEST_GENERATOR_JAR)
+
+# Generate the manifest
+manifest_xml := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME))/AndroidManifest.xml
+$(manifest_xml): PRIVATE_INFO_PERMISSIONS := $(foreach permission, $(DEVICE_INFO_PERMISSIONS),-r $(permission))
+$(manifest_xml): PRIVATE_INFO_ACTIVITIES := $(foreach activity,$(DEVICE_INFO_ACTIVITIES),-a $(activity))
+$(manifest_xml): PRIVATE_PACKAGE := $(DEVICE_INFO_PACKAGE)
+$(manifest_xml): PRIVATE_INSTRUMENT := $(DEVICE_INFO_INSTRUMENT)
+
+# Regenerate manifest.xml if the generator jar, */cts-device-info/Android.mk, or this file is changed.
+$(manifest_xml): $(MANIFEST_GENERATOR_JAR) $(LOCAL_PATH)/Android.mk cts/build/device_info_package.mk
+	$(hide) echo Generating manifest for $(PRIVATE_NAME)
+	$(hide) mkdir -p $(dir $@)
+	$(hide) $(MANIFEST_GENERATOR) \
+						$(PRIVATE_INFO_PERMISSIONS) \
+						$(PRIVATE_INFO_ACTIVITIES) \
+						-p $(PRIVATE_PACKAGE) \
+						-i $(PRIVATE_INSTRUMENT) \
+						-o $@
+
+# Reset variables
+DEVICE_INFO_PACKAGE :=
+DEVICE_INFO_INSTRUMENT :=
+DEVICE_INFO_PERMISSIONS :=
+DEVICE_INFO_ACTIVITIES :=
+
+LOCAL_FULL_MANIFEST_FILE := $(manifest_xml)
+# Disable by default
+LOCAL_DEX_PREOPT := false
+LOCAL_PROGUARD_ENABLED := disabled
+
+# Don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# And when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/common/device-side/device-info/Android.mk b/common/device-side/device-info/Android.mk
new file mode 100644
index 0000000..8c5052b
--- /dev/null
+++ b/common/device-side/device-info/Android.mk
@@ -0,0 +1,29 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE := compatibility-device-info
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfoActivity.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfoActivity.java
new file mode 100644
index 0000000..62e512c
--- /dev/null
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfoActivity.java
@@ -0,0 +1,404 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.compatibility.common.deviceinfo;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Environment;
+import android.text.TextUtils;
+import android.util.JsonWriter;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * Collect device information on target device and write to a JSON file.
+ */
+public abstract class DeviceInfoActivity extends Activity {
+
+    /** Device info result code: collector failed to complete. */
+    private static final int DEVICE_INFO_RESULT_FAILED = -2;
+    /** Device info result code: collector completed with error. */
+    private static final int DEVICE_INFO_RESULT_ERROR = -1;
+    /** Device info result code: collector has started but not completed. */
+    private static final int DEVICE_INFO_RESULT_STARTED = 0;
+    /** Device info result code: collector completed success. */
+    private static final int DEVICE_INFO_RESULT_OK = 1;
+
+    private static final int MAX_STRING_VALUE_LENGTH = 1000;
+    private static final int MAX_ARRAY_LENGTH = 1000;
+
+    private static final String LOG_TAG = "DeviceInfoActivity";
+
+    private CountDownLatch mDone = new CountDownLatch(1);
+    private JsonWriter mJsonWriter = null;
+    private String mResultFilePath = null;
+    private String mErrorMessage = "Collector has started.";
+    private int mResultCode = DEVICE_INFO_RESULT_STARTED;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (createFilePath()) {
+            createJsonWriter();
+            startJsonWriter();
+            collectDeviceInfo();
+            closeJsonWriter();
+
+            if (mResultCode == DEVICE_INFO_RESULT_STARTED) {
+                mResultCode = DEVICE_INFO_RESULT_OK;
+            }
+        }
+
+        Intent data = new Intent();
+        if (mResultCode == DEVICE_INFO_RESULT_OK) {
+            data.setData(Uri.parse(mResultFilePath));
+            setResult(RESULT_OK, data);
+        } else {
+            data.setData(Uri.parse(mErrorMessage));
+            setResult(RESULT_CANCELED, data);
+        }
+
+        mDone.countDown();
+        finish();
+    }
+
+    /**
+     * Method to collect device information.
+     */
+    protected abstract void collectDeviceInfo();
+
+    void waitForActivityToFinish() {
+        try {
+            mDone.await();
+        } catch (Exception e) {
+            failed("Exception while waiting for activity to finish: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Returns the error message if collector did not complete successfully.
+     */
+    String getErrorMessage() {
+        if (mResultCode == DEVICE_INFO_RESULT_OK) {
+            return null;
+        }
+        return mErrorMessage;
+    }
+
+    /**
+     * Returns the path to the json file if collector completed successfully.
+     */
+    String getResultFilePath() {
+        if (mResultCode == DEVICE_INFO_RESULT_OK) {
+            return mResultFilePath;
+        }
+        return null;
+    }
+
+    private void error(String message) {
+        mResultCode = DEVICE_INFO_RESULT_ERROR;
+        mErrorMessage = message;
+        Log.e(LOG_TAG, message);
+    }
+
+    private void failed(String message) {
+        mResultCode = DEVICE_INFO_RESULT_FAILED;
+        mErrorMessage = message;
+        Log.e(LOG_TAG, message);
+    }
+
+    private boolean createFilePath() {
+        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+            failed("External storage is not mounted");
+            return false;
+        }
+        final File dir = new File(Environment.getExternalStorageDirectory(), "device-info-files");
+        if (!dir.mkdirs() && !dir.isDirectory()) {
+            failed("Cannot create directory for device info files");
+            return false;
+        }
+
+        // Create file at /sdcard/device-info-files/<class_name>.deviceinfo.json
+        final File jsonFile = new File(dir, getClass().getSimpleName() + ".deviceinfo.json");
+        try {
+            jsonFile.createNewFile();
+        } catch (Exception e) {
+            failed("Cannot create file to collect device info");
+            return false;
+        }
+        mResultFilePath = jsonFile.getAbsolutePath();
+        return true;
+    }
+
+    private void createJsonWriter() {
+        try {
+            FileOutputStream out = new FileOutputStream(mResultFilePath);
+            mJsonWriter = new JsonWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
+            // TODO(agathaman): remove to make json output less pretty
+            mJsonWriter.setIndent("  ");
+        } catch (Exception e) {
+            failed("Failed to create JSON writer: " + e.getMessage());
+        }
+    }
+
+    private void startJsonWriter() {
+        try {
+            mJsonWriter.beginObject();
+        } catch (Exception e) {
+            failed("Failed to begin JSON object: " + e.getMessage());
+        }
+    }
+
+    private void closeJsonWriter() {
+        try {
+            mJsonWriter.endObject();
+            mJsonWriter.close();
+        } catch (Exception e) {
+            failed("Failed to close JSON object: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Start a new group of result.
+     */
+    public void startGroup(String name) {
+        try {
+            mJsonWriter.name(name);
+            mJsonWriter.beginObject();
+        } catch (Exception e) {
+            error("Failed to begin JSON group: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Complete adding result to the last started group.
+     */
+    public void endGroup() {
+        try {
+            mJsonWriter.endObject();
+        } catch (Exception e) {
+            error("Failed to end JSON group: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add a double value result.
+     */
+    public void addResult(String name, double value) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name).value(value);
+        } catch (Exception e) {
+            error("Failed to add result for type double: " + e.getMessage());
+        }
+    }
+
+    /**
+    * Add a long value result.
+    */
+    public void addResult(String name, long value) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name).value(value);
+        } catch (Exception e) {
+            error("Failed to add result for type long: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add an int value result.
+     */
+    public void addResult(String name, int value) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name).value((Number) value);
+        } catch (Exception e) {
+            error("Failed to add result for type int: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add a boolean value result.
+     */
+    public void addResult(String name, boolean value) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name).value(value);
+        } catch (Exception e) {
+            error("Failed to add result for type boolean: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add a String value result.
+     */
+    public void addResult(String name, String value) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name).value(checkString(value));
+        } catch (Exception e) {
+            error("Failed to add result for type String: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add a double array result.
+     */
+    public void addArray(String name, double[] list) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name);
+            mJsonWriter.beginArray();
+            for (double value : checkArray(list)) {
+                mJsonWriter.value(value);
+            }
+            mJsonWriter.endArray();
+        } catch (Exception e) {
+            error("Failed to add result array for type double: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add a long array result.
+     */
+    public void addArray(String name, long[] list) {
+        checkName(name);
+        try {
+        mJsonWriter.name(name);
+        mJsonWriter.beginArray();
+        for (long value : checkArray(list)) {
+            mJsonWriter.value(value);
+        }
+            mJsonWriter.endArray();
+        } catch (Exception e) {
+            error("Failed to add result array for type long: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add an int array result.
+     */
+    public void addArray(String name, int[] list) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name);
+            mJsonWriter.beginArray();
+            for (int value : checkArray(list)) {
+                mJsonWriter.value((Number) value);
+            }
+            mJsonWriter.endArray();
+        } catch (Exception e) {
+            error("Failed to add result array for type int: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add a boolean array result.
+     */
+    public void addArray(String name, boolean[] list) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name);
+            mJsonWriter.beginArray();
+            for (boolean value : checkArray(list)) {
+                mJsonWriter.value(value);
+            }
+            mJsonWriter.endArray();
+        } catch (Exception e) {
+            error("Failed to add result array for type boolean: " + e.getMessage());
+        }
+    }
+
+    /**
+     * Add a String array result.
+     */
+    public void addArray(String name, String[] list) {
+        checkName(name);
+        try {
+            mJsonWriter.name(name);
+            mJsonWriter.beginArray();
+            for (String value : checkArray(list)) {
+                mJsonWriter.value(checkString(value));
+            }
+            mJsonWriter.endArray();
+        } catch (Exception e) {
+            error("Failed to add result array for type Sting: " + e.getMessage());
+        }
+    }
+
+    private static boolean[] checkArray(boolean[] values) {
+        if (values.length > MAX_ARRAY_LENGTH) {
+            return Arrays.copyOf(values, MAX_ARRAY_LENGTH);
+        } else {
+            return values;
+        }
+    }
+
+    private static double[] checkArray(double[] values) {
+        if (values.length > MAX_ARRAY_LENGTH) {
+            return Arrays.copyOf(values, MAX_ARRAY_LENGTH);
+        } else {
+            return values;
+        }
+    }
+
+    private static int[] checkArray(int[] values) {
+        if (values.length > MAX_ARRAY_LENGTH) {
+            return Arrays.copyOf(values, MAX_ARRAY_LENGTH);
+        } else {
+            return values;
+        }
+    }
+
+    private static long[] checkArray(long[] values) {
+        if (values.length > MAX_ARRAY_LENGTH) {
+            return Arrays.copyOf(values, MAX_ARRAY_LENGTH);
+        } else {
+            return values;
+        }
+    }
+
+    private static String[] checkArray(String[] values) {
+        if (values.length > MAX_ARRAY_LENGTH) {
+            return Arrays.copyOf(values, MAX_ARRAY_LENGTH);
+        } else {
+            return values;
+        }
+    }
+
+    private static String checkString(String value) {
+        if (value.length() > MAX_STRING_VALUE_LENGTH) {
+            return value.substring(0, MAX_STRING_VALUE_LENGTH);
+        }
+        return value;
+    }
+
+    private static String checkName(String value) {
+        if (TextUtils.isEmpty(value)) {
+            throw new NullPointerException();
+        }
+        return value;
+    }
+}
+
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfoInstrument.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfoInstrument.java
new file mode 100644
index 0000000..f3af0bc
--- /dev/null
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfoInstrument.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.compatibility.common.deviceinfo;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+
+/**
+ * An instrumentation that runs all activities that extends DeviceInfoActivity.
+ */
+public class DeviceInfoInstrument extends Instrumentation {
+
+    private static final String LOG_TAG = "ExtendedDeviceInfo";
+    private static final int DEVICE_INFO_ACTIVITY_REQUEST = 1;
+
+    private Bundle mBundle = new Bundle();
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        start();
+    }
+
+    @Override
+    public void onStart() {
+        try {
+            Context context = getContext();
+            ActivityInfo[] activities = context.getPackageManager().getPackageInfo(
+                    context.getPackageName(), PackageManager.GET_ACTIVITIES).activities;
+
+            for (ActivityInfo activityInfo : activities) {
+                Class cls = Class.forName(activityInfo.name);
+                if (cls != DeviceInfoActivity.class &&
+                        DeviceInfoActivity.class.isAssignableFrom(cls)) {
+                    runActivity(activityInfo.name);
+                }
+            }
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "Exception occurred while running activities.", e);
+            // Returns INSTRUMENTATION_CODE: 0
+            finish(Activity.RESULT_CANCELED, mBundle);
+        }
+        // Returns INSTRUMENTATION_CODE: -1
+        finish(Activity.RESULT_OK, mBundle);
+    }
+
+    /**
+     * Runs a device info activity and return the file path where the results are written to.
+     */
+    private void runActivity(String activityName) throws Exception {
+        Intent intent = new Intent();
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.setClassName(this.getContext(), activityName);
+
+        DeviceInfoActivity activity = (DeviceInfoActivity) startActivitySync(intent);
+        waitForIdleSync();
+        activity.waitForActivityToFinish();
+
+        String className = Class.forName(activityName).getSimpleName();
+        String errorMessage = activity.getErrorMessage();
+        if (TextUtils.isEmpty(errorMessage)) {
+            mBundle.putString(className, activity.getResultFilePath());
+        } else {
+            mBundle.putString(className, errorMessage);
+            throw new Exception(errorMessage);
+        }
+    }
+}
+
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GenericDeviceInfo.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GenericDeviceInfo.java
new file mode 100644
index 0000000..f6e7c57
--- /dev/null
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/GenericDeviceInfo.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.compatibility.common.deviceinfo;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.FeatureInfo;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.UserManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Display;
+import android.view.WindowManager;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+
+import com.android.compatibility.common.deviceinfo.DeviceInfoActivity;
+
+/**
+ * Generic device info collector.
+ */
+public class GenericDeviceInfo extends DeviceInfoActivity {
+
+    public static final String BUILD_ID = "build_id";
+    public static final String BUILD_PRODUCT = "build_product";
+    public static final String BUILD_DEVICE = "build_device";
+    public static final String BUILD_BOARD = "build_board";
+    public static final String BUILD_MANUFACTURER = "build_manufacturer";
+    public static final String BUILD_BRAND = "build_brand";
+    public static final String BUILD_MODEL = "build_model";
+    public static final String BUILD_TYPE = "build_type";
+    public static final String BUILD_FINGERPRINT = "build_fingerprint";
+    public static final String BUILD_ABI = "build_abi";
+    public static final String BUILD_ABI2 = "build_abi2";
+    public static final String BUILD_ABIS = "build_abis";
+    public static final String BUILD_ABIS_32 = "build_abis_32";
+    public static final String BUILD_ABIS_64 = "build_abis_64";
+    public static final String BUILD_SERIAL = "build_serial";
+    public static final String BUILD_VERSION_RELEASE = "build_version_release";
+    public static final String BUILD_VERSION_SDK = "build_version_sdk";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    protected void collectDeviceInfo() {
+        addResult(BUILD_ID, Build.ID);
+        addResult(BUILD_PRODUCT, Build.PRODUCT);
+        addResult(BUILD_DEVICE, Build.DEVICE);
+        addResult(BUILD_BOARD, Build.BOARD);
+        addResult(BUILD_MANUFACTURER, Build.MANUFACTURER);
+        addResult(BUILD_BRAND, Build.BRAND);
+        addResult(BUILD_MODEL, Build.MODEL);
+        addResult(BUILD_TYPE, Build.TYPE);
+        addResult(BUILD_FINGERPRINT, Build.FINGERPRINT);
+        addResult(BUILD_ABI, Build.CPU_ABI);
+        addResult(BUILD_ABI2, Build.CPU_ABI2);
+        addResult(BUILD_ABIS, TextUtils.join(",", Build.SUPPORTED_ABIS));
+        addResult(BUILD_ABIS_32, TextUtils.join(",", Build.SUPPORTED_32_BIT_ABIS));
+        addResult(BUILD_ABIS_64, TextUtils.join(",", Build.SUPPORTED_64_BIT_ABIS));
+        addResult(BUILD_SERIAL, Build.SERIAL);
+        addResult(BUILD_VERSION_RELEASE, Build.VERSION.RELEASE);
+        addResult(BUILD_VERSION_SDK, Build.VERSION.SDK);
+    }
+}
\ No newline at end of file
diff --git a/common/device-side/device-info/tests/Android.mk b/common/device-side/device-info/tests/Android.mk
new file mode 100644
index 0000000..e24c5c1
--- /dev/null
+++ b/common/device-side/device-info/tests/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 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.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-info
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE := compatibility-device-info-tests
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
diff --git a/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/DeviceInfoActivityTest.java b/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/DeviceInfoActivityTest.java
new file mode 100644
index 0000000..8a8a66c
--- /dev/null
+++ b/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/DeviceInfoActivityTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.compatibility.common.deviceinfo;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * Test for {@link DeviceInfoActivity}.
+ */
+public class DeviceInfoActivityTest extends ActivityInstrumentationTestCase2<SampleDeviceInfo> {
+
+    private static final String EXPECTED_FILE_PATH =
+            "/storage/emulated/0/device-info-files/SampleDeviceInfo.deviceinfo.json";
+
+    private SampleDeviceInfo mActivity;
+
+    public DeviceInfoActivityTest() {
+        super(SampleDeviceInfo.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Start the activity and get a reference to it.
+        mActivity = getActivity();
+        // Wait for the activity to finish.
+        mActivity.waitForActivityToFinish();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mActivity = null;
+        super.tearDown();
+    }
+
+    public void testJsonFile() throws IOException {
+        String resultFilePath = mActivity.getResultFilePath();
+        // Check file path exist
+        assertNotNull("Expected a non-null resultFilePath", resultFilePath);
+        // Check file path location
+        assertEquals("Incorrect file path", EXPECTED_FILE_PATH, resultFilePath);
+        // Check json file content
+        String jsonContent = readFile(resultFilePath);
+        assertEquals("Incorrect json output", ExampleObjects.sampleDeviceInfoJson(), jsonContent);
+    }
+
+    private String readFile(String filePath) throws IOException {
+        InputStreamReader inputStreamReader = new InputStreamReader(
+                new FileInputStream(filePath), "UTF-8");
+        StringBuilder stringBuilder = new StringBuilder();
+        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+        String line;
+        while((line = bufferedReader.readLine()) != null) {
+            stringBuilder.append(line);
+            stringBuilder.append('\n');
+        }
+        bufferedReader.close();
+        return stringBuilder.toString();
+    }
+}
+
diff --git a/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/ExampleObjects.java b/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/ExampleObjects.java
new file mode 100644
index 0000000..92e7df1
--- /dev/null
+++ b/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/ExampleObjects.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.compatibility.common.deviceinfo;
+
+/**
+ * Example Objects for {@link DeviceInfoActivity} test package.
+ */
+public final class ExampleObjects {
+
+    private static final int MAX_LENGTH = 1000;
+
+    private static final String SAMPLE_DEVICE_INFO_JSON = "{\n" +
+        "  \"foo\": {\n" +
+        "    \"foo_boolean\": true,\n" +
+        "    \"bar\": {\n" +
+        "      \"bar_string\": [\n" +
+        "        \"bar-string-1\",\n" +
+        "        \"bar-string-2\",\n" +
+        "        \"bar-string-3\"\n" +
+        "      ],\n" +
+        "      \"bar_boolean\": [\n" +
+        "        true,\n" +
+        "        false\n" +
+        "      ],\n" +
+        "      \"bar_double\": [\n" +
+        "        1.7976931348623157E308,\n" +
+        "        4.9E-324\n" +
+        "      ],\n" +
+        "      \"bar_int\": [\n" +
+        "        2147483647,\n" +
+        "        -2147483648\n" +
+        "      ],\n" +
+        "      \"bar_long\": [\n" +
+        "        9223372036854775807,\n" +
+        "        -9223372036854775808\n" +
+        "      ]\n" +
+        "    },\n" +
+        "    \"foo_double\": 1.7976931348623157E308,\n" +
+        "    \"foo_int\": 2147483647,\n" +
+        "    \"foo_long\": 9223372036854775807,\n" +
+        "    \"foo_string\": \"foo-string\",\n" +
+        "    \"long_string\": \"%s\",\n" +
+        "    \"long_int_array\": [\n%s" +
+        "    ]\n" +
+        "  }\n" +
+        "}\n";
+
+    public static String sampleDeviceInfoJson() {
+        StringBuilder longStringSb = new StringBuilder();
+        StringBuilder longArraySb = new StringBuilder();
+        int lastNum = MAX_LENGTH - 1;
+        for (int i = 0; i < MAX_LENGTH; i++) {
+            longStringSb.append("a");
+            longArraySb.append(String.format("      %d%s\n", i, ((i == lastNum)? "" : ",")));
+        }
+        return String.format(SAMPLE_DEVICE_INFO_JSON,
+            longStringSb.toString(), longArraySb.toString());
+    }
+}
\ No newline at end of file
diff --git a/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/SampleDeviceInfo.java b/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/SampleDeviceInfo.java
new file mode 100644
index 0000000..7da9951
--- /dev/null
+++ b/common/device-side/device-info/tests/src/com/android/compatibility/common/deviceinfo/SampleDeviceInfo.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.compatibility.common.deviceinfo;
+
+import android.os.Bundle;
+
+import java.lang.StringBuilder;
+
+/**
+ * Sample device info collector.
+ */
+public class SampleDeviceInfo extends DeviceInfoActivity {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    protected void collectDeviceInfo() {
+        boolean[] booleans = {Boolean.TRUE, Boolean.FALSE};
+        double[] doubles = {Double.MAX_VALUE, Double.MIN_VALUE};
+        int[] ints = {Integer.MAX_VALUE, Integer.MIN_VALUE};
+        long[] longs = {Long.MAX_VALUE, Long.MIN_VALUE};
+
+        // Group Foo
+        startGroup("foo");
+        addResult("foo_boolean", Boolean.TRUE);
+
+        // Group Bar
+        startGroup("bar");
+        addArray("bar_string", new String[] {
+                "bar-string-1",
+                "bar-string-2",
+                "bar-string-3"});
+
+        addArray("bar_boolean", booleans);
+        addArray("bar_double", doubles);
+        addArray("bar_int", ints);
+        addArray("bar_long", longs);
+        endGroup(); // bar
+
+        addResult("foo_double", Double.MAX_VALUE);
+        addResult("foo_int", Integer.MAX_VALUE);
+        addResult("foo_long", Long.MAX_VALUE);
+        addResult("foo_string", "foo-string");
+
+        StringBuilder sb = new StringBuilder();
+        int[] arr = new int[1001];
+        for (int i = 0; i < 1001; i++) {
+            sb.append("a");
+            arr[i] = i;
+        }
+        addResult("long_string", sb.toString());
+        addArray("long_int_array", arr);
+
+        endGroup(); // foo
+    }
+}
+
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/WifiConfigCreator.java b/common/device-side/util/src/com/android/compatibility/common/util/WifiConfigCreator.java
index 1cea80c..d01978a 100644
--- a/common/device-side/util/src/com/android/compatibility/common/util/WifiConfigCreator.java
+++ b/common/device-side/util/src/com/android/compatibility/common/util/WifiConfigCreator.java
@@ -28,11 +28,11 @@
  * A simple activity to create and manage wifi configurations.
  */
 public class WifiConfigCreator {
-    public static final String CREATE_WIFI_CONFIG_ACTION =
+    public static final String ACTION_CREATE_WIFI_CONFIG =
             "com.android.compatibility.common.util.CREATE_WIFI_CONFIG";
-    public static final String UPDATE_WIFI_CONFIG_ACTION =
+    public static final String ACTION_UPDATE_WIFI_CONFIG =
             "com.android.compatibility.common.util.UPDATE_WIFI_CONFIG";
-    public static final String REMOVE_WIFI_CONFIG_ACTION =
+    public static final String ACTION_REMOVE_WIFI_CONFIG =
             "com.android.compatibility.common.util.REMOVE_WIFI_CONFIG";
     public static final String EXTRA_NETID = "extra-netid";
     public static final String EXTRA_SSID = "extra-ssid";
diff --git a/common/host-side/manifest-generator/Android.mk b/common/host-side/manifest-generator/Android.mk
new file mode 100644
index 0000000..ca08928
--- /dev/null
+++ b/common/host-side/manifest-generator/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 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.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_STATIC_JAVA_LIBRARIES := kxml2-2.3.0
+
+LOCAL_JAR_MANIFEST := MANIFEST.mf
+
+LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR)
+
+LOCAL_MODULE := compatibility-manifest-generator
+
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/common/host-side/manifest-generator/MANIFEST.mf b/common/host-side/manifest-generator/MANIFEST.mf
new file mode 100644
index 0000000..4f62631
--- /dev/null
+++ b/common/host-side/manifest-generator/MANIFEST.mf
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Main-Class: com.android.compatibility.common.generator.ManifestGenerator
diff --git a/common/host-side/manifest-generator/src/com/android/compatibility/common/generator/ManifestGenerator.java b/common/host-side/manifest-generator/src/com/android/compatibility/common/generator/ManifestGenerator.java
new file mode 100644
index 0000000..e23e254
--- /dev/null
+++ b/common/host-side/manifest-generator/src/com/android/compatibility/common/generator/ManifestGenerator.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.compatibility.common.generator;
+
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.kxml2.io.KXmlSerializer;
+
+public class ManifestGenerator {
+
+    private static final String USAGE = "Usage: "
+        + "manifest-generator -n NAME -p PACKAGE_NAME -o OUTPUT_FILE -i INSTRUMENT_NAME "
+        + "[-r PERMISSION]+ [-a ACTIVITY]+";
+    private static final String MANIFEST = "manifest";
+    private static final String USES_SDK = "uses-sdk";
+    private static final String USES_PERMISSION = "uses-permission";
+    private static final String APPLICATION = "application";
+    private static final String INSTRUMENTATION = "instrumentation";
+    private static final String ACTIVITY = "activity";
+
+    public static void main(String[] args) {
+        String pkgName = null;
+        String instrumentName = null;
+        List<String> permissions = new ArrayList<>();
+        List<String> activities = new ArrayList<>();
+        String output = null;
+
+        for (int i = 0; i < args.length - 1; i++) {
+            if (args[i].equals("-p")) {
+                pkgName = args[++i];
+            } else if (args[i].equals("-a")) {
+                activities.add(args[++i]);
+            } else if (args[i].equals("-o")) {
+                output = args[++i];
+            } else if (args[i].equals("-i")) {
+                instrumentName = args[++i];
+            } else if (args[i].equals("-r")) {
+                permissions.add(args[++i]);
+            }
+        }
+
+        if (pkgName == null) {
+            error("Missing package name");
+        } else if (instrumentName == null) {
+            error("Missing instrumentation name");
+        } else if (activities.isEmpty()) {
+            error("No activities");
+        } else if (output == null) {
+            error("Missing output file");
+        }
+
+        FileOutputStream out = null;
+        try {
+          out = new FileOutputStream(output);
+          generate(out, pkgName, instrumentName, permissions, activities);
+        } catch (Exception e) {
+          System.err.println("Couldn't create manifest file");
+        } finally {
+          if (out != null) {
+              try {
+                  out.close();
+              } catch (Exception e) {
+                  // Ignore
+              }
+          }
+        }
+    }
+
+    /*package*/ static void generate(OutputStream out, String pkgName, String instrumentName,
+            List<String> permissions, List<String> activities) throws Exception {
+        final String ns = null;
+        KXmlSerializer serializer = new KXmlSerializer();
+        serializer.setOutput(out, "UTF-8");
+        serializer.startDocument("UTF-8", true);
+        serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
+        serializer.startTag(ns, MANIFEST);
+        serializer.attribute(ns, "xmlns:android", "http://schemas.android.com/apk/res/android");
+        serializer.attribute(ns, "package", pkgName);
+        serializer.startTag(ns, USES_SDK);
+        serializer.attribute(ns, "android:minSdkVersion", "8");
+        serializer.endTag(ns, USES_SDK);
+        for (String permission : permissions) {
+            serializer.startTag(ns, USES_PERMISSION);
+            serializer.attribute(ns, "android:name", permission);
+            serializer.endTag(ns, USES_PERMISSION);
+        }
+        serializer.startTag(ns, APPLICATION);
+        for (String activity : activities) {
+            serializer.startTag(ns, ACTIVITY);
+            serializer.attribute(ns, "android:name", activity);
+            serializer.endTag(ns, ACTIVITY);
+        }
+        serializer.endTag(ns, APPLICATION);
+        serializer.startTag(ns, INSTRUMENTATION);
+        serializer.attribute(ns, "android:name", instrumentName);
+        serializer.attribute(ns, "android:targetPackage", pkgName);
+        serializer.endTag(ns, INSTRUMENTATION);
+        serializer.endTag(ns, MANIFEST);
+        serializer.endDocument();
+        out.flush();
+    }
+
+    private static void error(String message) {
+        System.err.println(message);
+        System.err.println(USAGE);
+        System.exit(1);
+    }
+
+}
diff --git a/common/host-side/manifest-generator/tests/Android.mk b/common/host-side/manifest-generator/tests/Android.mk
new file mode 100644
index 0000000..2eb5d2f
--- /dev/null
+++ b/common/host-side/manifest-generator/tests/Android.mk
@@ -0,0 +1,27 @@
+# Copyright (C) 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.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_JAVA_LIBRARIES := compatibility-manifest-generator junit
+
+LOCAL_MODULE := compatibility-manifest-generator-tests
+
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/common/host-side/manifest-generator/tests/src/com/android/compatibility/common/generator/ManifestGeneratorTest.java b/common/host-side/manifest-generator/tests/src/com/android/compatibility/common/generator/ManifestGeneratorTest.java
new file mode 100644
index 0000000..457bbb8
--- /dev/null
+++ b/common/host-side/manifest-generator/tests/src/com/android/compatibility/common/generator/ManifestGeneratorTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.compatibility.common.generator;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+/** Unit tests for {@link ManifestGenerator}. */
+public class ManifestGeneratorTest extends TestCase {
+
+    private static final String PACKAGE = "test.package";
+    private static final String INSTRUMENT = "test.package.TestInstrument";
+    private static final String MANIFEST = "<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>\r\n"
+        + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" "
+        + "package=\"test.package\">\r\n"
+        + "  <uses-sdk android:minSdkVersion=\"8\" />\r\n"
+        + "%s"
+        + "  <application>\r\n"
+        + "%s"
+        + "  </application>\r\n"
+        + "  <instrumentation android:name=\"test.package.TestInstrument\" "
+        + "android:targetPackage=\"test.package\" />\r\n"
+        + "</manifest>";
+    private static final String PERMISSION = "  <uses-permission android:name=\"%s\" />\r\n";
+    private static final String PERMISSION_A = "android.permission.PermissionA";
+    private static final String PERMISSION_B = "android.permission.PermissionB";
+    private static final String ACTIVITY = "    <activity android:name=\"%s\" />\r\n";
+    private static final String ACTIVITY_A = "test.package.ActivityA";
+    private static final String ACTIVITY_B = "test.package.ActivityB";
+
+    public void testManifest() throws Exception {
+        List<String> permissions = new ArrayList<>();
+        permissions.add(PERMISSION_A);
+        permissions.add(PERMISSION_B);
+        List<String> activities = new ArrayList<>();
+        activities.add(ACTIVITY_A);
+        activities.add(ACTIVITY_B);
+        OutputStream output = new OutputStream() {
+            private StringBuilder string = new StringBuilder();
+            @Override
+            public void write(int b) throws IOException {
+                this.string.append((char) b);
+            }
+
+            @Override
+            public String toString(){
+                return this.string.toString();
+            }
+        };
+        ManifestGenerator.generate(output, PACKAGE, INSTRUMENT, permissions, activities);
+        String permissionXml = String.format(PERMISSION, PERMISSION_A)
+                + String.format(PERMISSION, PERMISSION_B);
+        String activityXml = String.format(ACTIVITY, ACTIVITY_A)
+                + String.format(ACTIVITY, ACTIVITY_B);
+        String expected = String.format(MANIFEST, permissionXml, activityXml);
+        assertEquals("Wrong manifest output", expected, output.toString());
+    }
+
+}
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AdoptableHostTest.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AdoptableHostTest.java
new file mode 100644
index 0000000..76d90cc
--- /dev/null
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AdoptableHostTest.java
@@ -0,0 +1,346 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.appsecurity;
+
+import static com.android.cts.appsecurity.SplitTests.ABI_TO_APK;
+import static com.android.cts.appsecurity.SplitTests.APK;
+import static com.android.cts.appsecurity.SplitTests.APK_mdpi;
+import static com.android.cts.appsecurity.SplitTests.APK_xxhdpi;
+import static com.android.cts.appsecurity.SplitTests.CLASS;
+import static com.android.cts.appsecurity.SplitTests.PKG;
+
+import com.android.cts.appsecurity.SplitTests.BaseInstallMultiple;
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+import java.util.Arrays;
+
+/**
+ * Set of tests that verify behavior of adopted storage media, if supported.
+ */
+public class AdoptableHostTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
+    private IAbi mAbi;
+    private CtsBuildHelper mCtsBuild;
+
+    @Override
+    public void setAbi(IAbi abi) {
+        mAbi = abi;
+    }
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mCtsBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        assertNotNull(mAbi);
+        assertNotNull(mCtsBuild);
+
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        getDevice().uninstallPackage(PKG);
+    }
+
+    public void testApps() throws Exception {
+        if (!hasAdoptable()) return;
+        final String diskId = getAdoptionDisk();
+        try {
+            final String abi = mAbi.getName();
+            final String apk = ABI_TO_APK.get(abi);
+            assertNotNull("Failed to find APK for ABI " + abi, apk);
+
+            // Install simple app on internal
+            new InstallMultiple().useNaturalAbi().addApk(APK).addApk(apk).run();
+            runDeviceTests(PKG, CLASS, "testDataInternal");
+            runDeviceTests(PKG, CLASS, "testDataWrite");
+            runDeviceTests(PKG, CLASS, "testDataRead");
+            runDeviceTests(PKG, CLASS, "testNative");
+
+            // Adopt that disk!
+            assertEmpty(getDevice().executeShellCommand("sm partition " + diskId + " private"));
+            final LocalVolumeInfo vol = getAdoptionVolume();
+
+            // Move app and verify
+            assertSuccess(getDevice().executeShellCommand("pm move-package " + PKG + " " + vol.uuid));
+            runDeviceTests(PKG, CLASS, "testDataNotInternal");
+            runDeviceTests(PKG, CLASS, "testDataRead");
+            runDeviceTests(PKG, CLASS, "testNative");
+
+            // Unmount, remount and verify
+            getDevice().executeShellCommand("sm unmount " + vol.volId);
+            getDevice().executeShellCommand("sm mount " + vol.volId);
+            runDeviceTests(PKG, CLASS, "testDataNotInternal");
+            runDeviceTests(PKG, CLASS, "testDataRead");
+            runDeviceTests(PKG, CLASS, "testNative");
+
+            // Move app back and verify
+            assertSuccess(getDevice().executeShellCommand("pm move-package " + PKG + " internal"));
+            runDeviceTests(PKG, CLASS, "testDataInternal");
+            runDeviceTests(PKG, CLASS, "testDataRead");
+            runDeviceTests(PKG, CLASS, "testNative");
+
+            // Un-adopt volume and app should still be fine
+            getDevice().executeShellCommand("sm partition " + diskId + " public");
+            runDeviceTests(PKG, CLASS, "testDataInternal");
+            runDeviceTests(PKG, CLASS, "testDataRead");
+            runDeviceTests(PKG, CLASS, "testNative");
+
+        } finally {
+            cleanUp(diskId);
+        }
+    }
+
+    public void testPrimaryStorage() throws Exception {
+        if (!hasAdoptable()) return;
+        final String diskId = getAdoptionDisk();
+        try {
+            final String originalVol = getDevice()
+                    .executeShellCommand("sm get-primary-storage-uuid").trim();
+
+            if ("null".equals(originalVol)) {
+                verifyPrimaryInternal(diskId);
+            } else if ("primary_physical".equals(originalVol)) {
+                verifyPrimaryPhysical(diskId);
+            }
+        } finally {
+            cleanUp(diskId);
+        }
+    }
+
+    private void verifyPrimaryInternal(String diskId) throws Exception {
+        // Write some data to shared storage
+        new InstallMultiple().addApk(APK).run();
+        runDeviceTests(PKG, CLASS, "testPrimaryOnSameVolume");
+        runDeviceTests(PKG, CLASS, "testPrimaryInternal");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataWrite");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        // Adopt that disk!
+        assertEmpty(getDevice().executeShellCommand("sm partition " + diskId + " private"));
+        final LocalVolumeInfo vol = getAdoptionVolume();
+
+        // Move storage there and verify that data went along for ride
+        assertSuccess(getDevice().executeShellCommand("pm move-primary-storage " + vol.uuid));
+        runDeviceTests(PKG, CLASS, "testPrimaryAdopted");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        // Unmount and verify
+        getDevice().executeShellCommand("sm unmount " + vol.volId);
+        runDeviceTests(PKG, CLASS, "testPrimaryUnmounted");
+        getDevice().executeShellCommand("sm mount " + vol.volId);
+        runDeviceTests(PKG, CLASS, "testPrimaryAdopted");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        // Move app and verify backing storage volume is same
+        assertSuccess(getDevice().executeShellCommand("pm move-package " + PKG + " " + vol.uuid));
+        runDeviceTests(PKG, CLASS, "testPrimaryOnSameVolume");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        // And move back to internal
+        assertSuccess(getDevice().executeShellCommand("pm move-primary-storage internal"));
+        runDeviceTests(PKG, CLASS, "testPrimaryInternal");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        assertSuccess(getDevice().executeShellCommand("pm move-package " + PKG + " internal"));
+        runDeviceTests(PKG, CLASS, "testPrimaryOnSameVolume");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+    }
+
+    private void verifyPrimaryPhysical(String diskId) throws Exception {
+        // Write some data to shared storage
+        new InstallMultiple().addApk(APK).run();
+        runDeviceTests(PKG, CLASS, "testPrimaryPhysical");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataWrite");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        // Adopt that disk!
+        assertEmpty(getDevice().executeShellCommand("sm partition " + diskId + " private"));
+        final LocalVolumeInfo vol = getAdoptionVolume();
+
+        // Move primary storage there, but since we just nuked primary physical
+        // the storage device will be empty
+        assertSuccess(getDevice().executeShellCommand("pm move-primary-storage " + vol.uuid));
+        runDeviceTests(PKG, CLASS, "testPrimaryAdopted");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataWrite");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        // Unmount and verify
+        getDevice().executeShellCommand("sm unmount " + vol.volId);
+        runDeviceTests(PKG, CLASS, "testPrimaryUnmounted");
+        getDevice().executeShellCommand("sm mount " + vol.volId);
+        runDeviceTests(PKG, CLASS, "testPrimaryAdopted");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+
+        // And move to internal
+        assertSuccess(getDevice().executeShellCommand("pm move-primary-storage internal"));
+        runDeviceTests(PKG, CLASS, "testPrimaryOnSameVolume");
+        runDeviceTests(PKG, CLASS, "testPrimaryInternal");
+        runDeviceTests(PKG, CLASS, "testPrimaryDataRead");
+    }
+
+    /**
+     * Verify that we can install both new and inherited packages directly on
+     * adopted volumes.
+     */
+    public void testPackageInstaller() throws Exception {
+        if (!hasAdoptable()) return;
+        final String diskId = getAdoptionDisk();
+        try {
+            assertEmpty(getDevice().executeShellCommand("sm partition " + diskId + " private"));
+            final LocalVolumeInfo vol = getAdoptionVolume();
+
+            // Install directly onto adopted volume
+            new InstallMultiple().locationAuto().forceUuid(vol.uuid)
+                    .addApk(APK).addApk(APK_mdpi).run();
+            runDeviceTests(PKG, CLASS, "testDataNotInternal");
+            runDeviceTests(PKG, CLASS, "testDensityBest1");
+
+            // Now splice in an additional split which offers better resources
+            new InstallMultiple().locationAuto().inheritFrom(PKG)
+                    .addApk(APK_xxhdpi).run();
+            runDeviceTests(PKG, CLASS, "testDataNotInternal");
+            runDeviceTests(PKG, CLASS, "testDensityBest2");
+
+        } finally {
+            cleanUp(diskId);
+        }
+    }
+
+    /**
+     * Verify behavior when changes occur while adopted device is ejected and
+     * returned at a later time.
+     */
+    public void testEjected() throws Exception {
+        if (!hasAdoptable()) return;
+        final String diskId = getAdoptionDisk();
+        try {
+            assertEmpty(getDevice().executeShellCommand("sm partition " + diskId + " private"));
+            final LocalVolumeInfo vol = getAdoptionVolume();
+
+            // Install directly onto adopted volume, and write data there
+            new InstallMultiple().locationAuto().forceUuid(vol.uuid).addApk(APK).run();
+            runDeviceTests(PKG, CLASS, "testDataNotInternal");
+            runDeviceTests(PKG, CLASS, "testDataWrite");
+            runDeviceTests(PKG, CLASS, "testDataRead");
+
+            // Now unmount and uninstall; leaving stale package on adopted volume
+            getDevice().executeShellCommand("sm unmount " + vol.volId);
+            getDevice().uninstallPackage(PKG);
+
+            // Install second copy on internal, but don't write anything
+            new InstallMultiple().locationInternalOnly().addApk(APK).run();
+            runDeviceTests(PKG, CLASS, "testDataInternal");
+
+            // Kick through a remount cycle, which should purge the adopted app
+            getDevice().executeShellCommand("sm mount " + vol.volId);
+            runDeviceTests(PKG, CLASS, "testDataInternal");
+            try {
+                runDeviceTests(PKG, CLASS, "testDataRead");
+                fail("Unexpected data from adopted volume picked up");
+            } catch (AssertionError expected) {
+            }
+            getDevice().executeShellCommand("sm unmount " + vol.volId);
+
+            // Uninstall the internal copy and remount; we should have no record of app
+            getDevice().uninstallPackage(PKG);
+            getDevice().executeShellCommand("sm mount " + vol.volId);
+
+            assertEmpty(getDevice().executeShellCommand("pm list packages " + PKG));
+        } finally {
+            cleanUp(diskId);
+        }
+    }
+
+    private boolean hasAdoptable() throws Exception {
+        return Boolean.parseBoolean(getDevice().executeShellCommand("sm has-adoptable").trim());
+    }
+
+    private String getAdoptionDisk() throws Exception {
+        final String disks = getDevice().executeShellCommand("sm list-disks adoptable");
+        if (disks == null || disks.length() == 0) {
+            throw new AssertionError("Devices that claim to support adoptable storage must have "
+                    + "adoptable media inserted during CTS to verify correct behavior");
+        }
+        return disks.split("\n")[0].trim();
+    }
+
+    private LocalVolumeInfo getAdoptionVolume() throws Exception {
+        final String[] lines = getDevice().executeShellCommand("sm list-volumes private")
+                .split("\n");
+        for (String line : lines) {
+            final LocalVolumeInfo info = new LocalVolumeInfo(line.trim());
+            if (!"private".equals(info.volId)) {
+                return info;
+            }
+        }
+        throw new AssertionError("Expected private volume; found " + Arrays.toString(lines));
+    }
+
+    private void cleanUp(String diskId) throws Exception {
+        getDevice().executeShellCommand("sm partition " + diskId + " public");
+        getDevice().executeShellCommand("sm forget all");
+    }
+
+    private void runDeviceTests(String packageName, String testClassName, String testMethodName)
+            throws DeviceNotAvailableException {
+        Utils.runDeviceTests(getDevice(), packageName, testClassName, testMethodName);
+    }
+
+    private static void assertSuccess(String str) {
+        if (str == null || !str.startsWith("Success")) {
+            throw new AssertionError("Expected success string but found " + str);
+        }
+    }
+
+    private static void assertEmpty(String str) {
+        if (str != null && str.trim().length() > 0) {
+            throw new AssertionError("Expected empty string but found " + str);
+        }
+    }
+
+    private static class LocalVolumeInfo {
+        public String volId;
+        public String state;
+        public String uuid;
+
+        public LocalVolumeInfo(String line) {
+            final String[] split = line.split(" ");
+            volId = split[0];
+            state = split[1];
+            uuid = split[2];
+        }
+    }
+
+    private class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
+        public InstallMultiple() {
+            super(getDevice(), mCtsBuild, mAbi);
+        }
+    }
+}
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
index 206bdbe..bf9e81c 100644
--- a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/AppSecurityTests.java
@@ -19,15 +19,8 @@
 import com.android.cts.tradefed.build.CtsBuildHelper;
 import com.android.cts.util.AbiUtils;
 import com.android.ddmlib.Log;
-import com.android.ddmlib.testrunner.InstrumentationResultParser;
-import com.android.ddmlib.testrunner.TestIdentifier;
-import com.android.ddmlib.testrunner.TestResult;
-import com.android.ddmlib.testrunner.TestResult.TestStatus;
-import com.android.ddmlib.testrunner.TestRunResult;
 import com.android.tradefed.build.IBuildInfo;
 import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.result.CollectingTestListener;
 import com.android.tradefed.testtype.DeviceTestCase;
 import com.android.tradefed.testtype.IAbi;
 import com.android.tradefed.testtype.IAbiReceiver;
@@ -35,15 +28,13 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.util.Map;
 
 /**
- * Set of tests that verify various security checks involving multiple apps are properly enforced.
+ * Set of tests that verify various security checks involving multiple apps are
+ * properly enforced.
  */
 public class AppSecurityTests extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
 
-    private static final String RUNNER = "android.support.test.runner.AndroidJUnitRunner";
-
     // testSharedUidDifferentCerts constants
     private static final String SHARED_UI_APK = "CtsSharedUidInstall.apk";
     private static final String SHARED_UI_PKG = "com.android.cts.shareuidinstall";
@@ -68,18 +59,6 @@
     private static final String APP_ACCESS_DATA_APK = "CtsAppAccessData.apk";
     private static final String APP_ACCESS_DATA_PKG = "com.android.cts.appaccessdata";
 
-    // External storage constants
-    private static final String COMMON_EXTERNAL_STORAGE_APP_CLASS = "com.android.cts.externalstorageapp.CommonExternalStorageTest";
-    private static final String EXTERNAL_STORAGE_APP_APK = "CtsExternalStorageApp.apk";
-    private static final String EXTERNAL_STORAGE_APP_PKG = "com.android.cts.externalstorageapp";
-    private static final String EXTERNAL_STORAGE_APP_CLASS = EXTERNAL_STORAGE_APP_PKG + ".ExternalStorageTest";
-    private static final String READ_EXTERNAL_STORAGE_APP_APK = "CtsReadExternalStorageApp.apk";
-    private static final String READ_EXTERNAL_STORAGE_APP_PKG = "com.android.cts.readexternalstorageapp";
-    private static final String READ_EXTERNAL_STORAGE_APP_CLASS = READ_EXTERNAL_STORAGE_APP_PKG + ".ReadExternalStorageTest";
-    private static final String WRITE_EXTERNAL_STORAGE_APP_APK = "CtsWriteExternalStorageApp.apk";
-    private static final String WRITE_EXTERNAL_STORAGE_APP_PKG = "com.android.cts.writeexternalstorageapp";
-    private static final String WRITE_EXTERNAL_STORAGE_APP_CLASS = WRITE_EXTERNAL_STORAGE_APP_PKG + ".WriteExternalStorageTest";
-
     // testInstrumentationDiffCert constants
     private static final String TARGET_INSTRUMENT_APK = "CtsTargetInstrumentationApp.apk";
     private static final String TARGET_INSTRUMENT_PKG = "com.android.cts.targetinstrumentationapp";
@@ -97,17 +76,8 @@
     private static final String PERMISSION_DIFF_CERT_PKG =
         "com.android.cts.usespermissiondiffcertapp";
 
-    private static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
-
-    private static final String MULTIUSER_STORAGE_APK = "CtsMultiUserStorageApp.apk";
-    private static final String MULTIUSER_STORAGE_PKG = "com.android.cts.multiuserstorageapp";
-    private static final String MULTIUSER_STORAGE_CLASS = MULTIUSER_STORAGE_PKG
-            + ".MultiUserStorageTest";
-
     private static final String LOG_TAG = "AppSecurityTests";
 
-    private static final int USER_OWNER = 0;
-
     private IAbi mAbi;
     private CtsBuildHelper mCtsBuild;
 
@@ -156,8 +126,7 @@
             assertNotNull("shared uid app with different cert than existing app installed " +
                     "successfully", installResult);
             assertEquals("INSTALL_FAILED_SHARED_USER_INCOMPATIBLE", installResult);
-        }
-        finally {
+        } finally {
             getDevice().uninstallPackage(SHARED_UI_PKG);
             getDevice().uninstallPackage(SHARED_UI_DIFF_CERT_PKG);
         }
@@ -183,8 +152,7 @@
             assertNotNull("app upgrade with different cert than existing app installed " +
                     "successfully", installResult);
             assertEquals("INSTALL_FAILED_UPDATE_INCOMPATIBLE", installResult);
-        }
-        finally {
+        } finally {
             getDevice().uninstallPackage(SIMPLE_APP_PKG);
         }
     }
@@ -205,132 +173,21 @@
             assertNull(String.format("failed to install app with data. Reason: %s", installResult),
                     installResult);
             // run appwithdata's tests to create private data
-            assertTrue("failed to create app's private data", runDeviceTests(APP_WITH_DATA_PKG,
-                    APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD));
+            runDeviceTests(APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD);
 
             installResult = getDevice().installPackage(getTestAppFile(APP_ACCESS_DATA_APK),
                     false, options);
             assertNull(String.format("failed to install app access data. Reason: %s",
                     installResult), installResult);
             // run appaccessdata's tests which attempt to access appwithdata's private data
-            assertTrue("could access app's private data", runDeviceTests(APP_ACCESS_DATA_PKG));
-        }
-        finally {
+            runDeviceTests(APP_ACCESS_DATA_PKG);
+        } finally {
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
             getDevice().uninstallPackage(APP_ACCESS_DATA_PKG);
         }
     }
 
     /**
-     * Verify that app with no external storage permissions works correctly.
-     */
-    public void testExternalStorageNone() throws Exception {
-        final int[] users = createUsersForTest();
-        try {
-            wipePrimaryExternalStorage(getDevice());
-
-            getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
-            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
-            assertNull(getDevice()
-                    .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false, options));
-
-            for (int user : users) {
-                assertTrue("Failed external storage with no permissions",
-                        runDeviceTests(EXTERNAL_STORAGE_APP_PKG, user));
-            }
-        } finally {
-            getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
-            removeUsersForTest(users);
-        }
-    }
-
-    /**
-     * Verify that app with
-     * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} works
-     * correctly.
-     */
-    public void testExternalStorageRead() throws Exception {
-        final int[] users = createUsersForTest();
-        try {
-            wipePrimaryExternalStorage(getDevice());
-
-            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
-            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
-            assertNull(getDevice()
-                    .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false, options));
-
-            for (int user : users) {
-                assertTrue("Failed external storage with read permissions",
-                        runDeviceTests(READ_EXTERNAL_STORAGE_APP_PKG, user));
-            }
-        } finally {
-            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
-            removeUsersForTest(users);
-        }
-    }
-
-    /**
-     * Verify that app with
-     * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} works
-     * correctly.
-     */
-    public void testExternalStorageWrite() throws Exception {
-        final int[] users = createUsersForTest();
-        try {
-            wipePrimaryExternalStorage(getDevice());
-
-            getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
-            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
-            assertNull(getDevice()
-                    .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false, options));
-
-            for (int user : users) {
-                assertTrue("Failed external storage with write permissions",
-                        runDeviceTests(WRITE_EXTERNAL_STORAGE_APP_PKG, user));
-            }
-        } finally {
-            getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
-            removeUsersForTest(users);
-        }
-    }
-
-    /**
-     * Verify that app with WRITE_EXTERNAL can leave gifts in external storage
-     * directories belonging to other apps, and those apps can read.
-     */
-    public void testExternalStorageGifts() throws Exception {
-        final int[] users = createUsersForTest();
-        try {
-            wipePrimaryExternalStorage(getDevice());
-
-            getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
-            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
-            getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
-            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
-            assertNull(getDevice()
-                    .installPackage(getTestAppFile(EXTERNAL_STORAGE_APP_APK), false, options));
-            assertNull(getDevice()
-                    .installPackage(getTestAppFile(READ_EXTERNAL_STORAGE_APP_APK), false, options));
-            assertNull(getDevice()
-                    .installPackage(getTestAppFile(WRITE_EXTERNAL_STORAGE_APP_APK), false, options));
-
-            for (int user : users) {
-                assertTrue("Failed to write gifts", runDeviceTests(WRITE_EXTERNAL_STORAGE_APP_PKG,
-                        WRITE_EXTERNAL_STORAGE_APP_CLASS, "doWriteGifts", user));
-                assertTrue("Read failed to verify gifts", runDeviceTests(READ_EXTERNAL_STORAGE_APP_PKG,
-                        READ_EXTERNAL_STORAGE_APP_CLASS, "doVerifyGifts", user));
-                assertTrue("None failed to verify gifts", runDeviceTests(EXTERNAL_STORAGE_APP_PKG,
-                        EXTERNAL_STORAGE_APP_CLASS, "doVerifyGifts", user));
-            }
-        } finally {
-            getDevice().uninstallPackage(EXTERNAL_STORAGE_APP_PKG);
-            getDevice().uninstallPackage(READ_EXTERNAL_STORAGE_APP_PKG);
-            getDevice().uninstallPackage(WRITE_EXTERNAL_STORAGE_APP_PKG);
-            removeUsersForTest(users);
-        }
-    }
-
-    /**
      * Test that uninstall of an app removes its private data.
      */
     public void testUninstallRemovesData() throws Exception {
@@ -345,8 +202,7 @@
             assertNull(String.format("failed to install app with data. Reason: %s", installResult),
                     installResult);
             // run appwithdata's tests to create private data
-            assertTrue("failed to create app's private data", runDeviceTests(APP_WITH_DATA_PKG,
-                    APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD));
+            runDeviceTests(APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD);
 
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
 
@@ -355,11 +211,9 @@
             assertNull(String.format("failed to install app with data second time. Reason: %s",
                     installResult), installResult);
             // run appwithdata's 'check if file exists' test
-            assertTrue("app's private data still exists after install", runDeviceTests(
-                    APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CHECK_NOEXIST_METHOD));
-
-        }
-        finally {
+            runDeviceTests(APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS,
+                    APP_WITH_DATA_CHECK_NOEXIST_METHOD);
+        } finally {
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
         }
     }
@@ -389,10 +243,8 @@
             // run INSTRUMENT_DIFF_CERT_PKG tests
             // this test will attempt to call startInstrumentation directly and verify
             // SecurityException is thrown
-            assertTrue("running instrumentation with diff cert unexpectedly succeeded",
-                    runDeviceTests(INSTRUMENT_DIFF_CERT_PKG));
-        }
-        finally {
+            runDeviceTests(INSTRUMENT_DIFF_CERT_PKG);
+        } finally {
             getDevice().uninstallPackage(TARGET_INSTRUMENT_PKG);
             getDevice().uninstallPackage(INSTRUMENT_DIFF_CERT_PKG);
         }
@@ -427,209 +279,20 @@
             assertNull(String.format("failed to install permission app with diff cert. Reason: %s",
                     installResult), installResult);
             // run PERMISSION_DIFF_CERT_PKG tests which try to access the permission
-            TestRunResult result = doRunTests(PERMISSION_DIFF_CERT_PKG, null, null, USER_OWNER);
-            assertDeviceTestsPass(result);
-        }
-        finally {
+            runDeviceTests(PERMISSION_DIFF_CERT_PKG);
+        } finally {
             getDevice().uninstallPackage(DECLARE_PERMISSION_PKG);
             getDevice().uninstallPackage(DECLARE_PERMISSION_COMPAT_PKG);
             getDevice().uninstallPackage(PERMISSION_DIFF_CERT_PKG);
         }
     }
 
-    /**
-     * Test multi-user emulated storage environment, ensuring that each user has
-     * isolated storage.
-     */
-    public void testMultiUserStorageIsolated() throws Exception {
-        final String PACKAGE = MULTIUSER_STORAGE_PKG;
-        final String CLAZZ = MULTIUSER_STORAGE_CLASS;
-
-        final int[] users = createUsersForTest();
-        try {
-            if (users.length == 1) {
-                Log.d(LOG_TAG, "Single user device; skipping isolated storage tests");
-                return;
-            }
-
-            final int owner = users[0];
-            final int secondary = users[1];
-
-            // Install our test app
-            getDevice().uninstallPackage(MULTIUSER_STORAGE_PKG);
-            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
-            final String installResult = getDevice()
-                    .installPackage(getTestAppFile(MULTIUSER_STORAGE_APK), false, options);
-            assertNull("Failed to install: " + installResult, installResult);
-
-            // Clear data from previous tests
-            assertDeviceTestsPass(
-                    doRunTests(PACKAGE, CLAZZ, "cleanIsolatedStorage", owner));
-            assertDeviceTestsPass(
-                    doRunTests(PACKAGE, CLAZZ, "cleanIsolatedStorage", secondary));
-
-            // Have both users try writing into isolated storage
-            assertDeviceTestsPass(
-                    doRunTests(PACKAGE, CLAZZ, "writeIsolatedStorage", owner));
-            assertDeviceTestsPass(
-                    doRunTests(PACKAGE, CLAZZ, "writeIsolatedStorage", secondary));
-
-            // Verify they both have isolated view of storage
-            assertDeviceTestsPass(
-                    doRunTests(PACKAGE, CLAZZ, "readIsolatedStorage", owner));
-            assertDeviceTestsPass(
-                    doRunTests(PACKAGE, CLAZZ, "readIsolatedStorage", secondary));
-        } finally {
-            getDevice().uninstallPackage(MULTIUSER_STORAGE_PKG);
-            removeUsersForTest(users);
-        }
+    private void runDeviceTests(String packageName) throws DeviceNotAvailableException {
+        Utils.runDeviceTests(getDevice(), packageName);
     }
 
-    /**
-     * Helper method that checks that all tests in given result passed, and attempts to generate
-     * a meaningful error message if they failed.
-     *
-     * @param result
-     */
-    private void assertDeviceTestsPass(TestRunResult result) {
-        // TODO: consider rerunning if this occurred
-        assertFalse(String.format("Failed to successfully run device tests for %s. Reason: %s",
-                result.getName(), result.getRunFailureMessage()), result.isRunFailure());
-
-        if (result.hasFailedTests()) {
-            // build a meaningful error message
-            StringBuilder errorBuilder = new StringBuilder("on-device tests failed:\n");
-            for (Map.Entry<TestIdentifier, TestResult> resultEntry :
-                result.getTestResults().entrySet()) {
-                if (!resultEntry.getValue().getStatus().equals(TestStatus.PASSED)) {
-                    errorBuilder.append(resultEntry.getKey().toString());
-                    errorBuilder.append(":\n");
-                    errorBuilder.append(resultEntry.getValue().getStackTrace());
-                }
-            }
-            fail(errorBuilder.toString());
-        }
-    }
-
-    /**
-     * Helper method that will the specified packages tests on device.
-     *
-     * @param pkgName Android application package for tests
-     * @return <code>true</code> if all tests passed.
-     * @throws DeviceNotAvailableException if connection to device was lost.
-     */
-    private boolean runDeviceTests(String pkgName) throws DeviceNotAvailableException {
-        return runDeviceTests(pkgName, null, null, USER_OWNER);
-    }
-
-    private boolean runDeviceTests(String pkgName, int userId) throws DeviceNotAvailableException {
-        return runDeviceTests(pkgName, null, null, userId);
-    }
-
-    /**
-     * Helper method that will the specified packages tests on device.
-     *
-     * @param pkgName Android application package for tests
-     * @return <code>true</code> if all tests passed.
-     * @throws DeviceNotAvailableException if connection to device was lost.
-     */
-    private boolean runDeviceTests(String pkgName, String testClassName, String testMethodName)
+    private void runDeviceTests(String packageName, String testClassName, String testMethodName)
             throws DeviceNotAvailableException {
-        return runDeviceTests(pkgName, testClassName, testMethodName, USER_OWNER);
-    }
-
-    private boolean runDeviceTests(String pkgName, String testClassName, String testMethodName,
-            int userId) throws DeviceNotAvailableException {
-        TestRunResult runResult = doRunTests(pkgName, testClassName, testMethodName,
-                userId);
-        return !runResult.hasFailedTests();
-    }
-
-    private static boolean isMultiUserSupportedOnDevice(ITestDevice device)
-            throws DeviceNotAvailableException {
-        // TODO: move this to ITestDevice once it supports users
-        final String output = device.executeShellCommand("pm get-max-users");
-        try {
-            return Integer.parseInt(output.substring(output.lastIndexOf(" ")).trim()) > 1;
-        } catch (NumberFormatException e) {
-            fail("Failed to parse result: " + output);
-        }
-        return false;
-    }
-
-    /**
-     * Return set of users that test should be run for, creating a secondary
-     * user if the device supports it. Always call
-     * {@link #removeUsersForTest(int[])} when finished.
-     */
-    private int[] createUsersForTest() throws DeviceNotAvailableException {
-        if (isMultiUserSupportedOnDevice(getDevice())) {
-            return new int[] { USER_OWNER, createUserOnDevice(getDevice()) };
-        } else {
-            Log.d(LOG_TAG, "Single user device; skipping isolated storage tests");
-            return new int[] { USER_OWNER };
-        }
-    }
-
-    private void removeUsersForTest(int[] users) throws DeviceNotAvailableException {
-        for (int user : users) {
-            if (user != USER_OWNER) {
-                removeUserOnDevice(getDevice(), user);
-            }
-        }
-   }
-
-    private static int createUserOnDevice(ITestDevice device) throws DeviceNotAvailableException {
-        // TODO: move this to ITestDevice once it supports users
-        final String name = "CTS_" + System.currentTimeMillis();
-        final String output = device.executeShellCommand("pm create-user " + name);
-        if (output.startsWith("Success")) {
-            try {
-                final int userId = Integer.parseInt(
-                        output.substring(output.lastIndexOf(" ")).trim());
-                device.executeShellCommand("am start-user " + userId);
-                return userId;
-            } catch (NumberFormatException e) {
-                fail("Failed to parse result: " + output);
-            }
-        } else {
-            fail("Failed to create user: " + output);
-        }
-        throw new IllegalStateException();
-    }
-
-    private static void removeUserOnDevice(ITestDevice device, int userId)
-            throws DeviceNotAvailableException {
-        // TODO: move this to ITestDevice once it supports users
-        final String output = device.executeShellCommand("pm remove-user " + userId);
-        if (output.startsWith("Error")) {
-            fail("Failed to remove user: " + output);
-        }
-    }
-
-    private TestRunResult doRunTests(String pkgName, String testClassName, String testMethodName,
-            int userId) throws DeviceNotAvailableException {
-        // TODO: move this to RemoteAndroidTestRunner once it supports users
-        final StringBuilder cmd = new StringBuilder("am instrument --user " + userId + " -w -r");
-        if (testClassName != null) {
-            cmd.append(" -e class " + testClassName);
-            if (testMethodName != null) {
-                cmd.append("#" + testMethodName);
-            }
-        }
-        cmd.append(" " + pkgName + "/" + RUNNER);
-
-        Log.i(LOG_TAG, "Running " + cmd + " on " + getDevice().getSerialNumber());
-
-        CollectingTestListener listener = new CollectingTestListener();
-        InstrumentationResultParser parser = new InstrumentationResultParser(pkgName, listener);
-
-        getDevice().executeShellCommand(cmd.toString(), parser);
-        return listener.getCurrentRunResults();
-    }
-
-    private static void wipePrimaryExternalStorage(ITestDevice device)
-            throws DeviceNotAvailableException {
-        device.executeShellCommand("rm -rf /sdcard/*");
+        Utils.runDeviceTests(getDevice(), packageName, testClassName, testMethodName);
     }
 }
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/DocumentsTest.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/DocumentsTest.java
index fbde558..a4ec65a 100644
--- a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/DocumentsTest.java
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/DocumentsTest.java
@@ -24,6 +24,10 @@
 import com.android.tradefed.testtype.IAbiReceiver;
 import com.android.tradefed.testtype.IBuildReceiver;
 
+/**
+ * Set of tests that verify behavior of
+ * {@link android.provider.DocumentsContract} and related intents.
+ */
 public class DocumentsTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
     private static final String PROVIDER_PKG = "com.android.cts.documentprovider";
     private static final String PROVIDER_APK = "CtsDocumentProvider.apk";
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/ExternalStorageHostTest.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/ExternalStorageHostTest.java
new file mode 100644
index 0000000..cb67c63
--- /dev/null
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/ExternalStorageHostTest.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.appsecurity;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.cts.util.AbiUtils;
+import com.android.ddmlib.Log;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+
+/**
+ * Set of tests that verify behavior of external storage devices.
+ */
+public class ExternalStorageHostTest extends DeviceTestCase
+        implements IAbiReceiver, IBuildReceiver {
+    private static final String TAG = "ExternalStorageHostTest";
+
+    private static final String COMMON_CLASS =
+            "com.android.cts.externalstorageapp.CommonExternalStorageTest";
+
+    private static final String NONE_APK = "CtsExternalStorageApp.apk";
+    private static final String NONE_PKG = "com.android.cts.externalstorageapp";
+    private static final String NONE_CLASS = ".ExternalStorageTest";
+    private static final String READ_APK = "CtsReadExternalStorageApp.apk";
+    private static final String READ_PKG = "com.android.cts.readexternalstorageapp";
+    private static final String READ_CLASS = ".ReadExternalStorageTest";
+    private static final String WRITE_APK = "CtsWriteExternalStorageApp.apk";
+    private static final String WRITE_PKG = "com.android.cts.writeexternalstorageapp";
+    private static final String WRITE_CLASS = ".WriteExternalStorageTest";
+    private static final String MULTIUSER_APK = "CtsMultiUserStorageApp.apk";
+    private static final String MULTIUSER_PKG = "com.android.cts.multiuserstorageapp";
+    private static final String MULTIUSER_CLASS = ".MultiUserStorageTest";
+
+    private IAbi mAbi;
+    private CtsBuildHelper mCtsBuild;
+
+    @Override
+    public void setAbi(IAbi abi) {
+        mAbi = abi;
+    }
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mCtsBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    private File getTestAppFile(String fileName) throws FileNotFoundException {
+        return mCtsBuild.getTestApp(fileName);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        assertNotNull(mAbi);
+        assertNotNull(mCtsBuild);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    /**
+     * Verify that app with no external storage permissions works correctly.
+     */
+    public void testExternalStorageNone() throws Exception {
+        final int[] users = createUsersForTest();
+        try {
+            wipePrimaryExternalStorage();
+
+            getDevice().uninstallPackage(NONE_PKG);
+            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+            assertNull(getDevice().installPackage(getTestAppFile(NONE_APK), false, options));
+
+            for (int user : users) {
+                runDeviceTests(NONE_PKG, COMMON_CLASS, user);
+                runDeviceTests(NONE_PKG, NONE_CLASS, user);
+            }
+        } finally {
+            getDevice().uninstallPackage(NONE_PKG);
+            removeUsersForTest(users);
+        }
+    }
+
+    /**
+     * Verify that app with
+     * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} works
+     * correctly.
+     */
+    public void testExternalStorageRead() throws Exception {
+        final int[] users = createUsersForTest();
+        try {
+            wipePrimaryExternalStorage();
+
+            getDevice().uninstallPackage(READ_PKG);
+            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+            assertNull(getDevice().installPackage(getTestAppFile(READ_APK), false, options));
+
+            for (int user : users) {
+                runDeviceTests(READ_PKG, COMMON_CLASS, user);
+                runDeviceTests(READ_PKG, READ_CLASS, user);
+            }
+        } finally {
+            getDevice().uninstallPackage(READ_PKG);
+            removeUsersForTest(users);
+        }
+    }
+
+    /**
+     * Verify that app with
+     * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} works
+     * correctly.
+     */
+    public void testExternalStorageWrite() throws Exception {
+        final int[] users = createUsersForTest();
+        try {
+            wipePrimaryExternalStorage();
+
+            getDevice().uninstallPackage(WRITE_PKG);
+            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+            assertNull(getDevice().installPackage(getTestAppFile(WRITE_APK), false, options));
+
+            for (int user : users) {
+                runDeviceTests(WRITE_PKG, COMMON_CLASS, user);
+                runDeviceTests(WRITE_PKG, WRITE_CLASS, user);
+            }
+        } finally {
+            getDevice().uninstallPackage(WRITE_PKG);
+            removeUsersForTest(users);
+        }
+    }
+
+    /**
+     * Verify that app with WRITE_EXTERNAL can leave gifts in external storage
+     * directories belonging to other apps, and those apps can read.
+     */
+    public void testExternalStorageGifts() throws Exception {
+        final int[] users = createUsersForTest();
+        try {
+            wipePrimaryExternalStorage();
+
+            getDevice().uninstallPackage(NONE_PKG);
+            getDevice().uninstallPackage(READ_PKG);
+            getDevice().uninstallPackage(WRITE_PKG);
+            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+            assertNull(getDevice().installPackage(getTestAppFile(NONE_APK), false, options));
+            assertNull(getDevice().installPackage(getTestAppFile(READ_APK), false, options));
+            assertNull(getDevice().installPackage(getTestAppFile(WRITE_APK), false, options));
+
+            for (int user : users) {
+                runDeviceTests(WRITE_PKG, "WriteGiftTest", user);
+                runDeviceTests(READ_PKG, "ReadGiftTest", user);
+                runDeviceTests(NONE_PKG, "GiftTest", user);
+            }
+        } finally {
+            getDevice().uninstallPackage(NONE_PKG);
+            getDevice().uninstallPackage(READ_PKG);
+            getDevice().uninstallPackage(WRITE_PKG);
+            removeUsersForTest(users);
+        }
+    }
+
+    /**
+     * Test multi-user emulated storage environment, ensuring that each user has
+     * isolated storage.
+     */
+    public void testMultiUserStorageIsolated() throws Exception {
+        final int[] users = createUsersForTest();
+        try {
+            if (users.length == 1) {
+                Log.d(TAG, "Single user device; skipping isolated storage tests");
+                return;
+            }
+
+            final int owner = users[0];
+            final int secondary = users[1];
+
+            // Install our test app
+            getDevice().uninstallPackage(MULTIUSER_PKG);
+            String[] options = {AbiUtils.createAbiFlag(mAbi.getName())};
+            final String installResult = getDevice()
+                    .installPackage(getTestAppFile(MULTIUSER_APK), false, options);
+            assertNull("Failed to install: " + installResult, installResult);
+
+            // Clear data from previous tests
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testCleanIsolatedStorage", owner);
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testCleanIsolatedStorage", secondary);
+
+            // Have both users try writing into isolated storage
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testWriteIsolatedStorage", owner);
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testWriteIsolatedStorage", secondary);
+
+            // Verify they both have isolated view of storage
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testReadIsolatedStorage", owner);
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testReadIsolatedStorage", secondary);
+
+            // Verify they can't poke at each other
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testUserIsolation", owner);
+            runDeviceTests(MULTIUSER_PKG, MULTIUSER_CLASS, "testUserIsolation", secondary);
+        } finally {
+            getDevice().uninstallPackage(MULTIUSER_PKG);
+            removeUsersForTest(users);
+        }
+    }
+
+    private void wipePrimaryExternalStorage() throws DeviceNotAvailableException {
+        getDevice().executeShellCommand("rm -rf /sdcard/*");
+    }
+
+    private int[] createUsersForTest() throws DeviceNotAvailableException {
+        return Utils.createUsersForTest(getDevice());
+    }
+
+    private void removeUsersForTest(int[] users) throws DeviceNotAvailableException {
+        Utils.removeUsersForTest(getDevice(), users);
+    }
+
+    private void runDeviceTests(String packageName, String testClassName, int userId)
+            throws DeviceNotAvailableException {
+        Utils.runDeviceTests(getDevice(), packageName, testClassName, userId);
+    }
+
+    private void runDeviceTests(String packageName, String testClassName, String testMethodName,
+            int userId) throws DeviceNotAvailableException {
+        Utils.runDeviceTests(getDevice(), packageName, testClassName, testMethodName, userId);
+    }
+}
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/PermissionsHostTest.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/PermissionsHostTest.java
new file mode 100644
index 0000000..4b5259d
--- /dev/null
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/PermissionsHostTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.appsecurity;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.testtype.IAbiReceiver;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+/**
+ * Set of tests that verify behavior of runtime permissions, including both
+ * dynamic granting and behavior of legacy apps.
+ */
+public class PermissionsHostTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
+    private static final String PKG = "com.android.cts.usepermission";
+
+    private static final String APK = "CtsUsePermissionApp.apk";
+    private static final String APK_COMPAT = "CtsUsePermissionAppCompat.apk";
+
+    private IAbi mAbi;
+    private CtsBuildHelper mCtsBuild;
+
+    @Override
+    public void setAbi(IAbi abi) {
+        mAbi = abi;
+    }
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mCtsBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        assertNotNull(mAbi);
+        assertNotNull(mCtsBuild);
+
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        getDevice().uninstallPackage(PKG);
+    }
+
+    public void testFail() throws Exception {
+        // Sanity check that remote failure is host failure
+        assertNull(getDevice().installPackage(mCtsBuild.getTestApp(APK), false, false));
+        try {
+            runDeviceTests(PKG, ".UsePermissionTest", "testFail");
+            fail("Expected remote failure");
+        } catch (AssertionError expected) {
+        }
+    }
+
+    public void testKill() throws Exception {
+        // Sanity check that remote kill is host failure
+        assertNull(getDevice().installPackage(mCtsBuild.getTestApp(APK), false, false));
+        try {
+            runDeviceTests(PKG, ".UsePermissionTest", "testKill");
+            fail("Expected remote failure");
+        } catch (AssertionError expected) {
+        }
+    }
+
+    public void testDefault() throws Exception {
+        assertNull(getDevice().installPackage(mCtsBuild.getTestApp(APK), false, false));
+        runDeviceTests(PKG, ".UsePermissionTest", "testDefault");
+    }
+
+    public void testGranted() throws Exception {
+        assertNull(getDevice().installPackage(mCtsBuild.getTestApp(APK), false, false));
+        grantPermission(PKG, "android.permission.READ_EXTERNAL_STORAGE");
+        grantPermission(PKG, "android.permission.WRITE_EXTERNAL_STORAGE");
+        runDeviceTests(PKG, ".UsePermissionTest", "testGranted");
+    }
+
+    public void testInteractiveGrant() throws Exception {
+        assertNull(getDevice().installPackage(mCtsBuild.getTestApp(APK), false, false));
+        runDeviceTests(PKG, ".UsePermissionTest", "testInteractiveGrant");
+    }
+
+    public void testCompatDefault() throws Exception {
+        assertNull(getDevice().installPackage(mCtsBuild.getTestApp(APK_COMPAT), false, false));
+        runDeviceTests(PKG, ".UsePermissionCompatTest", "testCompatDefault");
+    }
+
+    public void testCompatRevoked() throws Exception {
+        assertNull(getDevice().installPackage(mCtsBuild.getTestApp(APK_COMPAT), false, false));
+        setAppOps(PKG, "android:read_external_storage", "deny");
+        setAppOps(PKG, "android:write_external_storage", "deny");
+        runDeviceTests(PKG, ".UsePermissionCompatTest", "testCompatRevoked");
+    }
+
+    private void runDeviceTests(String packageName, String testClassName, String testMethodName)
+            throws DeviceNotAvailableException {
+        Utils.runDeviceTests(getDevice(), packageName, testClassName, testMethodName);
+    }
+
+    private void grantPermission(String pkg, String permission) throws Exception {
+        assertEmpty(getDevice().executeShellCommand("pm grant " + pkg + " " + permission));
+    }
+
+    private void revokePermission(String pkg, String permission) throws Exception {
+        assertEmpty(getDevice().executeShellCommand("pm revoke " + pkg + " " + permission));
+    }
+
+    private void setAppOps(String pkg, String op, String mode) throws Exception {
+        assertEmpty(getDevice().executeShellCommand("appops set " + pkg + " " + op + " " + mode));
+    }
+
+    private static void assertEmpty(String str) {
+        if (str == null || str.length() == 0) {
+            return;
+        } else {
+            fail("Expected empty string but found " + str);
+        }
+    }
+}
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/SplitTests.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/SplitTests.java
index 90cbed9..ef3af8d 100644
--- a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/SplitTests.java
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/SplitTests.java
@@ -36,14 +36,15 @@
  * Tests that verify installing of various split APKs from host side.
  */
 public class SplitTests extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
-    private static final String PKG = "com.android.cts.splitapp";
+    static final String PKG = "com.android.cts.splitapp";
+    static final String CLASS = ".SplitAppTest";
 
-    private static final String APK = "CtsSplitApp.apk";
+    static final String APK = "CtsSplitApp.apk";
 
-    private static final String APK_mdpi = "CtsSplitApp_mdpi-v4.apk";
-    private static final String APK_hdpi = "CtsSplitApp_hdpi-v4.apk";
-    private static final String APK_xhdpi = "CtsSplitApp_xhdpi-v4.apk";
-    private static final String APK_xxhdpi = "CtsSplitApp_xxhdpi-v4.apk";
+    static final String APK_mdpi = "CtsSplitApp_mdpi-v4.apk";
+    static final String APK_hdpi = "CtsSplitApp_hdpi-v4.apk";
+    static final String APK_xhdpi = "CtsSplitApp_xhdpi-v4.apk";
+    static final String APK_xxhdpi = "CtsSplitApp_xxhdpi-v4.apk";
 
     private static final String APK_v7 = "CtsSplitApp_v7.apk";
     private static final String APK_fr = "CtsSplitApp_fr.apk";
@@ -69,7 +70,7 @@
     private static final String APK_FEATURE = "CtsSplitAppFeature.apk";
     private static final String APK_FEATURE_v7 = "CtsSplitAppFeature_v7.apk";
 
-    private static final HashMap<String, String> ABI_TO_APK = new HashMap<>();
+    static final HashMap<String, String> ABI_TO_APK = new HashMap<>();
 
     static {
         ABI_TO_APK.put("x86", APK_x86);
@@ -113,18 +114,18 @@
 
     public void testSingleBase() throws Exception {
         new InstallMultiple().addApk(APK).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testSingleBase");
+        runDeviceTests(PKG, CLASS, "testSingleBase");
     }
 
     public void testDensitySingle() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_mdpi).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testDensitySingle");
+        runDeviceTests(PKG, CLASS, "testDensitySingle");
     }
 
     public void testDensityAll() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_mdpi).addApk(APK_hdpi).addApk(APK_xhdpi)
                 .addApk(APK_xxhdpi).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testDensityAll");
+        runDeviceTests(PKG, CLASS, "testDensityAll");
     }
 
     /**
@@ -133,11 +134,11 @@
      */
     public void testDensityBest() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_mdpi).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testDensityBest1");
+        runDeviceTests(PKG, CLASS, "testDensityBest1");
 
         // Now splice in an additional split which offers better resources
         new InstallMultiple().inheritFrom(PKG).addApk(APK_xxhdpi).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testDensityBest2");
+        runDeviceTests(PKG, CLASS, "testDensityBest2");
     }
 
     /**
@@ -146,12 +147,12 @@
      */
     public void testApi() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_v7).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testApi");
+        runDeviceTests(PKG, CLASS, "testApi");
     }
 
     public void testLocale() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_de).addApk(APK_fr).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testLocale");
+        runDeviceTests(PKG, CLASS, "testLocale");
     }
 
     /**
@@ -164,7 +165,7 @@
         assertNotNull("Failed to find APK for ABI " + abi, apk);
 
         new InstallMultiple().addApk(APK).addApk(apk).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testNative");
+        runDeviceTests(PKG, CLASS, "testNative");
     }
 
     /**
@@ -179,7 +180,7 @@
         assertNotNull("Failed to find APK for ABI " + abi, apk);
 
         new InstallMultiple().useNaturalAbi().addApk(APK).addApk(apk).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testNative");
+        runDeviceTests(PKG, CLASS, "testNative");
     }
 
     /**
@@ -192,7 +193,7 @@
             inst.addApk(apk);
         }
         inst.run();
-        runDeviceTests(PKG, ".SplitAppTest", "testNative");
+        runDeviceTests(PKG, CLASS, "testNative");
     }
 
     /**
@@ -207,7 +208,7 @@
             inst.addApk(apk);
         }
         inst.run();
-        runDeviceTests(PKG, ".SplitAppTest", "testNative");
+        runDeviceTests(PKG, CLASS, "testNative");
     }
 
     public void testDuplicateBase() throws Exception {
@@ -238,21 +239,21 @@
 
     public void testDiffRevision() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_DIFF_REVISION_v7).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testRevision0_12");
+        runDeviceTests(PKG, CLASS, "testRevision0_12");
     }
 
     public void testDiffRevisionInheritBase() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_v7).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testRevision0_0");
+        runDeviceTests(PKG, CLASS, "testRevision0_0");
         new InstallMultiple().inheritFrom(PKG).addApk(APK_DIFF_REVISION_v7).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testRevision0_12");
+        runDeviceTests(PKG, CLASS, "testRevision0_12");
     }
 
     public void testDiffRevisionInheritSplit() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_v7).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testRevision0_0");
+        runDeviceTests(PKG, CLASS, "testRevision0_0");
         new InstallMultiple().inheritFrom(PKG).addApk(APK_DIFF_REVISION).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testRevision12_0");
+        runDeviceTests(PKG, CLASS, "testRevision12_0");
     }
 
     public void testDiffRevisionDowngrade() throws Exception {
@@ -262,12 +263,12 @@
 
     public void testFeatureBase() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_FEATURE).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testFeatureBase");
+        runDeviceTests(PKG, CLASS, "testFeatureBase");
     }
 
     public void testFeatureApi() throws Exception {
         new InstallMultiple().addApk(APK).addApk(APK_FEATURE).addApk(APK_FEATURE_v7).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testFeatureApi");
+        runDeviceTests(PKG, CLASS, "testFeatureApi");
     }
 
     public void testInheritUpdatedBase() throws Exception {
@@ -283,35 +284,72 @@
      */
     public void testClearCodeCache() throws Exception {
         new InstallMultiple().addApk(APK).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testCodeCacheWrite");
+        runDeviceTests(PKG, CLASS, "testCodeCacheWrite");
         new InstallMultiple().addArg("-r").addApk(APK_DIFF_VERSION).run();
-        runDeviceTests(PKG, ".SplitAppTest", "testCodeCacheRead");
+        runDeviceTests(PKG, CLASS, "testCodeCacheRead");
     }
 
-    class InstallMultiple {
-        private List<String> mArgs = new ArrayList<>();
-        private List<File> mApks = new ArrayList<>();
+    private class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
+        public InstallMultiple() {
+            super(getDevice(), mCtsBuild, mAbi);
+        }
+    }
+
+    public static class BaseInstallMultiple<T extends BaseInstallMultiple<?>> {
+        private final ITestDevice mDevice;
+        private final CtsBuildHelper mBuild;
+        private final IAbi mAbi;
+
+        private final List<String> mArgs = new ArrayList<>();
+        private final List<File> mApks = new ArrayList<>();
         private boolean mUseNaturalAbi;
 
-        InstallMultiple addArg(String arg) {
+        public BaseInstallMultiple(ITestDevice device, CtsBuildHelper build, IAbi abi) {
+            mDevice = device;
+            mBuild = build;
+            mAbi = abi;
+            addArg("-g");
+        }
+
+        T addArg(String arg) {
             mArgs.add(arg);
-            return this;
+            return (T) this;
         }
 
-        InstallMultiple addApk(String apk) throws FileNotFoundException {
-            mApks.add(mCtsBuild.getTestApp(apk));
-            return this;
+        T addApk(String apk) throws FileNotFoundException {
+            mApks.add(mBuild.getTestApp(apk));
+            return (T) this;
         }
 
-        InstallMultiple inheritFrom(String packageName) {
+        T inheritFrom(String packageName) {
             addArg("-r");
             addArg("-p " + packageName);
-            return this;
+            return (T) this;
         }
 
-        InstallMultiple useNaturalAbi() {
+        T useNaturalAbi() {
             mUseNaturalAbi = true;
-            return this;
+            return (T) this;
+        }
+
+        T locationAuto() {
+            addArg("--install-location 0");
+            return (T) this;
+        }
+
+        T locationInternalOnly() {
+            addArg("--install-location 1");
+            return (T) this;
+        }
+
+        T locationPreferExternal() {
+            addArg("--install-location 2");
+            return (T) this;
+        }
+
+        T forceUuid(String uuid) {
+            addArg("--force-uuid " + uuid);
+            return (T) this;
         }
 
         void run() throws DeviceNotAvailableException {
@@ -323,7 +361,7 @@
         }
 
         private void run(boolean expectingSuccess) throws DeviceNotAvailableException {
-            final ITestDevice device = getDevice();
+            final ITestDevice device = mDevice;
 
             // Create an install session
             final StringBuilder cmd = new StringBuilder();
diff --git a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/Utils.java b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/Utils.java
index c58d6bf..fdf84d3 100644
--- a/hostsidetests/appsecurity/src/com/android/cts/appsecurity/Utils.java
+++ b/hostsidetests/appsecurity/src/com/android/cts/appsecurity/Utils.java
@@ -16,6 +16,7 @@
 
 package com.android.cts.appsecurity;
 
+import com.android.ddmlib.Log;
 import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
 import com.android.ddmlib.testrunner.TestIdentifier;
 import com.android.ddmlib.testrunner.TestResult;
@@ -28,13 +29,37 @@
 import java.util.Map;
 
 public class Utils {
+    private static final String TAG = "AppSecurity";
+
+    public static final int USER_OWNER = 0;
+
     public static void runDeviceTests(ITestDevice device, String packageName)
             throws DeviceNotAvailableException {
-        runDeviceTests(device, packageName, null, null);
+        runDeviceTests(device, packageName, null, null, USER_OWNER);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, int userId)
+            throws DeviceNotAvailableException {
+        runDeviceTests(device, packageName, null, null, userId);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName)
+            throws DeviceNotAvailableException {
+        runDeviceTests(device, packageName, testClassName, null, USER_OWNER);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
+            int userId) throws DeviceNotAvailableException {
+        runDeviceTests(device, packageName, testClassName, null, userId);
     }
 
     public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
             String testMethodName) throws DeviceNotAvailableException {
+        runDeviceTests(device, packageName, testClassName, testMethodName, USER_OWNER);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
+            String testMethodName, int userId) throws DeviceNotAvailableException {
         if (testClassName != null && testClassName.startsWith(".")) {
             testClassName = packageName + testClassName;
         }
@@ -43,6 +68,13 @@
                 "android.support.test.runner.AndroidJUnitRunner", device.getIDevice());
         if (testClassName != null && testMethodName != null) {
             testRunner.setMethodName(testClassName, testMethodName);
+        } else if (testClassName != null) {
+            testRunner.setClassName(testClassName);
+        }
+
+        if (userId != USER_OWNER) {
+            // TODO: move this to RemoteAndroidTestRunner once it supports users
+            testRunner.addInstrumentationArg("hack_key", "hack_value --user " + userId);
         }
 
         final CollectingTestListener listener = new CollectingTestListener();
@@ -68,4 +100,66 @@
             throw new AssertionError(errorBuilder.toString());
         }
     }
+
+    private static boolean isMultiUserSupportedOnDevice(ITestDevice device)
+            throws DeviceNotAvailableException {
+        // TODO: move this to ITestDevice once it supports users
+        final String output = device.executeShellCommand("pm get-max-users");
+        try {
+            return Integer.parseInt(output.substring(output.lastIndexOf(" ")).trim()) > 1;
+        } catch (NumberFormatException e) {
+            throw new AssertionError("Failed to parse result: " + output);
+        }
+    }
+
+    /**
+     * Return set of users that test should be run for, creating a secondary
+     * user if the device supports it. Always call
+     * {@link #removeUsersForTest(ITestDevice, int[])} when finished.
+     */
+    public static int[] createUsersForTest(ITestDevice device) throws DeviceNotAvailableException {
+        if (isMultiUserSupportedOnDevice(device)) {
+            return new int[] { USER_OWNER, createUserOnDevice(device) };
+        } else {
+            Log.d(TAG, "Single user device; skipping isolated storage tests");
+            return new int[] { USER_OWNER };
+        }
+    }
+
+    public static void removeUsersForTest(ITestDevice device, int[] users)
+            throws DeviceNotAvailableException {
+        for (int user : users) {
+            if (user != USER_OWNER) {
+                removeUserOnDevice(device, user);
+            }
+        }
+    }
+
+    private static int createUserOnDevice(ITestDevice device) throws DeviceNotAvailableException {
+        // TODO: move this to ITestDevice once it supports users
+        final String name = "CTS_" + System.currentTimeMillis();
+        final String output = device.executeShellCommand("pm create-user " + name);
+        if (output.startsWith("Success")) {
+            try {
+                final int userId = Integer.parseInt(
+                        output.substring(output.lastIndexOf(" ")).trim());
+                device.executeShellCommand("am start-user " + userId);
+                return userId;
+            } catch (NumberFormatException e) {
+                throw new AssertionError("Failed to parse result: " + output);
+            }
+        } else {
+            throw new AssertionError("Failed to create user: " + output);
+        }
+    }
+
+    private static void removeUserOnDevice(ITestDevice device, int userId)
+            throws DeviceNotAvailableException {
+        // TODO: move this to ITestDevice once it supports users
+        final String output = device.executeShellCommand("pm remove-user " + userId);
+        if (output.startsWith("Error")) {
+            throw new AssertionError("Failed to remove user: " + output);
+        }
+    }
+
 }
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/AndroidManifest.xml
index 9d8f615..98fe92a 100644
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/AndroidManifest.xml
@@ -23,4 +23,6 @@
     <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
         android:targetPackage="com.android.cts.externalstorageapp" />
 
+    <uses-permission android:name="android.permission.INTERNET" />
+
 </manifest>
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
index aa09f75..7fe0b80 100644
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
@@ -16,17 +16,24 @@
 
 package com.android.cts.externalstorageapp;
 
+import android.content.ContentResolver;
+import android.content.ContentValues;
 import android.content.Context;
+import android.net.Uri;
 import android.os.Environment;
+import android.provider.MediaStore;
+import android.provider.MediaStore.Images;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
+import java.io.BufferedReader;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -100,7 +107,7 @@
         for (File path : paths) {
             assertNotNull("Valid media must be inserted during CTS", path);
             assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
-                    Environment.getStorageState(path));
+                    Environment.getExternalStorageState(path));
 
             assertDirReadWriteAccess(path);
 
@@ -161,6 +168,21 @@
         return paths;
     }
 
+    public static List<File> getMountPaths() throws IOException {
+        final List<File> paths = new ArrayList<>();
+        final BufferedReader br = new BufferedReader(new FileReader("/proc/self/mounts"));
+        try {
+            String line;
+            while ((line = br.readLine()) != null) {
+                final String[] fields = line.split(" ");
+                paths.add(new File(fields[1]));
+            }
+        } finally {
+            br.close();
+        }
+        return paths;
+    }
+
     private static File[] dropFirst(File[] before) {
         final File[] after = new File[before.length - 1];
         System.arraycopy(before, 1, after, 0, after.length);
@@ -286,6 +308,35 @@
         }
     }
 
+    public static void assertMediaNoAccess(ContentResolver resolver) throws Exception {
+        final ContentValues values = new ContentValues();
+        values.put(Images.Media.MIME_TYPE, "image/jpeg");
+        values.put(Images.Media.DATA,
+                buildProbeFile(Environment.getExternalStorageDirectory()).getAbsolutePath());
+
+        try {
+            resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
+            fail("Expected access to be blocked");
+        } catch (Exception expected) {
+        }
+    }
+
+    public static void assertMediaReadWriteAccess(ContentResolver resolver) throws Exception {
+        final ContentValues values = new ContentValues();
+        values.put(Images.Media.MIME_TYPE, "image/jpeg");
+        values.put(Images.Media.DATA,
+                buildProbeFile(Environment.getExternalStorageDirectory()).getAbsolutePath());
+
+        final Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
+        try {
+            resolver.openFileDescriptor(uri, "rw").close();
+            resolver.openFileDescriptor(uri, "w").close();
+            resolver.openFileDescriptor(uri, "r").close();
+        } finally {
+            resolver.delete(uri, null, null);
+        }
+    }
+
     private static boolean isWhiteList(File file) {
         final String[] whiteLists = {
                 "autorun.inf", ".android_secure", "android_secure"
@@ -351,7 +402,7 @@
         }
     }
 
-    private static void logCommand(String... cmd) throws Exception {
+    public static void logCommand(String... cmd) throws Exception {
         final Process proc = new ProcessBuilder(cmd).redirectErrorStream(true).start();
 
         final ByteArrayOutputStream buf = new ByteArrayOutputStream();
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java
index 425815f..6030f1c 100644
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/ExternalStorageTest.java
@@ -16,21 +16,31 @@
 
 package com.android.cts.externalstorageapp;
 
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoWriteAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileNoAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPaths;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getMountPaths;
 
+import android.app.DownloadManager;
+import android.app.DownloadManager.Query;
+import android.app.DownloadManager.Request;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.Cursor;
+import android.net.Uri;
 import android.os.Environment;
+import android.os.SystemClock;
 import android.test.AndroidTestCase;
+import android.text.format.DateUtils;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileReader;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 
 /**
@@ -62,7 +72,7 @@
             }
 
             // Keep walking up until we leave device
-            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(path))) {
                 assertDirNoAccess(path);
                 path = path.getParentFile();
             }
@@ -70,17 +80,123 @@
     }
 
     /**
-     * Verify we can read only our gifts.
+     * Verify that we don't have read access to any storage mountpoints.
      */
-    public void doVerifyGifts() throws Exception {
-        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
-        assertFileReadWriteAccess(none);
-        assertEquals(100, readInt(none));
+    public void testMountPointsNotReadable() throws Exception {
+        final String userId = Integer.toString(android.os.Process.myUid() / 100000);
+        final List<File> mountPaths = getMountPaths();
+        for (File path : mountPaths) {
+            if (path.getAbsolutePath().startsWith("/mnt/")
+                    || path.getAbsolutePath().startsWith("/storage/")) {
+                // Mount points could be multi-user aware, so try probing both
+                // top level and user-specific directory.
+                final File userPath = new File(path, userId);
 
-        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
-        assertFileNoAccess(read);
+                assertDirNoAccess(path);
+                assertDirNoAccess(userPath);
+            }
+        }
+    }
 
-        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
-        assertFileNoAccess(write);
+    /**
+     * Verify that we can't download things outside package directory.
+     */
+    public void testDownloadManager() throws Exception {
+        final DownloadManager dm = getContext().getSystemService(DownloadManager.class);
+        try {
+            final Uri source = Uri.parse("http://www.example.com");
+            final File target = new File(
+                    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "meow");
+            dm.enqueue(new Request(source).setDestinationUri(Uri.fromFile(target)));
+            fail("Unexpected success writing outside package directory");
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Verify that we can download things into our package directory.
+     */
+    public void testDownloadManagerPackage() throws Exception {
+        final DownloadManager dm = getContext().getSystemService(DownloadManager.class);
+        final DownloadCompleteReceiver receiver = new DownloadCompleteReceiver();
+        try {
+            IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
+            mContext.registerReceiver(receiver, intentFilter);
+
+            final Uri source = Uri.parse("http://www.example.com");
+            final File target = new File(
+                    getContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "meow");
+
+            final long id = dm.enqueue(new Request(source).setDestinationUri(Uri.fromFile(target)));
+            receiver.waitForDownloadComplete(30 * DateUtils.SECOND_IN_MILLIS, id);
+            assertSuccessfulDownload(id, target);
+        } finally {
+            mContext.unregisterReceiver(receiver);
+        }
+    }
+
+    /**
+     * Shamelessly borrowed from DownloadManagerTest.java
+     */
+    private static class DownloadCompleteReceiver extends BroadcastReceiver {
+        private HashSet<Long> mCompleteIds = new HashSet<>();
+
+        public DownloadCompleteReceiver() {
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            synchronized (mCompleteIds) {
+                mCompleteIds.add(intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1));
+                mCompleteIds.notifyAll();
+            }
+        }
+
+        private boolean isCompleteLocked(long... ids) {
+            for (long id : ids) {
+                if (!mCompleteIds.contains(id)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        public void waitForDownloadComplete(long timeoutMillis, long... waitForIds)
+                throws InterruptedException {
+            if (waitForIds.length == 0) {
+                throw new IllegalArgumentException("Missing IDs to wait for");
+            }
+
+            final long startTime = SystemClock.elapsedRealtime();
+            do {
+                synchronized (mCompleteIds) {
+                    mCompleteIds.wait(timeoutMillis);
+                    if (isCompleteLocked(waitForIds)) return;
+                }
+            } while ((SystemClock.elapsedRealtime() - startTime) < timeoutMillis);
+
+            throw new InterruptedException("Timeout waiting for IDs " + Arrays.toString(waitForIds)
+                    + "; received " + mCompleteIds.toString()
+                    + ".  Make sure you have WiFi or some other connectivity for this test.");
+        }
+    }
+
+    private void assertSuccessfulDownload(long id, File location) {
+        final DownloadManager dm = getContext().getSystemService(DownloadManager.class);
+
+        Cursor cursor = null;
+        try {
+            cursor = dm.query(new Query().setFilterById(id));
+            assertTrue(cursor.moveToNext());
+            assertEquals(DownloadManager.STATUS_SUCCESSFUL, cursor.getInt(
+                    cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)));
+            assertEquals(Uri.fromFile(location).toString(),
+                    cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)));
+            assertTrue(location.exists());
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
     }
 }
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/GiftTest.java b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/GiftTest.java
new file mode 100644
index 0000000..e482b2f
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/src/com/android/cts/externalstorageapp/GiftTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.externalstorageapp;
+
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+
+import android.test.AndroidTestCase;
+
+import java.io.File;
+
+public class GiftTest extends AndroidTestCase {
+    /**
+     * Verify we can read only our gifts.
+     */
+    public void testGifts() throws Exception {
+        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
+        assertFileReadWriteAccess(none);
+        assertEquals(100, readInt(none));
+
+        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
+        assertFileNoAccess(read);
+
+        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
+        assertFileNoAccess(write);
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java
index 2a80c75..d9f00d2 100644
--- a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/src/com/android/cts/multiuserstorageapp/MultiUserStorageTest.java
@@ -16,6 +16,7 @@
 
 package com.android.cts.multiuserstorageapp;
 
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPathsExceptObb;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.writeInt;
@@ -45,7 +46,9 @@
 
     private void wipeTestFiles(File dir) {
         dir.mkdirs();
-        for (File file : dir.listFiles()) {
+        final File[] files = dir.listFiles();
+        if (files == null) return;
+        for (File file : files) {
             if (file.getName().startsWith(FILE_PREFIX)) {
                 Log.d(TAG, "Wiping " + file);
                 file.delete();
@@ -53,11 +56,11 @@
         }
     }
 
-    public void cleanIsolatedStorage() throws Exception {
+    public void testCleanIsolatedStorage() throws Exception {
         wipeTestFiles(Environment.getExternalStorageDirectory());
     }
 
-    public void writeIsolatedStorage() throws Exception {
+    public void testWriteIsolatedStorage() throws Exception {
         final int uid = android.os.Process.myUid();
 
         writeInt(buildApiPath(FILE_SINGLETON), uid);
@@ -67,13 +70,13 @@
         for (File path : getAllPackageSpecificPathsExceptObb(getContext())) {
             assertNotNull("Valid media must be inserted during CTS", path);
             assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
-                    Environment.getStorageState(path));
+                    Environment.getExternalStorageState(path));
 
             writeInt(new File(path, FILE_SINGLETON), uid);
         }
     }
 
-    public void readIsolatedStorage() throws Exception {
+    public void testReadIsolatedStorage() throws Exception {
         final int uid = android.os.Process.myUid();
 
         // Expect that the value we wrote earlier is still valid and wasn't
@@ -91,23 +94,23 @@
         for (File path : getAllPackageSpecificPathsExceptObb(getContext())) {
             assertNotNull("Valid media must be inserted during CTS", path);
             assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
-                    Environment.getStorageState(path));
+                    Environment.getExternalStorageState(path));
 
             assertEquals("Unexpected value in singleton file at " + path, uid,
                     readInt(new File(path, FILE_SINGLETON)));
         }
     }
 
-    public void cleanObbStorage() throws Exception {
+    public void testCleanObbStorage() throws Exception {
         wipeTestFiles(getContext().getObbDir());
     }
 
-    public void writeObbStorage() throws Exception {
+    public void testWriteObbStorage() throws Exception {
         writeInt(buildApiObbPath(FILE_OBB_API_SINGLETON), OBB_API_VALUE);
         writeInt(buildEnvObbPath(FILE_OBB_SINGLETON), OBB_VALUE);
     }
 
-    public void readObbStorage() throws Exception {
+    public void testReadObbStorage() throws Exception {
         assertEquals("Failed to read OBB file from API path", OBB_API_VALUE,
                 readInt(buildApiObbPath(FILE_OBB_API_SINGLETON)));
 
@@ -117,6 +120,24 @@
                 readInt(buildRawObbPath(FILE_OBB_SINGLETON)));
     }
 
+    /**
+     * Verify that we can't poke at storage of other users.
+     */
+    public void testUserIsolation() throws Exception {
+        final File myPath = Environment.getExternalStorageDirectory();
+        final int myId = android.os.Process.myUid() / 100000;
+        assertEquals(String.valueOf(myId), myPath.getName());
+
+        Log.d(TAG, "My path is " + myPath);
+        final File basePath = myPath.getParentFile();
+        for (int i = 0; i < 128; i++) {
+            if (i == myId) continue;
+
+            final File otherPath = new File(basePath, String.valueOf(i));
+            assertDirNoAccess(otherPath);
+        }
+    }
+
     private File buildApiObbPath(String file) {
         return new File(getContext().getObbDir(), file);
     }
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
index bbd1e7a..995da90 100644
--- a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadExternalStorageTest.java
@@ -16,16 +16,11 @@
 
 package com.android.cts.readexternalstorageapp;
 
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoWriteAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadOnlyAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadOnlyAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPaths;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getMountPaths;
 
 import android.os.Environment;
 import android.test.AndroidTestCase;
@@ -54,7 +49,7 @@
         for (File path : paths) {
             assertNotNull("Valid media must be inserted during CTS", path);
             assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
-                    Environment.getStorageState(path));
+                    Environment.getExternalStorageState(path));
 
             assertTrue(path.getAbsolutePath().contains(packageName));
 
@@ -65,7 +60,7 @@
             }
 
             // Keep walking up until we leave device
-            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(path))) {
                 assertDirReadOnlyAccess(path);
                 path = path.getParentFile();
             }
@@ -73,19 +68,21 @@
     }
 
     /**
-     * Verify we can read all gifts.
+     * Verify that we don't have write access to any mountpoints.
      */
-    public void doVerifyGifts() throws Exception {
-        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
-        assertFileReadOnlyAccess(none);
-        assertEquals(100, readInt(none));
+    public void testMountPointsNotWritable() throws Exception {
+        final String userId = Integer.toString(android.os.Process.myUid() / 100000);
+        final List<File> mountPaths = getMountPaths();
+        for (File path : mountPaths) {
+            if (path.getAbsolutePath().startsWith("/mnt/")
+                    || path.getAbsolutePath().startsWith("/storage/")) {
+                // Mount points could be multi-user aware, so try probing both
+                // top level and user-specific directory.
+                final File userPath = new File(path, userId);
 
-        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
-        assertFileReadWriteAccess(read);
-        assertEquals(101, readInt(read));
-
-        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
-        assertFileReadOnlyAccess(write);
-        assertEquals(102, readInt(write));
+                assertDirNoWriteAccess(path);
+                assertDirNoWriteAccess(userPath);
+            }
+        }
     }
 }
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadGiftTest.java b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadGiftTest.java
new file mode 100644
index 0000000..e72be77
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/src/com/android/cts/readexternalstorageapp/ReadGiftTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.readexternalstorageapp;
+
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadOnlyAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+
+import android.test.AndroidTestCase;
+
+import java.io.File;
+
+public class ReadGiftTest extends AndroidTestCase {
+    /**
+     * Verify we can read all gifts.
+     */
+    public void testGifts() throws Exception {
+        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
+        assertFileReadOnlyAccess(none);
+        assertEquals(100, readInt(none));
+
+        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
+        assertFileReadWriteAccess(read);
+        assertEquals(101, readInt(read));
+
+        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
+        assertFileReadOnlyAccess(write);
+        assertEquals(102, readInt(write));
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java b/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java
index 3d6cee7..c5f0fd0 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java
@@ -19,6 +19,7 @@
 import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
 import static org.xmlpull.v1.XmlPullParser.START_TAG;
 
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
@@ -27,9 +28,17 @@
 import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
+import android.os.Environment;
+import android.os.ParcelFileDescriptor;
+import android.os.StatFs;
+import android.system.Os;
+import android.system.OsConstants;
+import android.system.StructStat;
 import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 import android.util.DisplayMetrics;
@@ -39,7 +48,12 @@
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
 import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.lang.reflect.Field;
@@ -51,9 +65,14 @@
     private static final String TAG = "SplitAppTest";
     private static final String PKG = "com.android.cts.splitapp";
 
+    private static final long MB_IN_BYTES = 1 * 1024 * 1024;
+
     public static boolean sFeatureTouched = false;
     public static String sFeatureValue = null;
 
+    public void testNothing() throws Exception {
+    }
+
     public void testSingleBase() throws Exception {
         final Resources r = getContext().getResources();
         final PackageManager pm = getContext().getPackageManager();
@@ -311,6 +330,131 @@
         assertEquals(0, result.size());
     }
 
+    /**
+     * Write app data in a number of locations that expect to remain intact over
+     * long periods of time, such as across app moves.
+     */
+    public void testDataWrite() throws Exception {
+        final String token = String.valueOf(android.os.Process.myUid());
+        writeString(getContext().getFileStreamPath("my_int"), token);
+
+        final SQLiteDatabase db = getContext().openOrCreateDatabase("my_db",
+                Context.MODE_PRIVATE, null);
+        try {
+            db.execSQL("DROP TABLE IF EXISTS my_table");
+            db.execSQL("CREATE TABLE my_table(value INTEGER)");
+            db.execSQL("INSERT INTO my_table VALUES (101), (102), (103)");
+        } finally {
+            db.close();
+        }
+    }
+
+    /**
+     * Verify that data written by {@link #testDataWrite()} is still intact.
+     */
+    public void testDataRead() throws Exception {
+        final String token = String.valueOf(android.os.Process.myUid());
+        assertEquals(token, readString(getContext().getFileStreamPath("my_int")));
+
+        final SQLiteDatabase db = getContext().openOrCreateDatabase("my_db",
+                Context.MODE_PRIVATE, null);
+        try {
+            final Cursor cursor = db.query("my_table", null, null, null, null, null, "value ASC");
+            try {
+                assertEquals(3, cursor.getCount());
+                assertTrue(cursor.moveToPosition(0));
+                assertEquals(101, cursor.getInt(0));
+                assertTrue(cursor.moveToPosition(1));
+                assertEquals(102, cursor.getInt(0));
+                assertTrue(cursor.moveToPosition(2));
+                assertEquals(103, cursor.getInt(0));
+            } finally {
+                cursor.close();
+            }
+        } finally {
+            db.close();
+        }
+    }
+
+    /**
+     * Verify that app is installed on internal storage.
+     */
+    public void testDataInternal() throws Exception {
+        final StructStat internal = Os.stat(Environment.getDataDirectory().getAbsolutePath());
+        final StructStat actual = Os.stat(getContext().getFilesDir().getAbsolutePath());
+        assertEquals(internal.st_dev, actual.st_dev);
+    }
+
+    /**
+     * Verify that app is not installed on internal storage.
+     */
+    public void testDataNotInternal() throws Exception {
+        final StructStat internal = Os.stat(Environment.getDataDirectory().getAbsolutePath());
+        final StructStat actual = Os.stat(getContext().getFilesDir().getAbsolutePath());
+        MoreAsserts.assertNotEqual(internal.st_dev, actual.st_dev);
+    }
+
+    public void testPrimaryDataWrite() throws Exception {
+        final String token = String.valueOf(android.os.Process.myUid());
+        writeString(new File(getContext().getExternalFilesDir(null), "my_ext"), token);
+    }
+
+    public void testPrimaryDataRead() throws Exception {
+        final String token = String.valueOf(android.os.Process.myUid());
+        assertEquals(token, readString(new File(getContext().getExternalFilesDir(null), "my_ext")));
+    }
+
+    /**
+     * Verify shared storage behavior when on internal storage.
+     */
+    public void testPrimaryInternal() throws Exception {
+        assertTrue("emulated", Environment.isExternalStorageEmulated());
+        assertFalse("removable", Environment.isExternalStorageRemovable());
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+    }
+
+    /**
+     * Verify shared storage behavior when on physical storage.
+     */
+    public void testPrimaryPhysical() throws Exception {
+        assertFalse("emulated", Environment.isExternalStorageEmulated());
+        assertTrue("removable", Environment.isExternalStorageRemovable());
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+    }
+
+    /**
+     * Verify shared storage behavior when on adopted storage.
+     */
+    public void testPrimaryAdopted() throws Exception {
+        assertTrue("emulated", Environment.isExternalStorageEmulated());
+        assertTrue("removable", Environment.isExternalStorageRemovable());
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+    }
+
+    /**
+     * Verify that shared storage is unmounted.
+     */
+    public void testPrimaryUnmounted() throws Exception {
+        MoreAsserts.assertNotEqual(Environment.MEDIA_MOUNTED,
+                Environment.getExternalStorageState());
+    }
+
+    /**
+     * Verify that shared storage lives on same volume as app.
+     */
+    public void testPrimaryOnSameVolume() throws Exception {
+        final File current = getContext().getFilesDir();
+        final File primary = Environment.getExternalStorageDirectory();
+
+        // Shared storage may jump through another filesystem for permission
+        // enforcement, so we verify that total/free space are identical.
+        final long totalDelta = Math.abs(current.getTotalSpace() - primary.getTotalSpace());
+        final long freeDelta = Math.abs(current.getFreeSpace() - primary.getFreeSpace());
+        if (totalDelta > MB_IN_BYTES || freeDelta > MB_IN_BYTES) {
+            fail("Expected primary storage to be on same volume as app");
+        }
+    }
+
     public void testCodeCacheWrite() throws Exception {
         assertTrue(new File(getContext().getFilesDir(), "normal.raw").createNewFile());
         assertTrue(new File(getContext().getCodeCacheDir(), "cache.raw").createNewFile());
@@ -390,4 +534,22 @@
             if (in != null) in.close();
         }
     }
+
+    private static void writeString(File file, String value) throws IOException {
+        final DataOutputStream os = new DataOutputStream(new FileOutputStream(file));
+        try {
+            os.writeUTF(value);
+        } finally {
+            os.close();
+        }
+    }
+
+    private static String readString(File file) throws IOException {
+        final DataInputStream is = new DataInputStream(new FileInputStream(file));
+        try {
+            return is.readUTF();
+        } finally {
+            is.close();
+        }
+    }
 }
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionApp/Android.mk
new file mode 100644
index 0000000..f91d0c4
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp/Android.mk
@@ -0,0 +1,35 @@
+#
+# Copyright (C) 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_SDK_VERSION := current
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-test ctsdeviceutil ctstestrunner ub-uiautomator
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+
+LOCAL_PACKAGE_NAME := CtsUsePermissionApp
+
+LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
+
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/UsePermissionApp/AndroidManifest.xml
new file mode 100644
index 0000000..253d85d
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.usepermission">
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name=".MyActivity" />
+    </application>
+    <instrumentation
+        android:name="android.support.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.cts.usepermission" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp/src/com/android/cts/usepermission/MyActivity.java b/hostsidetests/appsecurity/test-apps/UsePermissionApp/src/com/android/cts/usepermission/MyActivity.java
new file mode 100644
index 0000000..5af3886
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp/src/com/android/cts/usepermission/MyActivity.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.usepermission;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.WindowManager;
+
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.TimeUnit;
+
+public class MyActivity extends Activity {
+    private final SynchronousQueue<Result> mResult = new SynchronousQueue<>();
+
+    public static class Result {
+        public final int requestCode;
+        public final String[] permissions;
+        public final int[] grantResults;
+
+        public Result(int requestCode, String[] permissions, int[] grantResults) {
+            this.requestCode = requestCode;
+            this.permissions = permissions;
+            this.grantResults = grantResults;
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
+                | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
+                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            int[] grantResults) {
+        try {
+            mResult.offer(new Result(requestCode, permissions, grantResults), 5, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public Result getResult() {
+        try {
+            return mResult.take();
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp/src/com/android/cts/usepermission/UsePermissionTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionApp/src/com/android/cts/usepermission/UsePermissionTest.java
new file mode 100644
index 0000000..d6e97e0
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp/src/com/android/cts/usepermission/UsePermissionTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.usepermission;
+
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertMediaNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertMediaReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.logCommand;
+
+import android.content.pm.PackageManager;
+import android.os.Environment;
+import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.UiObject;
+import android.support.test.uiautomator.UiSelector;
+import android.test.InstrumentationTestCase;
+
+public class UsePermissionTest extends InstrumentationTestCase {
+    private static final String TAG = "UsePermissionTest";
+
+    private UiDevice mDevice;
+    private MyActivity mActivity;
+
+    public void testFail() throws Exception {
+        fail("Expected");
+    }
+
+    public void testKill() throws Exception {
+        android.os.Process.killProcess(android.os.Process.myPid());
+    }
+
+    public void testDefault() throws Exception {
+        logCommand("/system/bin/cat", "/proc/self/mountinfo");
+
+        // New permission model is denied by default
+        assertEquals(PackageManager.PERMISSION_DENIED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE));
+        assertEquals(PackageManager.PERMISSION_DENIED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE));
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+        assertDirNoAccess(Environment.getExternalStorageDirectory());
+        assertDirReadWriteAccess(getInstrumentation().getContext().getExternalCacheDir());
+        assertMediaNoAccess(getInstrumentation().getContext().getContentResolver());
+    }
+
+    public void testGranted() throws Exception {
+        logCommand("/system/bin/cat", "/proc/self/mountinfo");
+
+        assertEquals(PackageManager.PERMISSION_GRANTED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE));
+        assertEquals(PackageManager.PERMISSION_GRANTED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE));
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+        assertDirReadWriteAccess(Environment.getExternalStorageDirectory());
+        assertDirReadWriteAccess(getInstrumentation().getContext().getExternalCacheDir());
+        assertMediaReadWriteAccess(getInstrumentation().getContext().getContentResolver());
+    }
+
+    public void testInteractiveGrant() throws Exception {
+        logCommand("/system/bin/cat", "/proc/self/mountinfo");
+
+        // Start out without permission
+        assertEquals(PackageManager.PERMISSION_DENIED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE));
+        assertEquals(PackageManager.PERMISSION_DENIED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE));
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+        assertDirNoAccess(Environment.getExternalStorageDirectory());
+        assertDirReadWriteAccess(getInstrumentation().getContext().getExternalCacheDir());
+        assertMediaNoAccess(getInstrumentation().getContext().getContentResolver());
+
+        // Go through normal grant flow
+        mDevice = UiDevice.getInstance(getInstrumentation());
+        mActivity = launchActivity(getInstrumentation().getTargetContext().getPackageName(),
+                MyActivity.class, null);
+        mDevice.waitForIdle();
+
+        mActivity.requestPermissions(new String[] {
+                android.Manifest.permission.READ_EXTERNAL_STORAGE,
+                android.Manifest.permission.WRITE_EXTERNAL_STORAGE }, 42);
+        mDevice.waitForIdle();
+
+        new UiObject(new UiSelector()
+                .resourceId("com.android.packageinstaller:id/permission_allow_button")).click();
+        mDevice.waitForIdle();
+
+        MyActivity.Result result = mActivity.getResult();
+        assertEquals(42, result.requestCode);
+        assertEquals(android.Manifest.permission.READ_EXTERNAL_STORAGE, result.permissions[0]);
+        assertEquals(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, result.permissions[1]);
+        assertEquals(PackageManager.PERMISSION_GRANTED, result.grantResults[0]);
+        assertEquals(PackageManager.PERMISSION_GRANTED, result.grantResults[1]);
+
+        logCommand("/system/bin/cat", "/proc/self/mountinfo");
+
+        // We should have permission now!
+        assertEquals(PackageManager.PERMISSION_GRANTED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE));
+        assertEquals(PackageManager.PERMISSION_GRANTED, getInstrumentation().getContext()
+                .checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE));
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+        assertDirReadWriteAccess(Environment.getExternalStorageDirectory());
+        assertDirReadWriteAccess(getInstrumentation().getContext().getExternalCacheDir());
+        assertMediaReadWriteAccess(getInstrumentation().getContext().getContentResolver());
+
+        mActivity.finish();
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/Android.mk
new file mode 100644
index 0000000..70b4b0f
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/Android.mk
@@ -0,0 +1,35 @@
+#
+# Copyright (C) 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_SDK_VERSION := 21
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-test ctsdeviceutil ctstestrunner ub-uiautomator
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
+
+LOCAL_PACKAGE_NAME := CtsUsePermissionAppCompat
+
+LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
+
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/AndroidManifest.xml
new file mode 100644
index 0000000..253d85d
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.usepermission">
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name=".MyActivity" />
+    </application>
+    <instrumentation
+        android:name="android.support.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.cts.usepermission" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/src/com/android/cts/usepermission/UsePermissionCompatTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/src/com/android/cts/usepermission/UsePermissionCompatTest.java
new file mode 100644
index 0000000..7f21d3400
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionAppCompat/src/com/android/cts/usepermission/UsePermissionCompatTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.usepermission;
+
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertMediaNoAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertMediaReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPaths;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.logCommand;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Environment;
+import android.os.Process;
+import android.test.InstrumentationTestCase;
+
+import java.io.File;
+
+public class UsePermissionCompatTest extends InstrumentationTestCase {
+    private static final String TAG = "UsePermissionTest";
+
+    public void testCompatDefault() throws Exception {
+        final Context context = getInstrumentation().getContext();
+        logCommand("/system/bin/cat", "/proc/self/mountinfo");
+
+        // Legacy permission model is granted by default
+        assertEquals(PackageManager.PERMISSION_GRANTED,
+                context.checkPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE,
+                        Process.myPid(), Process.myUid()));
+        assertEquals(PackageManager.PERMISSION_GRANTED,
+                context.checkPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                        Process.myPid(), Process.myUid()));
+        assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState());
+        assertDirReadWriteAccess(Environment.getExternalStorageDirectory());
+        for (File path : getAllPackageSpecificPaths(context)) {
+            if (path != null) {
+                assertDirReadWriteAccess(path);
+            }
+        }
+        assertMediaReadWriteAccess(getInstrumentation().getContext().getContentResolver());
+    }
+
+    public void testCompatRevoked() throws Exception {
+        final Context context = getInstrumentation().getContext();
+        logCommand("/system/bin/cat", "/proc/self/mountinfo");
+
+        // Legacy permission model appears granted, but storage looks and
+        // behaves like it's ejected
+        assertEquals(PackageManager.PERMISSION_GRANTED,
+                context.checkPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE,
+                        Process.myPid(), Process.myUid()));
+        assertEquals(PackageManager.PERMISSION_GRANTED,
+                context.checkPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                        Process.myPid(), Process.myUid()));
+        assertEquals(Environment.MEDIA_UNMOUNTED, Environment.getExternalStorageState());
+        assertDirNoAccess(Environment.getExternalStorageDirectory());
+        for (File dir : getAllPackageSpecificPaths(context)) {
+            if (dir != null) {
+                assertDirNoAccess(dir);
+            }
+        }
+        assertMediaNoAccess(getInstrumentation().getContext().getContentResolver());
+
+        // Just to be sure, poke explicit path
+        assertDirNoAccess(new File(Environment.getExternalStorageDirectory(),
+                "/Android/data/" + getInstrumentation().getContext().getPackageName()));
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
index afee8541..5e6aa3e 100644
--- a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
+++ b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteExternalStorageTest.java
@@ -17,17 +17,14 @@
 package com.android.cts.writeexternalstorageapp;
 
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.TAG;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirNoWriteAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadOnlyAccess;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertDirReadWriteAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
-import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildProbeFile;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.deleteContents;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getAllPackageSpecificPaths;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getMountPaths;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getPrimaryPackageSpecificPaths;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.getSecondaryPackageSpecificPaths;
 import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
@@ -39,9 +36,7 @@
 
 import com.android.cts.externalstorageapp.CommonExternalStorageTest;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileReader;
 import java.util.List;
 import java.util.Random;
 
@@ -142,12 +137,12 @@
         for (File path : paths) {
             assertNotNull("Valid media must be inserted during CTS", path);
             assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
-                    Environment.getStorageState(path));
+                    Environment.getExternalStorageState(path));
 
             assertTrue(path.getAbsolutePath().contains(packageName));
 
             // Walk until we leave device, writing the whole way
-            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(path))) {
                 assertDirReadWriteAccess(path);
                 path = path.getParentFile();
             }
@@ -179,7 +174,7 @@
         int depth = 0;
         while (depth++ < 32) {
             assertDirReadWriteAccess(path);
-            assertEquals(Environment.MEDIA_MOUNTED, Environment.getStorageState(path));
+            assertEquals(Environment.MEDIA_MOUNTED, Environment.getExternalStorageState(path));
 
             if (path.getAbsolutePath().equals(top.getAbsolutePath())) {
                 break;
@@ -194,7 +189,7 @@
         // And going one step further should be outside our reach
         path = path.getParentFile();
         assertDirNoWriteAccess(path);
-        assertEquals(Environment.MEDIA_UNKNOWN, Environment.getStorageState(path));
+        assertEquals(Environment.MEDIA_UNKNOWN, Environment.getExternalStorageState(path));
     }
 
     /**
@@ -202,11 +197,11 @@
      */
     public void testMountStatus() {
         assertEquals(Environment.MEDIA_UNKNOWN,
-                Environment.getStorageState(new File("/meow-should-never-exist")));
+                Environment.getExternalStorageState(new File("/meow-should-never-exist")));
 
         // Internal data isn't a mount point
         assertEquals(Environment.MEDIA_UNKNOWN,
-                Environment.getStorageState(getContext().getCacheDir()));
+                Environment.getExternalStorageState(getContext().getCacheDir()));
     }
 
     /**
@@ -220,7 +215,7 @@
         for (File path : paths) {
             assertNotNull("Valid media must be inserted during CTS", path);
             assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
-                    Environment.getStorageState(path));
+                    Environment.getExternalStorageState(path));
 
             assertTrue(path.getAbsolutePath().contains(packageName));
 
@@ -231,7 +226,7 @@
             }
 
             // Keep walking up until we leave device
-            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(path))) {
                 assertDirReadOnlyAccess(path);
                 path = path.getParentFile();
             }
@@ -250,12 +245,12 @@
         for (File path : paths) {
             assertNotNull("Valid media must be inserted during CTS", path);
             assertEquals("Valid media must be inserted during CTS", Environment.MEDIA_MOUNTED,
-                    Environment.getStorageState(path));
+                    Environment.getExternalStorageState(path));
 
             final File start = path;
 
             boolean found = false;
-            while (Environment.MEDIA_MOUNTED.equals(Environment.getStorageState(path))) {
+            while (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(path))) {
                 final File test = new File(path, ".nomedia");
                 if (test.exists()) {
                     found = true;
@@ -277,57 +272,29 @@
      * {@link CommonExternalStorageTest#testAllPackageDirsWritable()}.
      */
     public void testSecondaryMountPointsNotWritable() throws Exception {
+        // Probe path could be /storage/emulated/0 or /storage/1234-5678
         final File probe = buildProbeFile(Environment.getExternalStorageDirectory());
         assertTrue(probe.createNewFile());
 
-        final BufferedReader br = new BufferedReader(new FileReader("/proc/self/mounts"));
-        try {
-            String line;
-            while ((line = br.readLine()) != null) {
-                final String[] fields = line.split(" ");
-                final File testMount = new File(fields[1]);
-                final File testProbe = new File(testMount, probe.getName());
-                if (testProbe.exists()) {
-                    Log.d(TAG, "Primary external mountpoint " + testMount);
-                } else {
-                    // This mountpoint is not primary external storage; we must
-                    // not be able to write.
-                    Log.d(TAG, "Other mountpoint " + testMount);
-                    assertDirNoWriteAccess(testProbe.getParentFile());
-                }
+        final String userId = Integer.toString(android.os.Process.myUid() / 100000);
+        final List<File> mountPaths = getMountPaths();
+        for (File path : mountPaths) {
+            // Mount points could be multi-user aware, so try probing both top
+            // level and user-specific directory.
+            final File userPath = new File(path, userId);
+
+            final File testProbe = new File(path, probe.getName());
+            final File testUserProbe = new File(userPath, probe.getName());
+
+            if (testProbe.exists() || testUserProbe.exists()) {
+                Log.d(TAG, "Primary external mountpoint " + path);
+            } else {
+                // This mountpoint is not primary external storage; we must
+                // not be able to write.
+                Log.d(TAG, "Other mountpoint " + path);
+                assertDirNoWriteAccess(path);
+                assertDirNoWriteAccess(userPath);
             }
-       } finally {
-           br.close();
-           probe.delete();
-       }
-    }
-
-    /**
-     * Leave gifts for other packages in their primary external cache dirs.
-     */
-    public void doWriteGifts() throws Exception {
-        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
-        none.getParentFile().mkdirs();
-        none.createNewFile();
-        assertFileReadWriteAccess(none);
-
-        writeInt(none, 100);
-        assertEquals(100, readInt(none));
-
-        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
-        read.getParentFile().mkdirs();
-        read.createNewFile();
-        assertFileReadWriteAccess(read);
-
-        writeInt(read, 101);
-        assertEquals(101, readInt(read));
-
-        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
-        write.getParentFile().mkdirs();
-        write.createNewFile();
-        assertFileReadWriteAccess(write);
-
-        writeInt(write, 102);
-        assertEquals(102, readInt(write));
+        }
     }
 }
diff --git a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteGiftTest.java b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteGiftTest.java
new file mode 100644
index 0000000..5da42da
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/src/com/android/cts/writeexternalstorageapp/WriteGiftTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.writeexternalstorageapp;
+
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_NONE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_READ;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.PACKAGE_WRITE;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.assertFileReadWriteAccess;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.buildGiftForPackage;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.readInt;
+import static com.android.cts.externalstorageapp.CommonExternalStorageTest.writeInt;
+
+import android.test.AndroidTestCase;
+
+import java.io.File;
+
+public class WriteGiftTest extends AndroidTestCase {
+    /**
+     * Leave gifts for other packages in their primary external cache dirs.
+     */
+    public void testGifts() throws Exception {
+        final File none = buildGiftForPackage(getContext(), PACKAGE_NONE);
+        none.getParentFile().mkdirs();
+        none.createNewFile();
+        assertFileReadWriteAccess(none);
+
+        writeInt(none, 100);
+        assertEquals(100, readInt(none));
+
+        final File read = buildGiftForPackage(getContext(), PACKAGE_READ);
+        read.getParentFile().mkdirs();
+        read.createNewFile();
+        assertFileReadWriteAccess(read);
+
+        writeInt(read, 101);
+        assertEquals(101, readInt(read));
+
+        final File write = buildGiftForPackage(getContext(), PACKAGE_WRITE);
+        write.getParentFile().mkdirs();
+        write.createNewFile();
+        assertFileReadWriteAccess(write);
+
+        writeInt(write, 102);
+        assertEquals(102, readInt(write));
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.mk b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.mk
new file mode 100644
index 0000000..0548af6
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_PACKAGE_NAME := CtsDeviceAndProfileOwnerApp
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner cts-junit
+
+LOCAL_STATIC_JAVA_LIBRARIES = android-support-v4 ctstestrunner ub-uiautomator
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/AndroidManifest.xml b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/AndroidManifest.xml
new file mode 100644
index 0000000..ed920e9
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/AndroidManifest.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.deviceandprofileowner">
+
+    <uses-sdk android:minSdkVersion="23"/>
+    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <receiver
+            android:name="com.android.cts.deviceandprofileowner.BaseDeviceAdminTest$BasicAdminReceiver"
+            android:permission="android.permission.BIND_DEVICE_ADMIN">
+            <meta-data android:name="android.app.device_admin"
+                       android:resource="@xml/device_admin" />
+            <intent-filter>
+                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
+            </intent-filter>
+        </receiver>
+        <activity
+            android:name="com.android.cts.deviceandprofileowner.ApplicationRestrictionsActivity" />
+        <activity
+            android:name="com.android.cts.deviceandprofileowner.ScreenCaptureDisabledActivity" />
+        <activity
+            android:name="com.android.cts.deviceandprofileowner.ExampleIntentReceivingActivity1">
+            <intent-filter>
+                <action android:name="com.android.cts.deviceandprofileowner.EXAMPLE_ACTION" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity
+            android:name="com.android.cts.deviceandprofileowner.ExampleIntentReceivingActivity2">
+            <intent-filter>
+                <action android:name="com.android.cts.deviceandprofileowner.EXAMPLE_ACTION" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <service android:name=".MockAccountService" android:exported="true">
+            <intent-filter>
+                <action android:name="android.accounts.AccountAuthenticator" />
+            </intent-filter>
+
+            <meta-data android:name="android.accounts.AccountAuthenticator"
+                       android:resource="@xml/authenticator" />
+        </service>
+
+    </application>
+
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="com.android.cts.deviceandprofileowner"
+                     android:label="Profile and Device Owner CTS Tests"/>
+</manifest>
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/values/strings.xml b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/values/strings.xml
new file mode 100644
index 0000000..4aca824
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for this package -->
+    <string name="authenticator_label">Android CTS - Device and Profile Owner</string>
+</resources>
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/xml/authenticator.xml b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/xml/authenticator.xml
new file mode 100644
index 0000000..0d8ecd8
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/xml/authenticator.xml
@@ -0,0 +1,22 @@
+<!-- Copyright (C) 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.
+-->
+
+<!-- The attributes in this XML file provide configuration information -->
+<!-- for the Account Manager. -->
+
+<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:accountType="com.android.cts.deviceandprofileowner.account.type"
+    android:label="@string/authenticator_label"
+/>
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/xml/device_admin.xml b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/xml/device_admin.xml
new file mode 100644
index 0000000..69a661c
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/res/xml/device_admin.xml
@@ -0,0 +1,18 @@
+<!-- Copyright (C) 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.
+-->
+<device-admin xmlns:android="http://schemas.android.com/apk/res/android" android:visible="false">
+    <uses-policies>
+    </uses-policies>
+</device-admin>
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AccountManagementTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AccountManagementTest.java
new file mode 100644
index 0000000..c40539b8
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AccountManagementTest.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.deviceandprofileowner;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AccountManagerFuture;
+import android.accounts.AuthenticatorException;
+import android.accounts.OperationCanceledException;
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.os.Bundle;
+
+import java.io.IOException;
+
+/**
+ * Functionality tests for {@link DevicePolicyManager#setAccountManagementDisabled}
+ *
+ * Fire up a remote unprivileged service and attempt to add/remove/list
+ * accounts from it to verify the enforcement is in place.
+ *
+ * This test depend on MockAccountService, which provides authenticator of type
+ * {@code com.android.cts.deviceandprofileowner.account.type}
+ */
+public class AccountManagementTest extends BaseDeviceAdminTest {
+
+    // Account type for MockAccountAuthenticator
+    private final static String ACCOUNT_TYPE_1 =
+            "com.android.cts.deviceandprofileowner.account.type";
+    private final static String ACCOUNT_TYPE_2 = "com.dummy.account";
+    private final static Account ACCOUNT_0 = new Account("user0", ACCOUNT_TYPE_1);
+    private final static Account ACCOUNT_1 = new Account("user1", ACCOUNT_TYPE_1);
+
+    private AccountManager mAccountManager;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mAccountManager = (AccountManager) mContext.getSystemService(Context.ACCOUNT_SERVICE);
+        clearAllAccountManagementDisabled();
+        removeAllAccounts();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        clearAllAccountManagementDisabled();
+        removeAllAccounts();
+        super.tearDown();
+    }
+
+    public void testAccountManagementDisabled_setterAndGetter() {
+        // Some local tests: adding and removing disabled accounts and make sure
+        // DevicePolicyManager keeps track of the disabled set correctly
+        assertEquals(0, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_1,
+                true);
+        assertEquals(1, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+        assertEquals(ACCOUNT_TYPE_1,
+                mDevicePolicyManager.getAccountTypesWithManagementDisabled()[0]);
+
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_1,
+                false);
+        assertEquals(0, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+    }
+
+    public void testAccountManagementDisabled_addAccount() throws AuthenticatorException,
+            IOException, OperationCanceledException {
+        // Test for restriction on addAccount()
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_1,
+                true);
+        // Test if disabling ACCOUNT_TYPE_2 affects ACCOUNT_TYPE_1
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_2,
+                false);
+        assertEquals(1, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+
+        assertEquals(0, mAccountManager.getAccountsByType(ACCOUNT_TYPE_1).length);
+        // Management is disabled, adding account should fail.
+        try {
+            mAccountManager.addAccount(ACCOUNT_TYPE_1, null, null, null, null, null, null)
+                    .getResult();
+            fail("Expected OperationCanceledException is not thrown.");
+        } catch (OperationCanceledException e) {
+            // Expected
+        }
+        assertEquals(0, mAccountManager.getAccountsByType(ACCOUNT_TYPE_1).length);
+
+        // Management is re-enabled, adding account should succeed.
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_1,
+                false);
+        assertEquals(0, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+        Bundle result = mAccountManager.addAccount(ACCOUNT_TYPE_1,
+                null, null, null, null, null, null).getResult();
+
+        // Normally the expected result of addAccount() is AccountManager returning
+        // an intent to start the authenticator activity for adding new accounts.
+        // But MockAccountAuthenticator returns a new account straightway.
+        assertEquals(ACCOUNT_TYPE_1, result.getString(AccountManager.KEY_ACCOUNT_TYPE));
+    }
+
+    public void testAccountManagementDisabled_removeAccount() throws AuthenticatorException,
+            IOException, OperationCanceledException {
+        // Test for restriction on removeAccount()
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_1,
+                true);
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_2,
+                false);
+        assertEquals(1, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+
+        assertEquals(0, mAccountManager.getAccountsByType(ACCOUNT_TYPE_1).length);
+        // First prepare some accounts by manually adding them,
+        // setAccountManagementDisabled(true) should not stop addAccountExplicitly().
+        assertTrue(mAccountManager.addAccountExplicitly(ACCOUNT_0, "password", null));
+        assertTrue(mAccountManager.addAccountExplicitly(ACCOUNT_1, "password", null));
+        assertEquals(2, mAccountManager.getAccountsByType(ACCOUNT_TYPE_1).length);
+
+        // Removing account should fail, as we just disabled it.
+        try {
+            mAccountManager.removeAccount(ACCOUNT_0, null, null).getResult();
+            fail("Expected OperationCanceledException is not thrown.");
+        } catch (OperationCanceledException e) {
+            // Expected
+        }
+        assertEquals(2, mAccountManager.getAccountsByType(ACCOUNT_TYPE_1).length);
+
+        // Re-enable management, so we can successfully remove account this time.
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_1,
+                false);
+        assertEquals(0, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+        assertTrue(mAccountManager.removeAccount(ACCOUNT_0, null, null).getResult());
+
+        // Make sure the removal actually succeeds.
+        Account[] accounts = mAccountManager.getAccountsByType(ACCOUNT_TYPE_1);
+        assertEquals(1, accounts.length);
+        assertEquals(ACCOUNT_1, accounts[0]);
+
+        // Disable account type 2, we should still be able to remove from type 1.
+        mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, ACCOUNT_TYPE_2,
+                true);
+        assertEquals(1, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+        assertTrue(mAccountManager.removeAccount(ACCOUNT_1, null, null).getResult());
+
+        // Make sure the removal actually succeeds.
+        assertEquals(0, mAccountManager.getAccountsByType(ACCOUNT_TYPE_1).length);
+    }
+
+    private void clearAllAccountManagementDisabled() {
+        for (String accountType : mDevicePolicyManager.getAccountTypesWithManagementDisabled()) {
+            mDevicePolicyManager.setAccountManagementDisabled(ADMIN_RECEIVER_COMPONENT, accountType,
+                    false);
+        }
+        assertEquals(0, mDevicePolicyManager.getAccountTypesWithManagementDisabled().length);
+    }
+
+    private void removeAllAccounts() throws OperationCanceledException, AuthenticatorException,
+            IOException {
+        for (Account account : mAccountManager.getAccountsByType(ACCOUNT_TYPE_1)) {
+            AccountManagerFuture<Boolean> result = mAccountManager.removeAccount(account, null,
+                    null);
+            assertTrue(result.getResult());
+        }
+        assertEquals(0, mAccountManager.getAccountsByType(ACCOUNT_TYPE_1).length);
+    }
+
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationHiddenTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationHiddenTest.java
new file mode 100644
index 0000000..d8be42f
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationHiddenTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.cts.deviceandprofileowner;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.Uri;
+import android.util.Log;
+
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests for {@link DevicePolicyManager#setApplicationHidden} and
+ * {@link DevicePolicyManager#isApplicationHidden} APIs.
+ */
+public class ApplicationHiddenTest extends BaseDeviceAdminTest {
+
+    private static final String TAG = "ApplicationHiddenTest";
+
+    private static final String PACKAGE_TO_HIDE = "com.android.cts.permissionapp";
+    private static final String NONEXISTING_PACKAGE_NAME = "a.b.c.d";
+
+    private static final IntentFilter PACKAGE_INTENT_FILTER;
+    static {
+        PACKAGE_INTENT_FILTER = new IntentFilter();
+        PACKAGE_INTENT_FILTER.addAction(Intent.ACTION_PACKAGE_ADDED);
+        PACKAGE_INTENT_FILTER.addAction(Intent.ACTION_PACKAGE_REMOVED);
+        PACKAGE_INTENT_FILTER.addDataScheme("package");
+    }
+    private final ApplicationHiddenReceiver mReceiver = new ApplicationHiddenReceiver();
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext.registerReceiver(mReceiver, PACKAGE_INTENT_FILTER);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mContext.unregisterReceiver(mReceiver);
+        mDevicePolicyManager.setApplicationHidden(ADMIN_RECEIVER_COMPONENT, PACKAGE_TO_HIDE, false);
+        super.tearDown();
+    }
+
+    public void testSetApplicationHidden() throws Exception {
+        assertTrue(mDevicePolicyManager.setApplicationHidden(ADMIN_RECEIVER_COMPONENT,
+                PACKAGE_TO_HIDE, true));
+        assertTrue(mDevicePolicyManager.isApplicationHidden(ADMIN_RECEIVER_COMPONENT,
+                PACKAGE_TO_HIDE));
+        mReceiver.waitForRemovedBroadcast();
+        assertTrue(mDevicePolicyManager.setApplicationHidden(ADMIN_RECEIVER_COMPONENT,
+                PACKAGE_TO_HIDE, false));
+        assertFalse(mDevicePolicyManager.isApplicationHidden(ADMIN_RECEIVER_COMPONENT,
+                PACKAGE_TO_HIDE));
+        mReceiver.waitForAddedBroadcast();
+    }
+
+    public void testCannotHideActiveAdmin() throws Exception {
+        assertFalse(mDevicePolicyManager.setApplicationHidden(ADMIN_RECEIVER_COMPONENT,
+                PACKAGE_NAME, true));
+    }
+
+    public void testCannotHideNonExistingPackage() throws Exception {
+        assertFalse(mDevicePolicyManager.setApplicationHidden(ADMIN_RECEIVER_COMPONENT,
+                NONEXISTING_PACKAGE_NAME, true));
+    }
+
+    private class ApplicationHiddenReceiver extends BroadcastReceiver {
+        private final Semaphore mAddedSemaphore = new Semaphore(0);
+        private final Semaphore mRemovedSemaphore = new Semaphore(0);
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Uri uri = intent.getData();
+            if (uri == null) {
+                return;
+            }
+            String pkgName = uri.getSchemeSpecificPart();
+            if (!PACKAGE_TO_HIDE.equals(pkgName)) {
+                return;
+            }
+            if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) {
+                Log.d(TAG, "Received PACKAGE_ADDED broadcast");
+                mAddedSemaphore.release();
+            } else if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
+                Log.d(TAG, "Received PACKAGE_REMOVED broadcast");
+                mRemovedSemaphore.release();
+            }
+        }
+
+        public void waitForAddedBroadcast() throws Exception {
+            if (!mAddedSemaphore.tryAcquire(60, TimeUnit.SECONDS)) {
+                fail("Did not receive PACKAGE_ADDED broadcast.");
+            }
+        }
+
+        public void waitForRemovedBroadcast() throws Exception {
+            if (!mRemovedSemaphore.tryAcquire(60, TimeUnit.SECONDS)) {
+                fail("Did not receive PACKAGE_REMOVED broadcast.");
+            }
+        }
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ApplicationRestrictionActivity.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationRestrictionsActivity.java
similarity index 90%
rename from hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ApplicationRestrictionActivity.java
rename to hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationRestrictionsActivity.java
index 4d8e4f2..ccf8222 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ApplicationRestrictionActivity.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationRestrictionsActivity.java
@@ -13,8 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-package com.android.cts.deviceowner;
+package com.android.cts.deviceandprofileowner;
 
 import android.app.Activity;
 import android.content.BroadcastReceiver;
@@ -31,16 +30,16 @@
  * activity is to listen for the ACTION_APPLICATION_RESTRICTIONS_CHANGED broadcast
  * and relay the retrieved restriction bundle back to the test for validation.
  */
-public class ApplicationRestrictionActivity extends Activity {
+public class ApplicationRestrictionsActivity extends Activity {
 
     // Incoming intent type
     public static final String FINISH = "finishActivity";
 
     // Outgoing broadcast
     public static final String REGISTERED_ACTION =
-            "com.android.cts.deviceowner.APP_RESTRICTION_REGISTERED";
+            "com.android.cts.deviceandprofileowner.APP_RESTRICTION_REGISTERED";
     public static final String RESTRICTION_ACTION =
-            "com.android.cts.deviceowner.APP_RESTRICTION_VALUE";
+            "com.android.cts.deviceandprofileowner.APP_RESTRICTION_VALUE";
 
     private UserManager mUserManager;
 
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ApplicationRestrictionsTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationRestrictionsTest.java
similarity index 83%
rename from hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ApplicationRestrictionsTest.java
rename to hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationRestrictionsTest.java
index 13a2a6d..98ae202 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ApplicationRestrictionsTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ApplicationRestrictionsTest.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.cts.deviceowner;
+package com.android.cts.deviceandprofileowner;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -38,7 +38,7 @@
  * which is fired by the system whenever its restriction is modified,
  * and relays the value back to this test for verification.
  */
-public class ApplicationRestrictionsTest extends BaseDeviceOwnerTest {
+public class ApplicationRestrictionsTest extends BaseDeviceAdminTest {
 
     private static final String[] testStrings = new String[] {
             "<bad/>",
@@ -55,8 +55,8 @@
     protected void setUp() throws Exception {
         super.setUp();
         IntentFilter filter = new IntentFilter();
-        filter.addAction(ApplicationRestrictionActivity.REGISTERED_ACTION);
-        filter.addAction(ApplicationRestrictionActivity.RESTRICTION_ACTION);
+        filter.addAction(ApplicationRestrictionsActivity.REGISTERED_ACTION);
+        filter.addAction(ApplicationRestrictionsActivity.RESTRICTION_ACTION);
         mContext.registerReceiver(mReceiver, filter);
     }
 
@@ -76,30 +76,38 @@
         Bundle bundle1 = createBundle1();
 
         // Test setting restrictions
-        mDevicePolicyManager.setApplicationRestrictions(getWho(), CTS_PACKAGE, bundle0);
-        mDevicePolicyManager.setApplicationRestrictions(getWho(), OTHER_PACKAGE, bundle1);
+        mDevicePolicyManager.setApplicationRestrictions(ADMIN_RECEIVER_COMPONENT, CTS_PACKAGE,
+                bundle0);
+        mDevicePolicyManager.setApplicationRestrictions(ADMIN_RECEIVER_COMPONENT, OTHER_PACKAGE,
+                bundle1);
 
         // Retrieve restrictions locally and make sure they are what we put in.
-        assertBundle0(mDevicePolicyManager.getApplicationRestrictions(getWho(), CTS_PACKAGE));
-        assertBundle1(mDevicePolicyManager.getApplicationRestrictions(getWho(), OTHER_PACKAGE));
+        assertBundle0(mDevicePolicyManager.getApplicationRestrictions(ADMIN_RECEIVER_COMPONENT,
+                CTS_PACKAGE));
+        assertBundle1(mDevicePolicyManager.getApplicationRestrictions(ADMIN_RECEIVER_COMPONENT,
+                OTHER_PACKAGE));
 
         // The test activity should have received a change_restriction broadcast
         // and relay the value back to us.
         assertBundle0(waitForChangedRestriction());
 
         // Test overwriting
-        mDevicePolicyManager.setApplicationRestrictions(getWho(), CTS_PACKAGE, bundle1);
-        assertBundle1(mDevicePolicyManager.getApplicationRestrictions(getWho(), CTS_PACKAGE));
+        mDevicePolicyManager.setApplicationRestrictions(ADMIN_RECEIVER_COMPONENT, CTS_PACKAGE,
+                bundle1);
+        assertBundle1(mDevicePolicyManager.getApplicationRestrictions(ADMIN_RECEIVER_COMPONENT,
+                CTS_PACKAGE));
         assertBundle1(waitForChangedRestriction());
 
         // Cleanup
-        mDevicePolicyManager.setApplicationRestrictions(getWho(), CTS_PACKAGE, new Bundle());
-        assertTrue(
-                mDevicePolicyManager.getApplicationRestrictions(getWho(), CTS_PACKAGE).isEmpty());
+        mDevicePolicyManager.setApplicationRestrictions(ADMIN_RECEIVER_COMPONENT, CTS_PACKAGE,
+                new Bundle());
+        assertTrue(mDevicePolicyManager.getApplicationRestrictions(
+                ADMIN_RECEIVER_COMPONENT, CTS_PACKAGE).isEmpty());
         assertTrue(waitForChangedRestriction().isEmpty());
-        mDevicePolicyManager.setApplicationRestrictions(getWho(), OTHER_PACKAGE, new Bundle());
-        assertTrue(
-                mDevicePolicyManager.getApplicationRestrictions(getWho(), OTHER_PACKAGE).isEmpty());
+        mDevicePolicyManager.setApplicationRestrictions(ADMIN_RECEIVER_COMPONENT, OTHER_PACKAGE,
+                new Bundle());
+        assertTrue(mDevicePolicyManager.getApplicationRestrictions(
+                ADMIN_RECEIVER_COMPONENT, OTHER_PACKAGE).isEmpty());
 
         finish();
     }
@@ -185,9 +193,9 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
-            if (ApplicationRestrictionActivity.REGISTERED_ACTION.equals(action)) {
+            if (ApplicationRestrictionsActivity.REGISTERED_ACTION.equals(action)) {
                 mOnRegisteredSemaphore.release();
-            } else if (ApplicationRestrictionActivity.RESTRICTION_ACTION.equals(action)) {
+            } else if (ApplicationRestrictionsActivity.RESTRICTION_ACTION.equals(action)) {
                 mReceivedRestrictions = intent.getBundleExtra("value");
                 mOnRestrictionSemaphore.release();
             }
@@ -196,7 +204,7 @@
 
     private void startTestActivity(String command) {
         Intent intent = new Intent();
-        intent.setClassName(PACKAGE_NAME, ApplicationRestrictionActivity.class.getName());
+        intent.setClassName(PACKAGE_NAME, ApplicationRestrictionsActivity.class.getName());
         intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
 
         if (command != null) {
@@ -227,7 +235,7 @@
     }
 
     private void finish() {
-        startTestActivity(ApplicationRestrictionActivity.FINISH);
+        startTestActivity(ApplicationRestrictionsActivity.FINISH);
     }
 
 }
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/BaseDeviceAdminTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/BaseDeviceAdminTest.java
new file mode 100644
index 0000000..148d8a8
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/BaseDeviceAdminTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.cts.deviceandprofileowner;
+
+import android.app.admin.DeviceAdminReceiver;
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.test.InstrumentationTestCase;
+
+/**
+ * Base class for profile and device based tests.
+ *
+ * This class handles making sure that the test is the profile or device owner and that it has an
+ * active admin registered, so that all tests may assume these are done.
+ */
+public class BaseDeviceAdminTest extends InstrumentationTestCase {
+
+    public static class BasicAdminReceiver extends DeviceAdminReceiver {
+    }
+
+    public static final String PACKAGE_NAME = BasicAdminReceiver.class.getPackage().getName();
+    public static final ComponentName ADMIN_RECEIVER_COMPONENT = new ComponentName(
+            PACKAGE_NAME, BasicAdminReceiver.class.getName());
+
+    protected DevicePolicyManager mDevicePolicyManager;
+    protected Context mContext;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+
+        mDevicePolicyManager = (DevicePolicyManager)
+            mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        assertNotNull(mDevicePolicyManager);
+
+        assertTrue(mDevicePolicyManager.isAdminActive(ADMIN_RECEIVER_COMPONENT));
+        assertTrue("App is neither device nor profile owner",
+                mDevicePolicyManager.isProfileOwnerApp(PACKAGE_NAME) ||
+                mDevicePolicyManager.isDeviceOwnerApp(PACKAGE_NAME));
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ClearDeviceOwnerTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ClearDeviceOwnerTest.java
new file mode 100644
index 0000000..eefe781
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ClearDeviceOwnerTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.deviceandprofileowner;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.test.AndroidTestCase;
+
+public class ClearDeviceOwnerTest extends BaseDeviceAdminTest {
+
+    private DevicePolicyManager mDevicePolicyManager;
+
+    @Override
+    protected void tearDown() throws Exception {
+        mDevicePolicyManager = (DevicePolicyManager)
+                mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        if (mDevicePolicyManager != null) {
+            removeActiveAdmin(ADMIN_RECEIVER_COMPONENT);
+            if (mDevicePolicyManager.isDeviceOwnerApp(PACKAGE_NAME)) {
+                mDevicePolicyManager.clearDeviceOwnerApp(PACKAGE_NAME);
+            }
+            assertFalse(mDevicePolicyManager.isAdminActive(ADMIN_RECEIVER_COMPONENT));
+            assertFalse(mDevicePolicyManager.isDeviceOwnerApp(PACKAGE_NAME));
+        }
+
+        super.tearDown();
+    }
+
+    // This test clears the device owner and active admin on tearDown(). To be called from the host
+    // side test once a test case is finished.
+    public void testClearDeviceOwner() {
+    }
+
+    private void removeActiveAdmin(ComponentName cn) throws InterruptedException {
+        if (mDevicePolicyManager.isAdminActive(cn)) {
+            mDevicePolicyManager.removeActiveAdmin(cn);
+            for (int i = 0; i < 1000 && mDevicePolicyManager.isAdminActive(cn); i++) {
+                Thread.sleep(100);
+            }
+        }
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity1.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ExampleIntentReceivingActivity1.java
similarity index 88%
rename from hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity1.java
rename to hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ExampleIntentReceivingActivity1.java
index 03ca9a4..bbcc3b1 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity1.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ExampleIntentReceivingActivity1.java
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.cts.deviceowner;
+package com.android.cts.deviceandprofileowner;
 
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 
 public class ExampleIntentReceivingActivity1 extends Activity {
-    public static final String CONFIRM_ACTION = "com.android.cts.deviceowner.CONFIRM_1";
+    static final String CONFIRM_ACTION = "com.android.cts.deviceandprofileowner.CONFIRM_1";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity2.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ExampleIntentReceivingActivity2.java
similarity index 88%
rename from hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity2.java
rename to hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ExampleIntentReceivingActivity2.java
index 65ccb36..5122b06 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity2.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ExampleIntentReceivingActivity2.java
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.cts.deviceowner;
+package com.android.cts.deviceandprofileowner;
 
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 
 public class ExampleIntentReceivingActivity2 extends Activity {
-    public static final String CONFIRM_ACTION = "com.android.cts.deviceowner.CONFIRM_2";
+    static final String CONFIRM_ACTION = "com.android.cts.deviceandprofileowner.CONFIRM_2";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/MockAccountAuthenticator.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/MockAccountAuthenticator.java
new file mode 100644
index 0000000..161410f
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/MockAccountAuthenticator.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.deviceandprofileowner;
+
+import android.accounts.AbstractAccountAuthenticator;
+import android.accounts.Account;
+import android.accounts.AccountAuthenticatorResponse;
+import android.accounts.AccountManager;
+import android.accounts.NetworkErrorException;
+import android.content.Context;
+import android.os.Bundle;
+
+/* package */ class MockAccountAuthenticator extends AbstractAccountAuthenticator {
+    private static MockAccountAuthenticator sMockAuthenticator = null;
+    private static final String ACCOUNT_NAME = "com.android.cts.deviceandprofileowner.account.name";
+    private static final String ACCOUNT_TYPE = "com.android.cts.deviceandprofileowner.account.type";
+    private static final String AUTH_TOKEN = "mockAuthToken";
+    private static final String AUTH_TOKEN_LABEL = "mockAuthTokenLabel";
+
+    private MockAccountAuthenticator(Context context) {
+        super(context);
+    }
+
+    private Bundle createResultBundle() {
+        Bundle result = new Bundle();
+        result.putString(AccountManager.KEY_ACCOUNT_NAME, ACCOUNT_NAME);
+        result.putString(AccountManager.KEY_ACCOUNT_TYPE, ACCOUNT_TYPE);
+        result.putString(AccountManager.KEY_AUTHTOKEN, AUTH_TOKEN);
+
+        return result;
+    }
+
+    @Override
+    public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
+            String authTokenType, String[] requiredFeatures, Bundle options)
+            throws NetworkErrorException {
+        return createResultBundle();
+    }
+
+    @Override
+    public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
+        return createResultBundle();
+    }
+
+    @Override
+    public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account,
+            String authTokenType, Bundle options) throws NetworkErrorException {
+        return createResultBundle();
+    }
+
+    @Override
+    public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account,
+            Bundle options) throws NetworkErrorException {
+
+        Bundle result = new Bundle();
+        result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true);
+        return result;
+    }
+
+    @Override
+    public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account,
+            String authTokenType, Bundle options) throws NetworkErrorException {
+        return createResultBundle();
+    }
+
+    @Override
+    public String getAuthTokenLabel(String authTokenType) {
+        return AUTH_TOKEN_LABEL;
+    }
+
+    @Override
+    public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account,
+            String[] features) throws NetworkErrorException {
+
+        Bundle result = new Bundle();
+        result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true);
+        return result;
+    }
+
+    public static synchronized MockAccountAuthenticator getMockAuthenticator(Context context) {
+        if (null == sMockAuthenticator) {
+            sMockAuthenticator = new MockAccountAuthenticator(context);
+        }
+        return sMockAuthenticator;
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/MockAccountService.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/MockAccountService.java
new file mode 100644
index 0000000..dfedccb
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/MockAccountService.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.deviceandprofileowner;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+/**
+ * a basic Mock Service for wrapping the MockAccountAuthenticator
+ */
+public class MockAccountService extends Service {
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return MockAccountAuthenticator.getMockAuthenticator(this).getIBinder();
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/PermissionsTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/PermissionsTest.java
new file mode 100644
index 0000000..d181ad5
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/PermissionsTest.java
@@ -0,0 +1,320 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.cts.deviceandprofileowner;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.os.UserManager;
+import android.support.test.uiautomator.By;
+import android.support.test.uiautomator.BySelector;
+import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.UiObject2;
+import android.support.test.uiautomator.UiWatcher;
+import android.support.test.uiautomator.Until;
+import android.util.Log;
+
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test Runtime Permissions APIs in DevicePolicyManager.
+ */
+public class PermissionsTest extends BaseDeviceAdminTest {
+    private static final String TAG = "PermissionsTest";
+
+    private static final String PERMISSION_APP_PACKAGE_NAME
+            = "com.android.cts.permissionapp";
+    private static final String SIMPLE_PRE_M_APP_PACKAGE_NAME =
+            "com.android.cts.launcherapps.simplepremapp";
+    private static final String PERMISSION_NAME = "android.permission.READ_CONTACTS";
+
+    private static final String PERMISSIONS_ACTIVITY_NAME
+            = PERMISSION_APP_PACKAGE_NAME + ".PermissionActivity";
+    private static final String ACTION_CHECK_HAS_PERMISSION
+            = "com.android.cts.permission.action.CHECK_HAS_PERMISSION";
+    private static final String ACTION_REQUEST_PERMISSION
+            = "com.android.cts.permission.action.REQUEST_PERMISSION";
+    private static final String ACTION_PERMISSION_RESULT
+            = "com.android.cts.permission.action.PERMISSION_RESULT";
+    private static final String EXTRA_PERMISSION
+            = "com.android.cts.permission.extra.PERMISSION";
+    private static final String EXTRA_GRANT_STATE
+            = "com.android.cts.permission.extra.GRANT_STATE";
+    private static final int PERMISSION_ERROR = -2;
+    private static final BySelector CRASH_POPUP_BUTTON_SELECTOR = By
+            .clazz(android.widget.Button.class.getName())
+            .text("OK")
+            .pkg("android");
+    private static final BySelector CRASH_POPUP_TEXT_SELECTOR = By
+            .clazz(android.widget.TextView.class.getName())
+            .pkg("android");
+    private static final String CRASH_WATCHER_ID = "CRASH";
+
+    private PermissionBroadcastReceiver mReceiver;
+    private PackageManager mPackageManager;
+    private UiDevice mDevice;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mReceiver = new PermissionBroadcastReceiver();
+        mContext.registerReceiver(mReceiver, new IntentFilter(ACTION_PERMISSION_RESULT));
+        mPackageManager = mContext.getPackageManager();
+        mDevice = UiDevice.getInstance(getInstrumentation());
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mContext.unregisterReceiver(mReceiver);
+        mDevice.removeWatcher(CRASH_WATCHER_ID);
+        super.tearDown();
+    }
+
+    public void testPermissionGrantState() throws Exception {
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        assertPermissionGrantState(PackageManager.PERMISSION_DENIED);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+        // Should stay denied
+        assertPermissionGrantState(PackageManager.PERMISSION_DENIED);
+
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
+        assertPermissionGrantState(PackageManager.PERMISSION_GRANTED);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+        // Should stay granted
+        assertPermissionGrantState(PackageManager.PERMISSION_GRANTED);
+    }
+
+    public void testPermissionPolicy() throws Exception {
+        // reset permission to denied and unlocked
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+        // permission should be locked, so changing the policy should not change the grant state
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_PROMPT);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+
+        // reset permission to denied and unlocked
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+        // permission should be locked, so changing the policy should not change the grant state
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_PROMPT);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_PROMPT);
+    }
+
+    public void testPermissionMixedPolicies() throws Exception {
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_PROMPT);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_PROMPT);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+    }
+
+    public void testPermissionPrompts() throws Exception {
+        // register a crash watcher
+        mDevice.registerWatcher(CRASH_WATCHER_ID, new UiWatcher() {
+            @Override
+            public boolean checkForCondition() {
+                UiObject2 button = mDevice.findObject(CRASH_POPUP_BUTTON_SELECTOR);
+                if (button != null) {
+                    UiObject2 text = mDevice.findObject(CRASH_POPUP_TEXT_SELECTOR);
+                    Log.d(TAG, "Removing an error dialog: " + text != null ? text.getText() : null);
+                    button.click();
+                    return true;
+                }
+                return false;
+            }
+        });
+        mDevice.runWatchers();
+
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_PROMPT);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED, "permission_deny_button");
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED, "permission_allow_button");
+    }
+
+    public void testPermissionUpdate_setDeniedState() throws Exception {
+        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                PERMISSION_APP_PACKAGE_NAME, PERMISSION_NAME),
+                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+    }
+
+    public void testPermissionUpdate_setAutoDeniedPolicy() throws Exception {
+        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                PERMISSION_APP_PACKAGE_NAME, PERMISSION_NAME),
+                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY);
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+    }
+
+    public void testPermissionUpdate_checkDenied() throws Exception {
+        assertPermissionRequest(PackageManager.PERMISSION_DENIED);
+        assertPermissionGrantState(PackageManager.PERMISSION_DENIED);
+    }
+
+    public void testPermissionUpdate_setGrantedState() throws Exception {
+        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                PERMISSION_APP_PACKAGE_NAME, PERMISSION_NAME),
+                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+        assertSetPermissionGrantState(DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
+    }
+
+    public void testPermissionUpdate_setAutoGrantedPolicy() throws Exception {
+        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                PERMISSION_APP_PACKAGE_NAME, PERMISSION_NAME),
+                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+        assertSetPermissionPolicy(DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT);
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+    }
+
+    public void testPermissionUpdate_checkGranted() throws Exception {
+        assertPermissionRequest(PackageManager.PERMISSION_GRANTED);
+        assertPermissionGrantState(PackageManager.PERMISSION_GRANTED);
+    }
+
+    public void testPermissionGrantStatePreMApp() throws Exception {
+        // These tests are to make sure that pre-M apps are not granted runtime permissions
+        // by a profile owner
+        assertSetPermissionGrantStatePreMApp(DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
+        assertSetPermissionGrantStatePreMApp(DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
+    }
+
+    private void assertPermissionRequest(int expected) throws Exception {
+        assertPermissionRequest(expected, null);
+    }
+
+    private void assertPermissionRequest(int expected, String buttonResource) throws Exception {
+        Intent launchIntent = new Intent();
+        launchIntent.setComponent(new ComponentName(PERMISSION_APP_PACKAGE_NAME,
+                PERMISSIONS_ACTIVITY_NAME));
+        launchIntent.putExtra(EXTRA_PERMISSION, PERMISSION_NAME);
+        launchIntent.setAction(ACTION_REQUEST_PERMISSION);
+        launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+        mContext.startActivity(launchIntent);
+        pressPermissionPromptButton(buttonResource);
+        assertEquals(expected, mReceiver.waitForBroadcast());
+        assertEquals(expected, mPackageManager.checkPermission(PERMISSION_NAME,
+                PERMISSION_APP_PACKAGE_NAME));
+    }
+
+    private void assertPermissionGrantState(int expected) throws Exception {
+        assertEquals(expected, mPackageManager.checkPermission(PERMISSION_NAME,
+                PERMISSION_APP_PACKAGE_NAME));
+        Intent launchIntent = new Intent();
+        launchIntent.setComponent(new ComponentName(PERMISSION_APP_PACKAGE_NAME,
+                PERMISSIONS_ACTIVITY_NAME));
+        launchIntent.putExtra(EXTRA_PERMISSION, PERMISSION_NAME);
+        launchIntent.setAction(ACTION_CHECK_HAS_PERMISSION);
+        launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+        mContext.startActivity(launchIntent);
+        assertEquals(expected, mReceiver.waitForBroadcast());
+    }
+
+    private void assertSetPermissionPolicy(int value) throws Exception {
+        mDevicePolicyManager.setPermissionPolicy(ADMIN_RECEIVER_COMPONENT,
+                value);
+        assertEquals(mDevicePolicyManager.getPermissionPolicy(ADMIN_RECEIVER_COMPONENT),
+                value);
+    }
+
+    private void assertSetPermissionGrantState(int value) throws Exception {
+        mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                PERMISSION_APP_PACKAGE_NAME, PERMISSION_NAME,
+                value);
+        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                PERMISSION_APP_PACKAGE_NAME, PERMISSION_NAME),
+                value);
+    }
+
+    private void assertSetPermissionGrantStatePreMApp(int value) throws Exception {
+        assertFalse(mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                SIMPLE_PRE_M_APP_PACKAGE_NAME, PERMISSION_NAME,
+                value));
+        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
+                SIMPLE_PRE_M_APP_PACKAGE_NAME, PERMISSION_NAME),
+                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
+        // Install time permissions should always be granted
+        assertEquals(mPackageManager.checkPermission(PERMISSION_NAME,
+                SIMPLE_PRE_M_APP_PACKAGE_NAME),
+                PackageManager.PERMISSION_GRANTED);
+    }
+
+    private void pressPermissionPromptButton(String resName) throws Exception {
+        if (resName == null) {
+            return;
+        }
+
+        BySelector selector = By
+                .clazz(android.widget.Button.class.getName())
+                .res("com.android.packageinstaller", resName);
+        mDevice.wait(Until.hasObject(selector), 5000);
+        UiObject2 button = mDevice.findObject(selector);
+        assertNotNull("Couldn't find button with resource id: " + resName, button);
+        button.click();
+    }
+
+    private class PermissionBroadcastReceiver extends BroadcastReceiver {
+        private BlockingQueue<Integer> mQueue = new ArrayBlockingQueue<Integer> (1);
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Integer result = new Integer(intent.getIntExtra(EXTRA_GRANT_STATE, PERMISSION_ERROR));
+            Log.d(TAG, "Grant state received " + result);
+            assertTrue(mQueue.add(result));
+        }
+
+        public int waitForBroadcast() throws Exception {
+            Integer result = mQueue.poll(30, TimeUnit.SECONDS);
+            mQueue.clear();
+            assertNotNull(result);
+            Log.d(TAG, "Grant state retrieved " + result.intValue());
+            return result.intValue();
+        }
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/PersistentIntentResolvingTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/PersistentIntentResolvingTest.java
similarity index 89%
rename from hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/PersistentIntentResolvingTest.java
rename to hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/PersistentIntentResolvingTest.java
index fcef05f..41526ec 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/PersistentIntentResolvingTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/PersistentIntentResolvingTest.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.cts.deviceowner;
+package com.android.cts.deviceandprofileowner;
 
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
@@ -22,8 +22,8 @@
 import android.content.IntentFilter;
 import android.os.SystemClock;
 
-public class PersistentIntentResolvingTest extends BaseDeviceOwnerTest {
-    public static final String EXAMPLE_ACTION = "com.android.cts.deviceowner.EXAMPLE_ACTION";
+public class PersistentIntentResolvingTest extends BaseDeviceAdminTest {
+    static final String EXAMPLE_ACTION = "com.android.cts.deviceandprofileowner.EXAMPLE_ACTION";
 
     private boolean mReceivedConfirmationFrom1;
     private boolean mReceivedConfirmationFrom2;
@@ -48,7 +48,8 @@
 
     @Override
     protected void tearDown() throws Exception {
-        mDevicePolicyManager.clearPackagePersistentPreferredActivities(getWho(), PACKAGE_NAME);
+        mDevicePolicyManager.clearPackagePersistentPreferredActivities(ADMIN_RECEIVER_COMPONENT,
+                PACKAGE_NAME);
         mContext.unregisterReceiver(mReceiver);
 
         super.tearDown();
@@ -80,7 +81,8 @@
 
     public void testAddAndClearPersistentPreferredActivitiesYieldsResolverActivity() {
         addPersistentPreferredActivity();
-        mDevicePolicyManager.clearPackagePersistentPreferredActivities(getWho(), PACKAGE_NAME);
+        mDevicePolicyManager.clearPackagePersistentPreferredActivities(ADMIN_RECEIVER_COMPONENT,
+                PACKAGE_NAME);
 
         sendExampleIntent();
         SystemClock.sleep(5000);
@@ -121,6 +123,7 @@
         filter.addCategory(Intent.CATEGORY_DEFAULT);
         ComponentName targetComponent = new ComponentName(PACKAGE_NAME,
                 ExampleIntentReceivingActivity2.class.getName());
-        mDevicePolicyManager.addPersistentPreferredActivity(getWho(), filter, targetComponent);
+        mDevicePolicyManager.addPersistentPreferredActivity(ADMIN_RECEIVER_COMPONENT, filter,
+                targetComponent);
     }
 }
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ScreenCaptureDisabledActivity.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ScreenCaptureDisabledActivity.java
new file mode 100644
index 0000000..b5b4fdc
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ScreenCaptureDisabledActivity.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.cts.deviceandprofileowner;
+
+import android.app.Activity;
+import android.content.Intent;
+
+/**
+ * Test activity for setScreenCaptureDisabled().
+ */
+public class ScreenCaptureDisabledActivity extends Activity {
+
+    static final String ACTIVITY_RESUMED =
+            "com.android.cts.deviceandprofileowner.ACTIVITY_RESUMED";
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        sendBroadcast(new Intent(ACTIVITY_RESUMED));
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ScreenCaptureDisabledTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ScreenCaptureDisabledTest.java
new file mode 100644
index 0000000..e2deaa4
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/ScreenCaptureDisabledTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+package com.android.cts.deviceandprofileowner;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.util.Log;
+
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests for {@link DevicePolicyManager#setScreenCaptureDisabled} and
+ * {@link DevicePolicyManager#getScreenCaptureDisabled} APIs.
+ */
+public class ScreenCaptureDisabledTest extends BaseDeviceAdminTest {
+
+    private static final String TAG = "ScreenCaptureDisabledTest";
+
+    private ScreenCaptureBroadcastReceiver mReceiver = new ScreenCaptureBroadcastReceiver();
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext.registerReceiver(mReceiver, new IntentFilter(
+                ScreenCaptureDisabledActivity.ACTIVITY_RESUMED));
+    }
+
+    protected void tearDown() throws Exception {
+        mContext.unregisterReceiver(mReceiver);
+        super.tearDown();
+    }
+
+    public void testSetScreenCaptureDisabled_false() throws Exception {
+        mDevicePolicyManager.setScreenCaptureDisabled(ADMIN_RECEIVER_COMPONENT, false);
+        assertFalse(mDevicePolicyManager.getScreenCaptureDisabled(ADMIN_RECEIVER_COMPONENT));
+        assertFalse(mDevicePolicyManager.getScreenCaptureDisabled(null /* any admin */));
+        startTestActivity();
+        assertNotNull(getInstrumentation().getUiAutomation().takeScreenshot());
+    }
+
+    public void testSetScreenCaptureDisabled_true() throws Exception {
+        mDevicePolicyManager.setScreenCaptureDisabled(ADMIN_RECEIVER_COMPONENT, true);
+        assertTrue(mDevicePolicyManager.getScreenCaptureDisabled(ADMIN_RECEIVER_COMPONENT));
+        assertTrue(mDevicePolicyManager.getScreenCaptureDisabled(null /* any admin */));
+        startTestActivity();
+        assertNull(getInstrumentation().getUiAutomation().takeScreenshot());
+    }
+
+    public void testScreenCapturePossible() throws Exception {
+        assertNotNull(getInstrumentation().getUiAutomation().takeScreenshot());
+    }
+
+    // We need to launch an activity before trying to take a screen shot, because screenshots are
+    // only blocked on a per-user basis in the profile owner case depending on the owner of the
+    // foreground activity.
+    private void startTestActivity() throws Exception {
+        Intent launchIntent = new Intent();
+        launchIntent.setComponent(new ComponentName(PACKAGE_NAME,
+                ScreenCaptureDisabledActivity.class.getName()));
+        launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        mContext.startActivity(launchIntent);
+        assertTrue(mReceiver.waitForBroadcast());
+        Thread.sleep(1000);
+    }
+
+    private class ScreenCaptureBroadcastReceiver extends BroadcastReceiver {
+        private final Semaphore mSemaphore = new Semaphore(0);
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Log.d(TAG, "Broadcast received");
+            mSemaphore.release();
+        }
+
+        public boolean waitForBroadcast() throws Exception {
+            if (mSemaphore.tryAcquire(5, TimeUnit.SECONDS)) {
+                return true;
+            }
+            return false;
+        }
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/AndroidManifest.xml b/hostsidetests/devicepolicy/app/DeviceOwner/AndroidManifest.xml
index 64c7262..e424f18 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/AndroidManifest.xml
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/AndroidManifest.xml
@@ -35,19 +35,9 @@
                 <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
             </intent-filter>
         </receiver>
-        <activity android:name="com.android.cts.deviceowner.ExampleIntentReceivingActivity1">
-            <intent-filter>
-                <action android:name="com.android.cts.deviceowner.EXAMPLE_ACTION" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
 
-        <activity android:name="com.android.cts.deviceowner.ExampleIntentReceivingActivity2">
-            <intent-filter>
-                <action android:name="com.android.cts.deviceowner.EXAMPLE_ACTION" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
+        <activity
+            android:name="com.android.cts.deviceowner.KeyManagementActivity" />
 
         <activity
             android:name="com.android.cts.deviceowner.LockTaskUtilityActivity" />
@@ -62,8 +52,6 @@
             android:name="com.android.cts.deviceowner.LockTaskTest$IntentReceivingActivity"
             android:taskAffinity="com.android.cts.deviceowner.LockTaskTest.IntentReceivingActivity"
             />
-        <activity
-            android:name="com.android.cts.deviceowner.ApplicationRestrictionActivity" />
     </application>
 
     <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity1.java b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/KeyManagementActivity.java
similarity index 73%
copy from hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity1.java
copy to hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/KeyManagementActivity.java
index 03ca9a4..c108d24 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ExampleIntentReceivingActivity1.java
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/KeyManagementActivity.java
@@ -20,15 +20,11 @@
 import android.content.Intent;
 import android.os.Bundle;
 
-public class ExampleIntentReceivingActivity1 extends Activity {
-    public static final String CONFIRM_ACTION = "com.android.cts.deviceowner.CONFIRM_1";
+public class KeyManagementActivity extends Activity {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        if (getIntent().getAction().equals(PersistentIntentResolvingTest.EXAMPLE_ACTION)) {
-            sendBroadcast(new Intent(CONFIRM_ACTION));
-        }
         finish();
     }
 }
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/KeyManagementTest.java b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/KeyManagementTest.java
index a608794..5774b0c 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/KeyManagementTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/KeyManagementTest.java
@@ -45,13 +45,13 @@
 import android.content.Context;
 
 public class KeyManagementTest extends
-        ActivityInstrumentationTestCase2<ExampleIntentReceivingActivity1> {
+        ActivityInstrumentationTestCase2<KeyManagementActivity> {
 
     private static final int KEYCHAIN_TIMEOUT_MS = 8000;
     private DevicePolicyManager mDevicePolicyManager;
 
     public KeyManagementTest() {
-        super(ExampleIntentReceivingActivity1.class);
+        super(KeyManagementActivity.class);
     }
 
     @Override
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ScreenCaptureDisabledTest.java b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ScreenCaptureDisabledTest.java
deleted file mode 100644
index 59b9773..0000000
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/ScreenCaptureDisabledTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-package com.android.cts.deviceowner;
-
-import android.app.admin.DevicePolicyManager;
-
-/**
- * Tests for {@link DevicePolicyManager#setScreenCaptureDisabled} and
- * {@link DevicePolicyManager#getScreenCaptureDisabled} APIs.
- */
-public class ScreenCaptureDisabledTest extends BaseDeviceOwnerTest {
-
-    public void testSetScreenCaptureDisabled_false() throws Exception {
-        mDevicePolicyManager.setScreenCaptureDisabled(getWho(), false);
-        assertFalse(mDevicePolicyManager.getScreenCaptureDisabled(getWho()));
-    }
-
-    public void testSetScreenCaptureDisabled_true() throws Exception {
-        mDevicePolicyManager.setScreenCaptureDisabled(getWho(), true);
-        assertTrue(mDevicePolicyManager.getScreenCaptureDisabled(getWho()));
-    }
-
-    public void testSetScreenCaptureDisabled_anyAdminTrue() {
-        mDevicePolicyManager.setScreenCaptureDisabled(getWho(), true);
-        assertTrue(mDevicePolicyManager.getScreenCaptureDisabled(null /* any admin */));
-    }
-
-    public void testSetScreenCaptureDisabled_anyAdminFalse() {
-        mDevicePolicyManager.setScreenCaptureDisabled(getWho(), false);
-        assertFalse(mDevicePolicyManager.getScreenCaptureDisabled(null /* any admin */));
-    }
-}
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/WifiConfigLockdownTest.java b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/WifiConfigLockdownTest.java
index ef1d8f7..1627961 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/WifiConfigLockdownTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/WifiConfigLockdownTest.java
@@ -26,15 +26,15 @@
 
 import java.util.List;
 
-import static com.android.compatibility.common.util.WifiConfigCreator.CREATE_WIFI_CONFIG_ACTION;
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_CREATE_WIFI_CONFIG;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_NETID;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_PASSWORD;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_SECURITY_TYPE;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_SSID;
-import static com.android.compatibility.common.util.WifiConfigCreator.REMOVE_WIFI_CONFIG_ACTION;
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_REMOVE_WIFI_CONFIG;
 import static com.android.compatibility.common.util.WifiConfigCreator.SECURITY_TYPE_NONE;
 import static com.android.compatibility.common.util.WifiConfigCreator.SECURITY_TYPE_WPA;
-import static com.android.compatibility.common.util.WifiConfigCreator.UPDATE_WIFI_CONFIG_ACTION;
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_UPDATE_WIFI_CONFIG;
 
 /**
  * Testing WiFi configuration lockdown by Device Owner
@@ -58,7 +58,7 @@
                 Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, "1");
         mConfigCreator.addNetwork(ORIGINAL_DEVICE_OWNER_SSID, true, SECURITY_TYPE_WPA,
                 ORIGINAL_PASSWORD);
-        startRegularActivity(CREATE_WIFI_CONFIG_ACTION, -1, ORIGINAL_REGULAR_SSID,
+        startRegularActivity(ACTION_CREATE_WIFI_CONFIG, -1, ORIGINAL_REGULAR_SSID,
                 SECURITY_TYPE_WPA, ORIGINAL_PASSWORD);
     }
 
@@ -116,7 +116,7 @@
         int updateCount = 0;
         for (WifiConfiguration config : configs) {
             if (areMatchingSsids(ORIGINAL_DEVICE_OWNER_SSID, config.SSID)) {
-                startRegularActivity(UPDATE_WIFI_CONFIG_ACTION, config.networkId,
+                startRegularActivity(ACTION_UPDATE_WIFI_CONFIG, config.networkId,
                         CHANGED_DEVICE_OWNER_SSID, SECURITY_TYPE_NONE, null);
                 ++updateCount;
             }
@@ -142,7 +142,7 @@
         int removeCount = 0;
         for (WifiConfiguration config : configs) {
             if (areMatchingSsids(ORIGINAL_DEVICE_OWNER_SSID, config.SSID)) {
-                startRegularActivity(REMOVE_WIFI_CONFIG_ACTION, config.networkId,
+                startRegularActivity(ACTION_REMOVE_WIFI_CONFIG, config.networkId,
                         null, SECURITY_TYPE_NONE, null);
                 ++removeCount;
             }
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/Android.mk b/hostsidetests/devicepolicy/app/IntentReceiver/Android.mk
index 62c7f28..98cdf52 100644
--- a/hostsidetests/devicepolicy/app/IntentReceiver/Android.mk
+++ b/hostsidetests/devicepolicy/app/IntentReceiver/Android.mk
@@ -26,6 +26,8 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 ctstestrunner
+
 LOCAL_SDK_VERSION := current
 
 include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/AndroidManifest.xml b/hostsidetests/devicepolicy/app/IntentReceiver/AndroidManifest.xml
index 36ac7a7..1512bb2 100644
--- a/hostsidetests/devicepolicy/app/IntentReceiver/AndroidManifest.xml
+++ b/hostsidetests/devicepolicy/app/IntentReceiver/AndroidManifest.xml
@@ -22,16 +22,53 @@
     <uses-permission android:name="com.android.cts.managedprofile.permission.SAMPLE"/>
 
     <application>
+
+        <uses-library android:name="android.test.runner" />
+
         <activity android:name="com.android.cts.intent.receiver.IntentReceiverActivity">
             <intent-filter>
                 <action android:name="com.android.cts.action.COPY_TO_CLIPBOARD" />
                 <action android:name="com.android.cts.action.READ_FROM_URI" />
                 <action android:name="com.android.cts.action.TAKE_PERSISTABLE_URI_PERMISSION" />
                 <action android:name="com.android.cts.action.WRITE_TO_URI" />
-                <action android:name="com.android.cts.action.TEST_LOCK_TASK" />
+                <action android:name="com.android.cts.action.JUST_CREATE" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+
+        <activity android:name=".SimpleIntentReceiverActivity" android:exported="true"/>
+
+        <activity-alias android:name=".BrowserActivity"
+            android:targetActivity=".SimpleIntentReceiverActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+                <category android:name="android.intent.category.BROWSABLE"/>
+                <data android:scheme="http"/>
+            </intent-filter>
+        </activity-alias>
+
+        <activity-alias android:name=".AppLinkActivity"
+            android:targetActivity=".SimpleIntentReceiverActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+                <category android:name="android.intent.category.BROWSABLE"/>
+                <data android:scheme="http" android:host="com.android.cts.intent.receiver"/>
+            </intent-filter>
+        </activity-alias>
+
+        <receiver android:name=".BroadcastIntentReceiver">
+            <intent-filter>
+                <action android:name="android.app.action.DEVICE_OWNER_CHANGED"/>
+            </intent-filter>
+        </receiver>
+
     </application>
 
+    <instrumentation
+        android:name="android.support.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.cts.intent.receiver"
+        android:label="Intent Receiver CTS Tests" />
+
 </manifest>
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/BroadcastIntentReceiver.java b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/BroadcastIntentReceiver.java
new file mode 100644
index 0000000..34b8798
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/BroadcastIntentReceiver.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.intent.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+
+public class BroadcastIntentReceiver extends BroadcastReceiver {
+
+    static final String OWNER_CHANGED_BROADCAST_RECEIVED_KEY
+         = "owner-changed-broadcast-received";
+
+    static final String PREFERENCES_NAME = "BroadcastIntentReceiver";
+
+    @Override
+    public void onReceive(Context c, Intent i) {
+        SharedPreferences prefs = c.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = prefs.edit();
+        editor.putBoolean(OWNER_CHANGED_BROADCAST_RECEIVED_KEY, true);
+        editor.apply();
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/OwnerChangedBroadcastTest.java b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/OwnerChangedBroadcastTest.java
new file mode 100644
index 0000000..5cad040
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/OwnerChangedBroadcastTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.intent.receiver;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.test.InstrumentationTestCase;
+
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
+import java.lang.InterruptedException;
+
+public class OwnerChangedBroadcastTest extends InstrumentationTestCase {
+
+    private SharedPreferences mPreferences;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        Context context = getInstrumentation().getTargetContext();
+        mPreferences = context.getSharedPreferences(
+                BroadcastIntentReceiver.PREFERENCES_NAME, Context.MODE_PRIVATE);
+    }
+
+    // We can't just register a broadcast receiver in the code because the broadcast
+    // may have been sent before this test is run. So we have a manifest receiver
+    // listening to the broadcast and writing to a shared preference when it receives it.
+    public void testOwnerChangedBroadcastReceived() throws InterruptedException {
+        final Semaphore mPreferenceChanged = new Semaphore(0);
+
+        OnSharedPreferenceChangeListener listener = new OnSharedPreferenceChangeListener() {
+            @Override
+            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+                if (key.equals(BroadcastIntentReceiver.OWNER_CHANGED_BROADCAST_RECEIVED_KEY)) {
+                    mPreferenceChanged.release();
+                }
+            }
+        };
+        mPreferences.registerOnSharedPreferenceChangeListener(listener);
+
+        if (mPreferences.getBoolean(BroadcastIntentReceiver.OWNER_CHANGED_BROADCAST_RECEIVED_KEY,
+                false)) {
+            // The broadcast intent has already been received? good
+            // Otherwise, we'll wait until we receive it.
+            return;
+        }
+        assertTrue(mPreferenceChanged.tryAcquire(40, TimeUnit.SECONDS));
+        assertTrue(mPreferences.getBoolean(
+                BroadcastIntentReceiver.OWNER_CHANGED_BROADCAST_RECEIVED_KEY, false));
+    }
+
+    public void testOwnerChangedBroadcastNotReceived() {
+        assertFalse(mPreferences.getBoolean(
+                BroadcastIntentReceiver.OWNER_CHANGED_BROADCAST_RECEIVED_KEY, false));
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/SimpleIntentReceiverActivity.java b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/SimpleIntentReceiverActivity.java
new file mode 100644
index 0000000..23755df
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/SimpleIntentReceiverActivity.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.intent.receiver;
+
+import android.app.admin.DevicePolicyManager;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import android.os.Bundle;
+
+/**
+ * An activity that receives an intent and returns immediately, indicating its own name and if it is
+ * running in a managed profile.
+ */
+public class SimpleIntentReceiverActivity extends Activity {
+    private static final String TAG = "SimpleIntentReceiverActivity";
+
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        String className = getIntent().getComponent().getClassName();
+
+        // We try to check if we are in a managed profile or not.
+        // To do this, check if com.android.cts.managedprofile is the profile owner.
+        DevicePolicyManager dpm =
+                (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
+        boolean inManagedProfile = dpm.isProfileOwnerApp("com.android.cts.managedprofile");
+
+        Log.i(TAG, "activity " + className + " started, is in managed profile: "
+                + inManagedProfile);
+        Intent result = new Intent();
+        result.putExtra("extra_receiver_class", className);
+        result.putExtra("extra_in_managed_profile", inManagedProfile);
+        setResult(Activity.RESULT_OK, result);
+        finish();
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/AppLinkTest.java b/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/AppLinkTest.java
new file mode 100644
index 0000000..51ff362
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/AppLinkTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.intent.sender;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.test.InstrumentationTestCase;
+import android.util.Log;
+
+public class AppLinkTest extends InstrumentationTestCase {
+
+    private static final String TAG = "AppLinkTest";
+
+    private Context mContext;
+    private IntentSenderActivity mActivity;
+
+    private static final String EXTRA_IN_MANAGED_PROFILE = "extra_in_managed_profile";
+    private static final String EXTRA_RECEIVER_CLASS = "extra_receiver_class";
+    private static final String APP_LINK_ACTIVITY
+            = "com.android.cts.intent.receiver.AppLinkActivity";
+    private static final String BROWSER_ACTIVITY
+            = "com.android.cts.intent.receiver.BrowserActivity";
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getTargetContext();
+        mActivity = launchActivity(mContext.getPackageName(), IntentSenderActivity.class, null);
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        mActivity.finish();
+        super.tearDown();
+    }
+
+    public void testReceivedByAppLinkActivityInPrimary() throws Exception {
+        checkHttpIntentResult(APP_LINK_ACTIVITY, false);
+    }
+
+    public void testReceivedByAppLinkActivityInManaged() throws Exception {
+        checkHttpIntentResult(APP_LINK_ACTIVITY, true);
+    }
+
+    public void testReceivedByBrowserActivityInManaged() throws Exception {
+        checkHttpIntentResult(BROWSER_ACTIVITY, true);
+    }
+
+    public void testTwoReceivers() {
+        assertNumberOfReceivers(2);
+    }
+
+    public void testThreeReceivers() {
+        assertNumberOfReceivers(3);
+    }
+
+    // Should not be called if there are several possible receivers to the intent
+    // (see getHttpIntent)
+    private void checkHttpIntentResult(String receiverClassName, boolean inManagedProfile)
+            throws Exception {
+        PackageManager pm = mContext.getPackageManager();
+
+        Intent result = mActivity.getResult(getHttpIntent());
+        // If it is received in the other profile, we cannot check the class from the ResolveInfo
+        // returned by queryIntentActivities. So we rely on the receiver telling us its class.
+        assertEquals(receiverClassName, result.getStringExtra(EXTRA_RECEIVER_CLASS));
+        assertTrue(result.hasExtra(EXTRA_IN_MANAGED_PROFILE));
+        assertEquals(inManagedProfile, result.getBooleanExtra(EXTRA_IN_MANAGED_PROFILE, false));
+    }
+
+    private void assertNumberOfReceivers(int n) {
+        PackageManager pm = mContext.getPackageManager();
+        assertEquals(n, pm.queryIntentActivities(getHttpIntent(), /* flags = */ 0).size());
+    }
+
+    private Intent getHttpIntent() {
+        Intent i = new Intent(Intent.ACTION_VIEW);
+        i.addCategory(Intent.CATEGORY_BROWSABLE);
+        i.setData(Uri.parse("http://com.android.cts.intent.receiver"));
+        return i;
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/IntentSenderActivity.java b/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/IntentSenderActivity.java
index fd421ac..eb64d47 100644
--- a/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/IntentSenderActivity.java
+++ b/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/IntentSenderActivity.java
@@ -66,8 +66,12 @@
     }
 
     public Intent getResult(Intent intent) throws Exception {
+        Log.d(TAG, "Sending intent " + intent);
         startActivityForResult(intent, 42);
         final Result result = mResult.poll(30, TimeUnit.SECONDS);
+        if (result != null) {
+            Log.d(TAG, "Result intent: " + result.data);
+        }
         return (result != null) ? result.data : null;
     }
 
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/Android.mk b/hostsidetests/devicepolicy/app/ManagedProfile/Android.mk
index f4adb31..b31e74b 100644
--- a/hostsidetests/devicepolicy/app/ManagedProfile/Android.mk
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/Android.mk
@@ -26,7 +26,8 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner cts-junit
 
-LOCAL_STATIC_JAVA_LIBRARIES = android-support-v4 ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES = android-support-v4 ctstestrunner compatibility-device-util_v2 \
+	ub-uiautomator
 
 LOCAL_SDK_VERSION := current
 
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/AndroidManifest.xml b/hostsidetests/devicepolicy/app/ManagedProfile/AndroidManifest.xml
index 31e4ad4..e03ebdc 100644
--- a/hostsidetests/devicepolicy/app/ManagedProfile/AndroidManifest.xml
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/AndroidManifest.xml
@@ -18,6 +18,7 @@
     package="com.android.cts.managedprofile">
 
     <uses-sdk android:minSdkVersion="20"/>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
@@ -51,12 +52,7 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity android:name=".ComponentDisablingActivity" >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT"/>
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
+        <activity android:name=".ComponentDisablingActivity" android:exported="true">
         </activity>
         <activity android:name=".ManagedProfileActivity">
             <intent-filter>
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/BaseManagedProfileTest.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/BaseManagedProfileTest.java
index 2a54d97..49754d0 100644
--- a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/BaseManagedProfileTest.java
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/BaseManagedProfileTest.java
@@ -19,7 +19,8 @@
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.Context;
-import android.test.AndroidTestCase;
+import android.support.test.uiautomator.UiDevice;
+import android.test.InstrumentationTestCase;
 
 /**
  * Base class for profile-owner based tests.
@@ -27,7 +28,7 @@
  * This class handles making sure that the test is the profile owner and that it has an active admin
  * registered, so that all tests may assume these are done.
  */
-public class BaseManagedProfileTest extends AndroidTestCase {
+public class BaseManagedProfileTest extends InstrumentationTestCase {
 
     public static class BasicAdminReceiver extends DeviceAdminReceiver {
     }
@@ -36,21 +37,23 @@
             BasicAdminReceiver.class.getPackage().getName(), BasicAdminReceiver.class.getName());
 
     protected DevicePolicyManager mDevicePolicyManager;
+    protected Context mContext;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        mContext = getInstrumentation().getContext();
 
-       mDevicePolicyManager = (DevicePolicyManager)
-               mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
-       assertNotNull(mDevicePolicyManager);
+        mDevicePolicyManager = (DevicePolicyManager)
+                mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        assertNotNull(mDevicePolicyManager);
 
-       // TODO: Only check the below if we are running as the profile user. If running under the
-       // user owner, can we check that there is a profile and that the below holds for it? If we
-       // don't want to do these checks every time we could get rid of this class altogether and
-       // just have a single test case running under the profile user that do them.
-       assertTrue(mDevicePolicyManager.isAdminActive(ADMIN_RECEIVER_COMPONENT));
-       assertTrue(mDevicePolicyManager.isProfileOwnerApp(
-               ADMIN_RECEIVER_COMPONENT.getPackageName()));
+        // TODO: Only check the below if we are running as the profile user. If running under the
+        // user owner, can we check that there is a profile and that the below holds for it? If we
+        // don't want to do these checks every time we could get rid of this class altogether and
+        // just have a single test case running under the profile user that do them.
+        assertTrue(mDevicePolicyManager.isAdminActive(ADMIN_RECEIVER_COMPONENT));
+        assertTrue(mDevicePolicyManager.isProfileOwnerApp(
+                ADMIN_RECEIVER_COMPONENT.getPackageName()));
     }
 }
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/CrossProfileUtils.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/CrossProfileUtils.java
index 21b2d36..6a63cea 100644
--- a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/CrossProfileUtils.java
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/CrossProfileUtils.java
@@ -20,9 +20,16 @@
 
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
+import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
 import android.os.UserManager;
 import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.util.List;
 
 /**
  * The methods in this class are not really tests.
@@ -31,6 +38,8 @@
  * device-side methods from the host.
  */
 public class CrossProfileUtils extends AndroidTestCase {
+    private static final String TAG = "CrossProfileUtils";
+
     private static final String ACTION_READ_FROM_URI = "com.android.cts.action.READ_FROM_URI";
 
     private static final String ACTION_WRITE_TO_URI = "com.android.cts.action.WRITE_TO_URI";
@@ -86,4 +95,18 @@
         dpm.clearUserRestriction(ADMIN_RECEIVER_COMPONENT,
                 UserManager.DISALLOW_CROSS_PROFILE_COPY_PASTE);
     }
+
+    // Disables all browsers in current user
+    public void testDisableAllBrowsers() {
+        PackageManager pm = (PackageManager) getContext().getPackageManager();
+        DevicePolicyManager dpm = (DevicePolicyManager)
+               getContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
+        Intent webIntent = new Intent(Intent.ACTION_VIEW);
+        webIntent.setData(Uri.parse("http://com.android.cts.intent.receiver"));
+        List<ResolveInfo> ris = pm.queryIntentActivities(webIntent, 0 /* no flags*/);
+        for (ResolveInfo ri : ris) {
+            Log.d(TAG, "Hiding " + ri.activityInfo.packageName);
+            dpm.setApplicationHidden(ADMIN_RECEIVER_COMPONENT, ri.activityInfo.packageName, true);
+        }
+    }
 }
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/NfcTest.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/NfcTest.java
new file mode 100644
index 0000000..c74211d
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/NfcTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.managedprofile;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+public class NfcTest extends AndroidTestCase {
+    private static final String SAMPLE_TEXT = "This is my text to send.";
+    private static final String TEXT_MIME_TYPE = "text/plain";
+    private static final String NFC_BEAM_ACTIVITY = "com.android.nfc.BeamShareActivity";
+
+    public void testNfcShareDisabled() throws Exception {
+        Intent intent = getTextShareIntent();
+        assertFalse("Nfc beam activity should not be resolved", isNfcBeamActivityResolved(intent));
+    }
+
+    public void testNfcShareEnabled() throws Exception {
+        Intent intent = getTextShareIntent();
+        assertTrue("Nfc beam activity should be resolved", isNfcBeamActivityResolved(intent));
+    }
+
+    private Intent getTextShareIntent() {
+        Intent intent = new Intent();
+        intent.setAction(Intent.ACTION_SEND);
+        intent.putExtra(Intent.EXTRA_TEXT, SAMPLE_TEXT);
+        intent.setType(TEXT_MIME_TYPE);
+        return intent;
+    }
+
+    private boolean isNfcBeamActivityResolved(Intent intent) {
+        PackageManager pm = mContext.getPackageManager();
+        for (ResolveInfo resolveInfo : pm.queryIntentActivities(intent, 0)) {
+            if (NFC_BEAM_ACTIVITY.equals(resolveInfo.activityInfo.name)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}
+
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/PermissionsTest.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/PermissionsTest.java
deleted file mode 100644
index 1cc2ee2..0000000
--- a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/PermissionsTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-package com.android.cts.managedprofile;
-
-import android.app.admin.DevicePolicyManager;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.UserManager;
-
-import com.android.cts.managedprofile.BaseManagedProfileTest;
-
-import org.junit.Ignore;
-
-/**
- * Test Runtime Permissions APIs in DevicePolicyManager.
- */
-public class PermissionsTest extends BaseManagedProfileTest {
-
-    private static final String SIMPLE_APP_PACKAGE_NAME = "com.android.cts.launcherapps.simpleapp";
-    private static final String SIMPLE_PRE_M_APP_PACKAGE_NAME =
-            "com.android.cts.launcherapps.simplepremapp";
-    private static final String PERMISSION_NAME = "android.permission.READ_CONTACTS";
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        // Make sure we are running in a managed profile, otherwise risk wiping the primary user's
-        // data.
-        assertTrue(mDevicePolicyManager.isAdminActive(ADMIN_RECEIVER_COMPONENT));
-        assertTrue(mDevicePolicyManager.isProfileOwnerApp(
-                ADMIN_RECEIVER_COMPONENT.getPackageName()));
-    }
-
-    public void testPermissionGrantState() {
-        PackageManager pm = mContext.getPackageManager();
-        mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME,
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
-        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME),
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED);
-        assertEquals(pm.checkPermission(PERMISSION_NAME, SIMPLE_APP_PACKAGE_NAME),
-                PackageManager.PERMISSION_DENIED);
-
-        mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME,
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
-        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME),
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
-        // Should stay denied
-        assertEquals(pm.checkPermission(PERMISSION_NAME, SIMPLE_APP_PACKAGE_NAME),
-                PackageManager.PERMISSION_DENIED);
-
-        mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME,
-                DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
-        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME),
-                DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
-        assertEquals(pm.checkPermission(PERMISSION_NAME, SIMPLE_APP_PACKAGE_NAME),
-                PackageManager.PERMISSION_GRANTED);
-
-        mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME,
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
-        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_APP_PACKAGE_NAME, PERMISSION_NAME),
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
-        // Should stay granted
-        assertEquals(pm.checkPermission(PERMISSION_NAME, SIMPLE_APP_PACKAGE_NAME),
-                PackageManager.PERMISSION_GRANTED);
-
-        mDevicePolicyManager.setPermissionPolicy(ADMIN_RECEIVER_COMPONENT,
-                DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY);
-        assertEquals(mDevicePolicyManager.getPermissionPolicy(ADMIN_RECEIVER_COMPONENT),
-                DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY);
-
-        mDevicePolicyManager.setPermissionPolicy(ADMIN_RECEIVER_COMPONENT,
-                DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT);
-        assertEquals(mDevicePolicyManager.getPermissionPolicy(ADMIN_RECEIVER_COMPONENT),
-                DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT);
-
-        mDevicePolicyManager.setPermissionPolicy(ADMIN_RECEIVER_COMPONENT,
-                DevicePolicyManager.PERMISSION_POLICY_PROMPT);
-        assertEquals(mDevicePolicyManager.getPermissionPolicy(ADMIN_RECEIVER_COMPONENT),
-                DevicePolicyManager.PERMISSION_POLICY_PROMPT);
-    }
-
-    public void testPermissionGrantStatePreMApp() {
-        // These tests are to make sure that pre-M apps are not granted runtime permissions
-        // by a profile owner
-        PackageManager pm = mContext.getPackageManager();
-        assertFalse(mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_PRE_M_APP_PACKAGE_NAME, PERMISSION_NAME,
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED));
-        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_PRE_M_APP_PACKAGE_NAME, PERMISSION_NAME),
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
-        // Install time permissions should always be granted
-        assertEquals(pm.checkPermission(PERMISSION_NAME, SIMPLE_PRE_M_APP_PACKAGE_NAME),
-                PackageManager.PERMISSION_GRANTED);
-
-        mDevicePolicyManager.setPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_PRE_M_APP_PACKAGE_NAME, PERMISSION_NAME,
-                DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED);
-        assertEquals(mDevicePolicyManager.getPermissionGrantState(ADMIN_RECEIVER_COMPONENT,
-                SIMPLE_PRE_M_APP_PACKAGE_NAME, PERMISSION_NAME),
-                DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT);
-        // Install time permissions should always be granted
-        assertEquals(pm.checkPermission(PERMISSION_NAME, SIMPLE_PRE_M_APP_PACKAGE_NAME),
-                PackageManager.PERMISSION_GRANTED);
-    }
-}
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/WifiTest.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/WifiTest.java
new file mode 100644
index 0000000..c4c02e8
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/WifiTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.managedprofile;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+import android.os.SystemClock;
+import android.test.AndroidTestCase;
+
+import java.util.concurrent.TimeUnit;
+
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_CREATE_WIFI_CONFIG;
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_REMOVE_WIFI_CONFIG;
+import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_NETID;
+import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_SSID;
+
+/**
+ * Driven by the host-side test: com.android.cts.devicepolicy.ManagedProfileTest
+ *
+ * Each of these tests can run independently but have side-effects. The side-effects are used as
+ * building blocks to test various cleanup routines, for example that networks belonging to one
+ * user are deleted
+ */
+public class WifiTest extends AndroidTestCase {
+    private static final String TAG = WifiTest.class.getSimpleName();
+
+    // Unique SSID to use for this test (max SSID length is 32)
+    private static final String NETWORK_SSID = "com.android.cts.xwde7ktvh8rmjuhr";
+
+    // Time duration to allow before assuming that a WiFi operation failed and ceasing to wait.
+    private static final long UPDATE_TIMEOUT_MS = TimeUnit.SECONDS.toMillis(30);
+    private static final long UPDATE_INTERVAL_MS = TimeUnit.SECONDS.toMillis(1);
+
+    // Shared WifiManager instance.
+    private WifiManager mWifiManager;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mWifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
+    }
+
+    /**
+     * Add a network through the WifiManager API. Verifies that the network was actually added.
+     *
+     * <p>Side effects:
+     * <ul>
+     *   <li>Network with SSID {@link WifiTest#NETWORK_SSID} is created.</li>
+     * </ul>
+     */
+    public void testAddWifiNetwork() throws Exception {
+        Intent intent = new Intent(ACTION_CREATE_WIFI_CONFIG);
+        intent.putExtra(EXTRA_SSID, NETWORK_SSID);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        getContext().startActivity(intent);
+
+        // Wait for configuration to appear in networks list.
+        assertTrue(awaitNetworkState(NETWORK_SSID, /* exists */ true));
+    }
+
+    /**
+     * Remove any network through the WifiManager API with a certain SSID. Verifies that the network
+     * was actually removed.
+     *
+     * <p>Side effects:
+     * <ul>
+     *   <li>If a network with SSID {@link WifiTest#NETWORK_SSID} exists, it will be deleted.</li>
+     * </ul>
+     */
+    public void testRemoveWifiNetworkIfExists() throws Exception {
+        WifiConfiguration config = getNetworkForSsid(NETWORK_SSID);
+
+        if (config != null && config.networkId != -1) {
+            Intent intent = new Intent(ACTION_REMOVE_WIFI_CONFIG);
+            intent.putExtra(EXTRA_NETID, config.networkId);
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            getContext().startActivity(intent);
+        }
+
+        assertTrue(awaitNetworkState(NETWORK_SSID, /* exists */ false));
+    }
+
+    /**
+     * Verify that no network exists with a certain SSID.
+     *
+     * <p>The SSID that will be checked for is {@link WifiTest#NETWORK_SSID}.
+     */
+    public void testWifiNetworkDoesNotExist() throws Exception {
+        assertTrue(awaitNetworkState(NETWORK_SSID, /* exists */ false));
+    }
+
+    /**
+     * Block until a network configuration with a certain SSID either exists or ceases to.
+     * Wait for up to {@link WifiTest#UPDATE_TIMEOUT_MS} milliseconds, in increments of
+     * {@link WifiTest#UPDATE_INTERVAL_MS}.
+     */
+    private boolean awaitNetworkState(String ssid, boolean exists) {
+        for (int probes = 0; probes * UPDATE_INTERVAL_MS <= UPDATE_TIMEOUT_MS; probes++) {
+            if (probes != 0) {
+                SystemClock.sleep(UPDATE_INTERVAL_MS);
+            }
+            if ((getNetworkForSsid(ssid) != null) == exists) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Internal method to find an existing {@link WifiConfiguration} with the given SSID.
+     *
+     * @return A {@link WifiConfiguration} matching the specification, or {@code null} if no such
+     *         configuration exists.
+     */
+    private WifiConfiguration getNetworkForSsid(String ssid) {
+        if (!ssid.startsWith("\"")) {
+            ssid = '"' + ssid + '"';
+        }
+        for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) {
+            if (ssid.equals(config.SSID)) {
+                return config;
+            }
+        }
+        return null;
+    }
+}
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/WipeDataTest.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/WipeDataTest.java
index 76a9e44..9646e61 100644
--- a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/WipeDataTest.java
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/WipeDataTest.java
@@ -64,11 +64,4 @@
         // Verify the profile is deleted
         assertFalse(mUserManager.getUserProfiles().contains(currentUser));
     }
-
-    // Override this test inherited from base class, as it will trigger another round of setUp()
-    // which would fail because the managed profile has been removed by this test.
-    @Override
-    @Ignore
-    public void testAndroidTestCaseSetupProperly() {
-    }
 }
diff --git a/hostsidetests/devicepolicy/app/WifiConfigCreator/src/com/android/cts/deviceowner/wificonfigcreator/WifiConfigCreatorActivity.java b/hostsidetests/devicepolicy/app/WifiConfigCreator/src/com/android/cts/deviceowner/wificonfigcreator/WifiConfigCreatorActivity.java
index 7958cb1..af31030 100644
--- a/hostsidetests/devicepolicy/app/WifiConfigCreator/src/com/android/cts/deviceowner/wificonfigcreator/WifiConfigCreatorActivity.java
+++ b/hostsidetests/devicepolicy/app/WifiConfigCreator/src/com/android/cts/deviceowner/wificonfigcreator/WifiConfigCreatorActivity.java
@@ -22,14 +22,14 @@
 import android.util.Log;
 
 import com.android.compatibility.common.util.WifiConfigCreator;
-import static com.android.compatibility.common.util.WifiConfigCreator.CREATE_WIFI_CONFIG_ACTION;
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_CREATE_WIFI_CONFIG;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_NETID;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_PASSWORD;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_SECURITY_TYPE;
 import static com.android.compatibility.common.util.WifiConfigCreator.EXTRA_SSID;
-import static com.android.compatibility.common.util.WifiConfigCreator.REMOVE_WIFI_CONFIG_ACTION;
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_REMOVE_WIFI_CONFIG;
 import static com.android.compatibility.common.util.WifiConfigCreator.SECURITY_TYPE_NONE;
-import static com.android.compatibility.common.util.WifiConfigCreator.UPDATE_WIFI_CONFIG_ACTION;
+import static com.android.compatibility.common.util.WifiConfigCreator.ACTION_UPDATE_WIFI_CONFIG;
 
 /**
  * A simple activity to create and manage wifi configurations.
@@ -45,18 +45,18 @@
         try {
             Intent intent = getIntent();
             String action = intent.getAction();
-            if (CREATE_WIFI_CONFIG_ACTION.equals(action)) {
+            if (ACTION_CREATE_WIFI_CONFIG.equals(action)) {
                 String ssid = intent.getStringExtra(EXTRA_SSID);
                 int securityType = intent.getIntExtra(EXTRA_SECURITY_TYPE, SECURITY_TYPE_NONE);
                 String password = intent.getStringExtra(EXTRA_PASSWORD);
                 configCreator.addNetwork(ssid, false, securityType, password);
-            } else if (UPDATE_WIFI_CONFIG_ACTION.equals(action)) {
+            } else if (ACTION_UPDATE_WIFI_CONFIG.equals(action)) {
                 int netId = intent.getIntExtra(EXTRA_NETID, -1);
                 String ssid = intent.getStringExtra(EXTRA_SSID);
                 int securityType = intent.getIntExtra(EXTRA_SECURITY_TYPE, SECURITY_TYPE_NONE);
                 String password = intent.getStringExtra(EXTRA_PASSWORD);
                 configCreator.updateNetwork(netId, ssid, false, securityType, password);
-            } else if (REMOVE_WIFI_CONFIG_ACTION.equals(action)) {
+            } else if (ACTION_REMOVE_WIFI_CONFIG.equals(action)) {
                 int netId = intent.getIntExtra(EXTRA_NETID, -1);
                 if (netId != -1) {
                     configCreator.removeNetwork(netId);
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/BaseDevicePolicyTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/BaseDevicePolicyTest.java
index 5904a6f..671c3e5 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/BaseDevicePolicyTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/BaseDevicePolicyTest.java
@@ -49,13 +49,9 @@
 
     private static final String RUNNER = "android.support.test.runner.AndroidJUnitRunner";
 
-    protected static final String MANAGED_PROFILE_PKG = "com.android.cts.managedprofile";
-    protected static final String MANAGED_PROFILE_APK = "CtsManagedProfileApp.apk";
-    protected static final String ADMIN_RECEIVER_TEST_CLASS =
-            MANAGED_PROFILE_PKG + ".BaseManagedProfileTest$BasicAdminReceiver";
-
     protected CtsBuildHelper mCtsBuild;
 
+    private String mPackageVerifier;
     private HashSet<String> mAvailableFeatures;
     protected boolean mHasFeature;
 
@@ -70,6 +66,18 @@
         assertNotNull(mCtsBuild);  // ensure build has been set before test is run.
         mHasFeature = getDevice().getApiLevel() >= 21 /* Build.VERSION_CODES.L */
                 && hasDeviceFeature("android.software.device_admin");
+        // disable the package verifier to avoid the dialog when installing an app
+        mPackageVerifier = getDevice().executeShellCommand(
+                "settings get global package_verifier_enable");
+        getDevice().executeShellCommand("settings put global package_verifier_enable 0");
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // reset the package verifier setting to its original value
+        getDevice().executeShellCommand("settings put global package_verifier_enable "
+                + mPackageVerifier);
+        super.tearDown();
     }
 
     protected void installApp(String fileName)
@@ -91,7 +99,7 @@
         }
 
         final String result = device.executeShellCommand(
-                "pm install --user " + userId + " " + remotePath);
+                "pm install -r --user " + userId + " " + remotePath);
         assertTrue(result, result.contains("\nSuccess"));
     }
 
@@ -103,8 +111,6 @@
         CLog.logAndDisplay(LogLevel.INFO, "Output for command " + command + ": " + commandOutput);
         assertTrue(commandOutput + " expected to start with \"Success:\"",
                 commandOutput.startsWith("Success:"));
-        // Wait 60 seconds for intents generated to be handled.
-        Thread.sleep(60 * 1000);
     }
 
     protected int getMaxNumberOfUsersSupported() throws DeviceNotAvailableException {
@@ -144,12 +150,14 @@
     }
 
     protected void removeUser(int userId) throws Exception  {
+        String stopUserCommand = "am stop-user -w " + userId;
+        CLog.logAndDisplay(LogLevel.INFO, "starting command \"" + stopUserCommand + "\" and waiting.");
+        CLog.logAndDisplay(LogLevel.INFO, "Output for command " + stopUserCommand + ": "
+                + getDevice().executeShellCommand(stopUserCommand));
         String removeUserCommand = "pm remove-user " + userId;
         CLog.logAndDisplay(LogLevel.INFO, "starting command " + removeUserCommand);
         CLog.logAndDisplay(LogLevel.INFO, "Output for command " + removeUserCommand + ": "
                 + getDevice().executeShellCommand(removeUserCommand));
-        // Wait 60 seconds for user to finish being removed.
-        Thread.sleep(60 * 1000);
     }
 
     protected void removeTestUsers() throws Exception {
@@ -288,8 +296,6 @@
         String[] tokens = commandOutput.split("\\s+");
         assertTrue(tokens.length > 0);
         assertEquals("Success:", tokens[0]);
-        // Wait 60 seconds for intents generated to be handled.
-        Thread.sleep(60 * 1000);
         return Integer.parseInt(tokens[tokens.length-1]);
     }
 
@@ -327,13 +333,20 @@
         return -1;
     }
 
-    protected void setProfileOwner(String componentName, int userId)
+    protected boolean setProfileOwner(String componentName, int userId)
             throws DeviceNotAvailableException {
         String command = "dpm set-profile-owner --user " + userId + " '" + componentName + "'";
         String commandOutput = getDevice().executeShellCommand(command);
         CLog.logAndDisplay(LogLevel.INFO, "Output for command " + command + ": " + commandOutput);
-        assertTrue(commandOutput + " expected to start with \"Success:\"",
-                commandOutput.startsWith("Success:"));
+        return commandOutput.startsWith("Success:");
+    }
+
+    protected void setProfileOwnerOrFail(String componentName, int userId)
+            throws Exception {
+        if (!setProfileOwner(componentName, userId)) {
+            removeUser(userId);
+            fail("Failed to set profile owner");
+        }
     }
 
     protected void setDeviceAdmin(String componentName) throws DeviceNotAvailableException {
@@ -343,4 +356,11 @@
         assertTrue(commandOutput + " expected to start with \"Success:\"",
                 commandOutput.startsWith("Success:"));
     }
+
+    protected boolean setDeviceOwner(String componentName) throws DeviceNotAvailableException {
+        String command = "dpm set-device-owner '" + componentName + "'";
+        String commandOutput = getDevice().executeShellCommand(command);
+        CLog.logAndDisplay(LogLevel.INFO, "Output for command " + command + ": " + commandOutput);
+        return commandOutput.startsWith("Success:");
+    }
 }
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/CustomDeviceOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/CustomDeviceOwnerTest.java
new file mode 100644
index 0000000..7618e25c
--- /dev/null
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/CustomDeviceOwnerTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.devicepolicy;
+
+import com.android.ddmlib.Log.LogLevel;
+import com.android.tradefed.log.LogUtil.CLog;
+
+import java.lang.Exception;
+
+/**
+ * This class is used for tests that need to do something special before setting the device
+ * owner, so they cannot use the regular DeviceOwnerTest class
+ */
+public class CustomDeviceOwnerTest extends BaseDevicePolicyTest {
+
+    private static final String DEVICE_OWNER_PKG = "com.android.cts.deviceowner";
+    private static final String DEVICE_OWNER_APK = "CtsDeviceOwnerApp.apk";
+    private static final String INTENT_RECEIVER_PKG = "com.android.cts.intent.receiver";
+    private static final String INTENT_RECEIVER_APK = "CtsIntentReceiverApp.apk";
+
+    private static final String CLEAR_DEVICE_OWNER_TEST_CLASS =
+            DEVICE_OWNER_PKG + ".ClearDeviceOwnerTest";
+
+    private static final String ADMIN_RECEIVER_TEST_CLASS =
+            DEVICE_OWNER_PKG + ".BaseDeviceOwnerTest$BasicAdminReceiver";
+    private static final String ADMIN_RECEIVER_COMPONENT =
+            DEVICE_OWNER_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS;
+
+    public void setUp() throws Exception {
+        super.setUp();
+
+        if (mHasFeature) {
+            installApp(DEVICE_OWNER_APK);
+        }
+    }
+
+    public void tearDown() throws Exception {
+        if (mHasFeature) {
+            getDevice().uninstallPackage(DEVICE_OWNER_PKG);
+        }
+
+        super.tearDown();
+    }
+
+    public void testOwnerChangedBroadcast() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        try {
+            installApp(INTENT_RECEIVER_APK);
+
+            String testClass = INTENT_RECEIVER_PKG + ".OwnerChangedBroadcastTest";
+
+            // Running this test also gets the intent receiver app out of the stopped state, so it
+            // can receive broadcast intents.
+            assertTrue(runDeviceTests(INTENT_RECEIVER_PKG, testClass,
+                    "testOwnerChangedBroadcastNotReceived", 0));
+
+            // Setting the device owner should send the owner changed broadcast.
+            assertTrue(setDeviceOwner(ADMIN_RECEIVER_COMPONENT));
+
+            assertTrue(runDeviceTests(INTENT_RECEIVER_PKG, testClass,
+                    "testOwnerChangedBroadcastReceived", 0));
+        } finally {
+            getDevice().uninstallPackage(INTENT_RECEIVER_PKG);
+            assertTrue("Failed to remove device owner.",
+                    runDeviceTests(DEVICE_OWNER_PKG, CLEAR_DEVICE_OWNER_TEST_CLASS));
+        }
+    }
+
+    public void testCannotSetDeviceOwnerWhenSecondaryUserPresent() throws Exception {
+        if (!mHasFeature || getMaxNumberOfUsersSupported() < 2) {
+            return;
+        }
+        int userId = -1;
+        try {
+            userId = createUser();
+            assertFalse(setDeviceOwner(ADMIN_RECEIVER_COMPONENT));
+        } finally {
+            removeUser(userId);
+        }
+    }
+}
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
new file mode 100644
index 0000000..36dab2c
--- /dev/null
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.devicepolicy;
+
+/**
+ * Set of tests for usecases that apply to profile and device owner.
+ * This class is the base class of MixedProfileOwnerTest and MixedDeviceOwnerTest and is abstract
+ * to avoid running spurious tests.
+ */
+public abstract class DeviceAndProfileOwnerTest extends BaseDevicePolicyTest {
+
+    protected static final String DEVICE_ADMIN_PKG = "com.android.cts.deviceandprofileowner";
+    protected static final String DEVICE_ADMIN_APK = "CtsDeviceAndProfileOwnerApp.apk";
+    protected static final String ADMIN_RECEIVER_TEST_CLASS
+            = ".BaseDeviceAdminTest$BasicAdminReceiver";
+
+    private static final String PERMISSIONS_APP_PKG = "com.android.cts.permissionapp";
+    private static final String PERMISSIONS_APP_APK = "CtsPermissionApp.apk";
+
+    private static final String SIMPLE_PRE_M_APP_PKG = "com.android.cts.launcherapps.simplepremapp";
+    private static final String SIMPLE_PRE_M_APP_APK = "CtsSimplePreMApp.apk";
+
+    protected static final int USER_OWNER = 0;
+
+    // ID of the user all tests are run as. For device owner this will be 0, for profile owner it
+    // is the user id of the created profile.
+    protected int mUserId;
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (mHasFeature) {
+            getDevice().uninstallPackage(DEVICE_ADMIN_PKG);
+            getDevice().uninstallPackage(PERMISSIONS_APP_PKG);
+            getDevice().uninstallPackage(SIMPLE_PRE_M_APP_PKG);
+        }
+        super.tearDown();
+    }
+
+    public void testApplicationRestrictions() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        executeDeviceTestClass(".ApplicationRestrictionsTest");
+    }
+
+    public void testPermissionGrant() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionGrantState");
+    }
+
+    public void testPermissionPolicy() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionPolicy");
+    }
+
+    public void testPermissionMixedPolicies() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionMixedPolicies");
+    }
+
+    public void testPermissionPrompts() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionPrompts");
+    }
+
+    public void testPermissionAppUpdate() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_setDeniedState");
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkDenied");
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkDenied");
+
+        assertNull(getDevice().uninstallPackage(PERMISSIONS_APP_PKG));
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_setGrantedState");
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkGranted");
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkGranted");
+
+        assertNull(getDevice().uninstallPackage(PERMISSIONS_APP_PKG));
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_setAutoDeniedPolicy");
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkDenied");
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkDenied");
+
+        assertNull(getDevice().uninstallPackage(PERMISSIONS_APP_PKG));
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_setAutoGrantedPolicy");
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkGranted");
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionUpdate_checkGranted");
+    }
+
+    public void testPermissionGrantPreMApp() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        installAppAsUser(SIMPLE_PRE_M_APP_APK, mUserId);
+        executeDeviceTestMethod(".PermissionsTest", "testPermissionGrantStatePreMApp");
+    }
+
+    public void testPersistentIntentResolving() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        executeDeviceTestClass(".PersistentIntentResolvingTest");
+    }
+
+    public void testScreenCaptureDisabled() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        // We need to ensure that the policy is deactivated for the device owner case, so making
+        // sure the second test is run even if the first one fails
+        try {
+            executeDeviceTestMethod(".ScreenCaptureDisabledTest",
+                    "testSetScreenCaptureDisabled_true");
+        } finally {
+            executeDeviceTestMethod(".ScreenCaptureDisabledTest",
+                    "testSetScreenCaptureDisabled_false");
+        }
+    }
+
+    public void testApplicationHidden() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        installAppAsUser(PERMISSIONS_APP_APK, mUserId);
+        executeDeviceTestClass(".ApplicationHiddenTest");
+    }
+
+    // TODO: Remove AccountManagementTest from XTS after GTS is released for MNC.
+    public void testAccountManagement() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+
+        executeDeviceTestClass(".AccountManagementTest");
+    }
+
+    protected void executeDeviceTestClass(String className) throws Exception {
+        assertTrue(runDeviceTestsAsUser(DEVICE_ADMIN_PKG, className, mUserId));
+    }
+
+    protected void executeDeviceTestMethod(String className, String testName) throws Exception {
+        assertTrue(runDeviceTestsAsUser(DEVICE_ADMIN_PKG, className, testName, mUserId));
+    }
+}
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java
index 66a123a1..4f267d1 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceOwnerTest.java
@@ -30,6 +30,11 @@
     private static final String DEVICE_OWNER_PKG = "com.android.cts.deviceowner";
     private static final String DEVICE_OWNER_APK = "CtsDeviceOwnerApp.apk";
 
+    private static final String MANAGED_PROFILE_PKG = "com.android.cts.managedprofile";
+    private static final String MANAGED_PROFILE_APK = "CtsManagedProfileApp.apk";
+    private static final String MANAGED_PROFILE_ADMIN =
+            MANAGED_PROFILE_PKG + ".BaseManagedProfileTest$BasicAdminReceiver";
+
     private static final String TEST_APP_APK = "CtsSimpleApp.apk";
     private static final String TEST_APP_PKG = "com.android.cts.launcherapps.simpleapp";
     private static final String TEST_APP_LOCATION = "/data/local/tmp/";
@@ -51,7 +56,8 @@
         super.setUp();
         if (mHasFeature) {
             installApp(DEVICE_OWNER_APK);
-            setDeviceOwner(DEVICE_OWNER_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS);
+            assertTrue("Failed to set device owner",
+                    setDeviceOwner(DEVICE_OWNER_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS));
         }
     }
 
@@ -66,10 +72,6 @@
         super.tearDown();
     }
 
-    public void testApplicationRestrictions() throws Exception {
-        executeDeviceOwnerTest("ApplicationRestrictionsTest");
-    }
-
     public void testCaCertManagement() throws Exception {
         executeDeviceOwnerTest("CaCertManagementTest");
     }
@@ -91,14 +93,6 @@
         }
     }
 
-    public void testPersistentIntentResolving() throws Exception {
-        executeDeviceOwnerTest("PersistentIntentResolvingTest");
-    }
-
-    public void testScreenCaptureDisabled() throws Exception {
-        executeDeviceOwnerTest("ScreenCaptureDisabledTest");
-    }
-
     public void testPackageInstall() throws Exception {
         final File apk = mCtsBuild.getTestApp(TEST_APP_APK);
         try {
@@ -128,6 +122,22 @@
         }
     }
 
+    public void testCannotSetDeviceOwnerAgain() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        // verify that we can't set the same admin receiver as device owner again
+        assertFalse(setDeviceOwner(DEVICE_OWNER_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS));
+
+        // verify that we can't set a different admin receiver as device owner
+        try {
+            installApp(MANAGED_PROFILE_APK);
+            assertFalse(setDeviceOwner(MANAGED_PROFILE_PKG + "/" + MANAGED_PROFILE_ADMIN));
+        } finally {
+            getDevice().uninstallPackage(MANAGED_PROFILE_PKG);
+        }
+    }
+
     private void executeDeviceOwnerTest(String testClassName) throws Exception {
         if (!mHasFeature) {
             return;
@@ -135,13 +145,4 @@
         String testClass = DEVICE_OWNER_PKG + "." + testClassName;
         assertTrue(testClass + " failed.", runDeviceTests(DEVICE_OWNER_PKG, testClass));
     }
-
-    private void setDeviceOwner(String componentName) throws DeviceNotAvailableException {
-        String command = "dpm set-device-owner '" + componentName + "'";
-        String commandOutput = getDevice().executeShellCommand(command);
-        CLog.logAndDisplay(LogLevel.INFO, "Output for command " + command + ": " + commandOutput);
-        assertTrue(commandOutput + " expected to start with \"Success:\"",
-                commandOutput.startsWith("Success:"));
-    }
-
 }
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java
index 43f1f5a..bb26df1 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/LauncherAppsProfileTest.java
@@ -25,6 +25,11 @@
  */
 public class LauncherAppsProfileTest extends BaseLauncherAppsTest {
 
+    private static final String MANAGED_PROFILE_PKG = "com.android.cts.managedprofile";
+    private static final String MANAGED_PROFILE_APK = "CtsManagedProfileApp.apk";
+    private static final String ADMIN_RECEIVER_TEST_CLASS =
+            MANAGED_PROFILE_PKG + ".BaseManagedProfileTest$BasicAdminReceiver";
+
     private int mProfileUserId;
     private int mProfileSerialNumber;
     private int mMainUserSerialNumber;
@@ -39,7 +44,8 @@
             // Create a managed profile
             mProfileUserId = createManagedProfile();
             installApp(MANAGED_PROFILE_APK);
-            setProfileOwner(MANAGED_PROFILE_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS, mProfileUserId);
+            setProfileOwnerOrFail(MANAGED_PROFILE_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS,
+                    mProfileUserId);
             mProfileSerialNumber = getUserSerialNumber(mProfileUserId);
             mMainUserSerialNumber = getUserSerialNumber(0);
             startUser(mProfileUserId);
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/ManagedProfileTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/ManagedProfileTest.java
index 3f0805c..54b535a 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/ManagedProfileTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/ManagedProfileTest.java
@@ -30,8 +30,10 @@
     private static final String MANAGED_PROFILE_PKG = "com.android.cts.managedprofile";
     private static final String MANAGED_PROFILE_APK = "CtsManagedProfileApp.apk";
 
-    private static final String SIMPLE_APP_APK = "CtsSimpleApp.apk";
-    private static final String SIMPLE_PRE_M_APP_APK = "CtsSimplePreMApp.apk";
+    private static final String DEVICE_OWNER_PKG = "com.android.cts.deviceowner";
+    private static final String DEVICE_OWNER_APK = "CtsDeviceOwnerApp.apk";
+    private static final String DEVICE_OWNER_ADMIN =
+            DEVICE_OWNER_PKG + ".BaseDeviceOwnerTest$BasicAdminReceiver";
 
     private static final String INTENT_SENDER_PKG = "com.android.cts.intent.sender";
     private static final String INTENT_SENDER_APK = "CtsIntentSenderApp.apk";
@@ -42,12 +44,25 @@
     private static final String CERT_INSTALLER_PKG = "com.android.cts.certinstaller";
     private static final String CERT_INSTALLER_APK = "CtsCertInstallerApp.apk";
 
+    private static final String WIFI_CONFIG_CREATOR_PKG = "com.android.cts.wificonfigcreator";
+    private static final String WIFI_CONFIG_CREATOR_APK = "CtsWifiConfigCreator.apk";
+
     private static final String ADMIN_RECEIVER_TEST_CLASS =
             MANAGED_PROFILE_PKG + ".BaseManagedProfileTest$BasicAdminReceiver";
 
     private static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
     private static final String FEATURE_CAMERA = "android.hardware.camera";
+    private static final String FEATURE_WIFI = "android.hardware.wifi";
+
+    private static final String ADD_RESTRICTION_COMMAND = "add-restriction";
+
+    private static final int USER_OWNER = 0;
+
+    // ID of the profile we'll create. This will always be a profile of USER_OWNER.
     private int mUserId;
+    private String mPackageVerifier;
+
+    private boolean mHasNfcFeature;
 
     @Override
     protected void setUp() throws Exception {
@@ -56,12 +71,14 @@
         // We need multi user to be supported in order to create a profile of the user owner.
         mHasFeature = mHasFeature && hasDeviceFeature(
                 "android.software.managed_users");
+        mHasNfcFeature = hasDeviceFeature("android.hardware.nfc");
 
         if (mHasFeature) {
             removeTestUsers();
             mUserId = createManagedProfile();
+
             installApp(MANAGED_PROFILE_APK);
-            setProfileOwner(MANAGED_PROFILE_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS, mUserId);
+            setProfileOwnerOrFail(MANAGED_PROFILE_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS, mUserId);
             startUser(mUserId);
         }
     }
@@ -114,6 +131,29 @@
         }
     }
 
+    /**
+     * Verify that removing a managed profile will remove all networks owned by that profile.
+     */
+    public void testProfileWifiCleanup() throws Exception {
+        if (!mHasFeature || !hasDeviceFeature(FEATURE_WIFI)) {
+            return;
+        }
+        assertTrue("WiFi config already exists and could not be removed", runDeviceTestsAsUser(
+                MANAGED_PROFILE_PKG, ".WifiTest", "testRemoveWifiNetworkIfExists", USER_OWNER));
+        try {
+            installApp(WIFI_CONFIG_CREATOR_APK);
+            assertTrue("Failed to add WiFi config", runDeviceTestsAsUser(
+                    MANAGED_PROFILE_PKG, ".WifiTest", "testAddWifiNetwork", mUserId));
+
+            // Now delete the user - should undo the effect of testAddWifiNetwork.
+            removeUser(mUserId);
+            assertTrue("WiFi config not removed after deleting profile", runDeviceTestsAsUser(
+                    MANAGED_PROFILE_PKG, ".WifiTest", "testWifiNetworkDoesNotExist", USER_OWNER));
+        } finally {
+            getDevice().uninstallPackage(WIFI_CONFIG_CREATOR_APK);
+        }
+    }
+
     public void testCrossProfileIntentFilters() throws Exception {
         if (!mHasFeature) {
             return;
@@ -135,6 +175,49 @@
         // TODO: Test with startActivity
     }
 
+    public void testAppLinks() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        // Disable all pre-existing browsers in the managed profile so they don't interfere with
+        // intents resolution.
+        assertTrue(runDeviceTestsAsUser(MANAGED_PROFILE_PKG, ".CrossProfileUtils",
+                "testDisableAllBrowsers", mUserId));
+        installApp(INTENT_RECEIVER_APK);
+        installApp(INTENT_SENDER_APK);
+
+        changeVerificationStatus(USER_OWNER, INTENT_RECEIVER_PKG, "ask");
+        changeVerificationStatus(mUserId, INTENT_RECEIVER_PKG, "ask");
+        // We should have two receivers: IntentReceiverActivity and BrowserActivity in the
+        // managed profile
+        assertAppLinkResult("testTwoReceivers");
+
+        changeUserRestrictionForUser("allow_parent_profile_app_linking", ADD_RESTRICTION_COMMAND,
+                mUserId);
+        // Now we should also have one receiver in the primary user, so three receivers in total.
+        assertAppLinkResult("testThreeReceivers");
+
+        changeVerificationStatus(USER_OWNER, INTENT_RECEIVER_PKG, "never");
+        // The primary user one has been set to never: we should only have the managed profile ones.
+        assertAppLinkResult("testTwoReceivers");
+
+        changeVerificationStatus(mUserId, INTENT_RECEIVER_PKG, "never");
+        // Now there's only the browser in the managed profile left
+        assertAppLinkResult("testReceivedByBrowserActivityInManaged");
+
+        changeVerificationStatus(USER_OWNER, INTENT_RECEIVER_PKG, "always");
+        changeVerificationStatus(mUserId, INTENT_RECEIVER_PKG, "ask");
+        // We've set the receiver in the primary user to always: only this one should receive the
+        // intent.
+        assertAppLinkResult("testReceivedByAppLinkActivityInPrimary");
+
+        changeVerificationStatus(mUserId, INTENT_RECEIVER_PKG, "always");
+        // We have one always in the primary user and one always in the managed profile: the managed
+        // profile one should have precedence.
+        assertAppLinkResult("testReceivedByAppLinkActivityInManaged");
+    }
+
+
     public void testSettingsIntents() throws Exception {
         if (!mHasFeature) {
             return;
@@ -225,17 +308,16 @@
             return;
         }
         String restriction = "no_debugging_features";  // UserManager.DISALLOW_DEBUGGING_FEATURES
-        String command = "add-restriction";
 
         String addRestrictionCommandOutput =
-                changeUserRestrictionForUser(restriction, command, mUserId);
+                changeUserRestrictionForUser(restriction, ADD_RESTRICTION_COMMAND, mUserId);
         assertTrue("Command was expected to succeed " + addRestrictionCommandOutput,
                 addRestrictionCommandOutput.contains("Status: ok"));
 
         // This should now fail, as the shell is not available to start activities under a different
         // user once the restriction is in place.
         addRestrictionCommandOutput =
-                changeUserRestrictionForUser(restriction, command, mUserId);
+                changeUserRestrictionForUser(restriction, ADD_RESTRICTION_COMMAND, mUserId);
         assertTrue(
                 "Expected SecurityException when starting the activity "
                         + addRestrictionCommandOutput,
@@ -461,22 +543,51 @@
         }
     }
 
-    public void testPermissionGrant() throws Exception {
+    public void testCannotSetProfileOwnerAgain() throws Exception {
         if (!mHasFeature) {
             return;
         }
-        installAppAsUser(SIMPLE_APP_APK, mUserId);
-        assertTrue(runDeviceTestsAsUser(MANAGED_PROFILE_PKG, ".PermissionsTest",
-                "testPermissionGrantState", mUserId));
+        // verify that we can't set the same admin receiver as profile owner again
+        assertFalse(setProfileOwner(
+                MANAGED_PROFILE_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS, mUserId));
+
+        // verify that we can't set a different admin receiver as profile owner
+        try {
+            installApp(DEVICE_OWNER_APK);
+            assertFalse(setDeviceOwner(DEVICE_OWNER_PKG + "/" + DEVICE_OWNER_ADMIN));
+        } finally {
+            getDevice().uninstallPackage(DEVICE_OWNER_PKG);
+        }
     }
 
-    public void testPermissionGrantPreMApp() throws Exception {
-        if (!mHasFeature) {
+    public void testCannotSetDeviceOwnerWhenProfilePresent() throws Exception {
+        if (mHasFeature) {
+            assertFalse(setDeviceOwner(MANAGED_PROFILE_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS));
+        }
+    }
+
+    public void testNfcRestriction() throws Exception {
+        if (!mHasFeature || !mHasNfcFeature) {
             return;
         }
-        installAppAsUser(SIMPLE_PRE_M_APP_APK, mUserId);
-        assertTrue(runDeviceTestsAsUser(MANAGED_PROFILE_PKG, ".PermissionsTest",
-                "testPermissionGrantStatePreMApp", mUserId));
+
+        assertTrue(runDeviceTestsAsUser(MANAGED_PROFILE_PKG, ".NfcTest",
+                "testNfcShareEnabled", mUserId));
+        assertTrue(runDeviceTestsAsUser(MANAGED_PROFILE_PKG, ".NfcTest",
+                "testNfcShareEnabled", 0));
+
+        String restriction = "no_outgoing_beam";  // UserManager.DISALLOW_OUTGOING_BEAM
+        String command = "add-restriction";
+
+        String addRestrictionCommandOutput =
+                changeUserRestrictionForUser(restriction, command, mUserId);
+        assertTrue("Command was expected to succeed " + addRestrictionCommandOutput,
+                addRestrictionCommandOutput.contains("Status: ok"));
+
+        assertTrue(runDeviceTestsAsUser(MANAGED_PROFILE_PKG, ".NfcTest",
+                "testNfcShareDisabled", mUserId));
+        assertTrue(runDeviceTestsAsUser(MANAGED_PROFILE_PKG, ".NfcTest",
+                "testNfcShareEnabled", 0));
     }
 
     private void disableActivityForUser(String activityName, int userId)
@@ -501,4 +612,16 @@
                 "Output for command " + adbCommand + ": " + commandOutput);
         return commandOutput;
     }
+
+    // status should be one of never, undefined, ask, always
+    private void changeVerificationStatus(int userId, String packageName, String status)
+            throws DeviceNotAvailableException {
+        String command = "pm set-app-link --user " + userId + " " + packageName + " " + status;
+        CLog.logAndDisplay(LogLevel.INFO, "Output for command " + command + ": "
+                + getDevice().executeShellCommand(command));
+    }
+
+    private void assertAppLinkResult(String methodName) throws DeviceNotAvailableException {
+        assertTrue(runDeviceTestsAsUser(INTENT_SENDER_PKG, ".AppLinkTest", methodName, mUserId));
+    }
 }
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedDeviceOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedDeviceOwnerTest.java
new file mode 100644
index 0000000..b996de3
--- /dev/null
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedDeviceOwnerTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.devicepolicy;
+
+import com.android.ddmlib.Log.LogLevel;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.log.LogUtil.CLog;
+
+import junit.framework.AssertionFailedError;
+
+/**
+ * Set of tests for device owner use cases that also apply to profile owners.
+ * Tests that should be run identically in both cases are added in DeviceAndProfileOwnerTest.
+ */
+public class MixedDeviceOwnerTest extends DeviceAndProfileOwnerTest {
+
+    private static final String CLEAR_DEVICE_OWNER_TEST_CLASS =
+            DEVICE_ADMIN_PKG + ".ClearDeviceOwnerTest";
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        if (mHasFeature) {
+            mUserId = USER_OWNER;
+
+            installApp(DEVICE_ADMIN_APK);
+            assertTrue("Failed to set device owner",
+                    setDeviceOwner(DEVICE_ADMIN_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS));
+        }
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (mHasFeature) {
+            assertTrue("Failed to remove device owner.",
+                    runDeviceTests(DEVICE_ADMIN_PKG, CLEAR_DEVICE_OWNER_TEST_CLASS));
+        }
+        super.tearDown();
+    }
+
+    // All tests for this class are defined in DeviceAndProfileOwnerTest
+}
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedProfileOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedProfileOwnerTest.java
new file mode 100644
index 0000000..bcc5bf9
--- /dev/null
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/MixedProfileOwnerTest.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.devicepolicy;
+
+import com.android.ddmlib.Log.LogLevel;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.log.LogUtil.CLog;
+
+import junit.framework.AssertionFailedError;
+
+/**
+ * Set of tests for profile owner use cases that also apply to device owners.
+ * Tests that should be run identically in both cases are added in DeviceAndProfileOwnerTest.
+ */
+public class MixedProfileOwnerTest extends DeviceAndProfileOwnerTest {
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // We need managed users to be supported in order to create a profile of the user owner.
+        mHasFeature &= hasDeviceFeature("android.software.managed_users");
+
+        if (mHasFeature) {
+            removeTestUsers();
+            mUserId = createManagedProfile();
+
+            installAppAsUser(DEVICE_ADMIN_APK, mUserId);
+            setProfileOwnerOrFail(DEVICE_ADMIN_PKG + "/" + ADMIN_RECEIVER_TEST_CLASS, mUserId);
+            startUser(mUserId);
+        }
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (mHasFeature) {
+            removeUser(mUserId);
+        }
+        super.tearDown();
+    }
+
+    // Most tests for this class are defined in DeviceAndProfileOwnerTest
+
+    /**
+     * Verify that screenshots are still possible for activities in the primary user when the policy
+     * is set on the profile owner.
+     */
+    public void testScreenCaptureDisabled_allowedPrimaryUser() throws Exception {
+        if (!mHasFeature) {
+            return;
+        }
+        executeDeviceTestMethod(".ScreenCaptureDisabledTest", "testSetScreenCaptureDisabled_true");
+        // start the ScreenCaptureDisabledActivity in the primary user
+        installAppAsUser(DEVICE_ADMIN_APK, USER_OWNER);
+        String command = "am start -W --user 0 " + DEVICE_ADMIN_PKG + "/"
+                + DEVICE_ADMIN_PKG + ".ScreenCaptureDisabledActivity";
+        getDevice().executeShellCommand(command);
+        executeDeviceTestMethod(".ScreenCaptureDisabledTest", "testScreenCapturePossible");
+    }
+}
diff --git a/hostsidetests/dumpsys/src/android/dumpsys/cts/DumpsysHostTest.java b/hostsidetests/dumpsys/src/android/dumpsys/cts/DumpsysHostTest.java
index cb50f16..0589792 100644
--- a/hostsidetests/dumpsys/src/android/dumpsys/cts/DumpsysHostTest.java
+++ b/hostsidetests/dumpsys/src/android/dumpsys/cts/DumpsysHostTest.java
@@ -576,10 +576,10 @@
     }
 
     private void checkKernelWakelock(String[] parts) {
-        assertEquals(7, parts.length);
-        assertNotNull(parts[4]); // kernel wakelock
-        assertInteger(parts[5]); // totalTime
-        assertInteger(parts[6]); // count
+        assertTrue(parts.length >= 7);
+	assertNotNull(parts[4]); // Kernel wakelock
+	assertInteger(parts[parts.length-2]); // totalTime
+        assertInteger(parts[parts.length-1]); // count
     }
 
     private void checkWakeupReason(String[] parts) {
@@ -648,23 +648,22 @@
     }
 
     private void checkMisc(String[] parts) {
-        assertTrue(parts.length >= 20);
+        assertTrue(parts.length >= 19);
         assertInteger(parts[4]);      // screenOnTime
         assertInteger(parts[5]);      // phoneOnTime
-        assertInteger(parts[6]);      // wifiOnTime
-        assertInteger(parts[7]);      // wifiRunningTime
-        assertInteger(parts[8]);      // bluetoothOnTime
-        assertInteger(parts[9]);      // mobileRxTotalBytes
-        assertInteger(parts[10]);     // mobileTxTotalBytes
-        assertInteger(parts[11]);     // wifiRxTotalBytes
-        assertInteger(parts[12]);     // wifiTxTotalBytes
-        assertInteger(parts[13]);     // fullWakeLockTimeTotal
-        assertInteger(parts[14]);     // partialWakeLockTimeTotal
-        assertEquals("0", parts[15]); // legacy input event count
-        assertInteger(parts[16]);     // mobileRadioActiveTime
-        assertInteger(parts[17]);     // mobileRadioActiveAdjustedTime
-        assertInteger(parts[18]);     // interactiveTime
-        assertInteger(parts[19]);     // lowPowerModeEnabledTime
+        assertInteger(parts[6]);      // fullWakeLockTimeTotal
+        assertInteger(parts[7]);      // partialWakeLockTimeTotal
+        assertInteger(parts[8]);      // mobileRadioActiveTime
+        assertInteger(parts[9]);      // mobileRadioActiveAdjustedTime
+        assertInteger(parts[10]);     // interactiveTime
+        assertInteger(parts[11]);     // lowPowerModeEnabledTime
+        assertInteger(parts[12]);     // connChanges
+        assertInteger(parts[13]);     // deviceIdleModeEnabledTime
+        assertInteger(parts[14]);     // deviceIdleModeEnabledCount
+        assertInteger(parts[15]);     // deviceIdlingTime
+        assertInteger(parts[16]);     // deviceIdlingCount
+        assertInteger(parts[17]);     // mobileRadioActiveCount
+        assertInteger(parts[18]);     // mobileRadioActiveUnknownTime
     }
 
     private void checkGlobalNetwork(String[] parts) {
@@ -689,7 +688,7 @@
     }
 
     private void checkSignalStrength(String[] parts) {
-        assertEquals(9, parts.length);
+        assertTrue(parts.length >= 9);
         assertInteger(parts[4]); // none
         assertInteger(parts[5]); // poor
         assertInteger(parts[6]); // moderate
@@ -784,13 +783,14 @@
     }
 
     private void checkChargeDischargeStep(String[] parts) {
-        assertEquals(8, parts.length);
+        assertEquals(9, parts.length);
         assertInteger(parts[4]); // duration
         if (!parts[5].equals("?")) {
             assertInteger(parts[5]); // level
         }
         assertNotNull(parts[6]); // screen
         assertNotNull(parts[7]); // power-save
+        assertNotNull(parts[8]); // device-idle
     }
 
     private void checkDischargeTimeRemain(String[] parts) {
diff --git a/hostsidetests/monkey/src/com/android/cts/monkey/SeedTest.java b/hostsidetests/monkey/src/com/android/cts/monkey/SeedTest.java
index d070972..a0016e2 100644
--- a/hostsidetests/monkey/src/com/android/cts/monkey/SeedTest.java
+++ b/hostsidetests/monkey/src/com/android/cts/monkey/SeedTest.java
@@ -16,8 +16,6 @@
 
 package com.android.cts.monkey;
 
-import com.android.tradefed.log.LogUtil.CLog;
-
 import java.util.Scanner;
 
 public class SeedTest extends AbstractMonkeyTest {
@@ -26,15 +24,11 @@
         String cmd1 = MONKEY_CMD + " -s 1337 -v -p " + PKGS[0] + " 500";
         String out1 = mDevice.executeShellCommand(cmd1);
         String out2 = mDevice.executeShellCommand(cmd1);
-        CLog.d("monkey output1: %s", out1);
-        CLog.d("monkey output2: %s", out2);
         assertOutputs(out1, out2);
 
         String cmd2 = MONKEY_CMD + " -s 3007 -v -p " + PKGS[0] + " 125";
         String out3 = mDevice.executeShellCommand(cmd2);
         String out4 = mDevice.executeShellCommand(cmd2);
-        CLog.d("monkey output3: %s", out3);
-        CLog.d("monkey output4: %s", out4);
         assertOutputs(out3, out4);
     }
 
diff --git a/hostsidetests/monkey/test-apps/CtsMonkeyApp/AndroidManifest.xml b/hostsidetests/monkey/test-apps/CtsMonkeyApp/AndroidManifest.xml
index a3dfc83..efb1288 100644
--- a/hostsidetests/monkey/test-apps/CtsMonkeyApp/AndroidManifest.xml
+++ b/hostsidetests/monkey/test-apps/CtsMonkeyApp/AndroidManifest.xml
@@ -18,14 +18,18 @@
 
     <application android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
 
-        <activity android:name=".MonkeyActivity">
+        <activity
+            android:name=".MonkeyActivity"
+            android:screenOrientation="locked">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        
-        <activity android:name=".BaboonActivity">
+
+        <activity
+            android:name=".BaboonActivity"
+            android:screenOrientation="locked">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.MONKEY" />
diff --git a/hostsidetests/usage/Android.mk b/hostsidetests/usage/Android.mk
new file mode 100644
index 0000000..917528b
--- /dev/null
+++ b/hostsidetests/usage/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 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.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE_TAGS := optional
+
+# Must match the package name in CtsTestCaseList.mk
+LOCAL_MODULE := CtsUsageHostTestCases
+
+LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed-prebuilt
+
+LOCAL_CTS_TEST_PACKAGE := android.host.app.usage
+
+include $(BUILD_CTS_HOST_JAVA_LIBRARY)
+
+include $(call all-subdir-makefiles)
diff --git a/hostsidetests/usage/app/Android.mk b/hostsidetests/usage/app/Android.mk
new file mode 100644
index 0000000..b23efbc
--- /dev/null
+++ b/hostsidetests/usage/app/Android.mk
@@ -0,0 +1,28 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# Don't include this package in any target.
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_PACKAGE_NAME := CtsDeviceAppUsageTestApp
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/usage/app/AndroidManifest.xml b/hostsidetests/usage/app/AndroidManifest.xml
new file mode 100755
index 0000000..bad453f
--- /dev/null
+++ b/hostsidetests/usage/app/AndroidManifest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.app.usage.test">
+
+    <application>
+        <activity android:name=".TestActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
+
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java b/hostsidetests/usage/app/src/com/android/cts/app/usage/test/TestActivity.java
similarity index 67%
rename from tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java
rename to hostsidetests/usage/app/src/com/android/cts/app/usage/test/TestActivity.java
index accdcaf..9432477 100644
--- a/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java
+++ b/hostsidetests/usage/app/src/com/android/cts/app/usage/test/TestActivity.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 The Android Open Source Project
+ * Copyright (C) 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.
@@ -14,12 +14,9 @@
  * limitations under the License.
  */
 
-package android.hardware.input.cts;
+package com.android.cts.app.usage.test;
 
-import android.view.KeyEvent;
-import android.view.MotionEvent;
+import android.app.Activity;
 
-public interface InputCallback {
-    public void onKeyEvent(KeyEvent ev);
-    public void onMotionEvent(MotionEvent ev);
-}
+public class TestActivity extends Activity {
+}
\ No newline at end of file
diff --git a/hostsidetests/usage/src/com/android/cts/app/usage/AppIdleHostTest.java b/hostsidetests/usage/src/com/android/cts/app/usage/AppIdleHostTest.java
new file mode 100644
index 0000000..f24be0e
--- /dev/null
+++ b/hostsidetests/usage/src/com/android/cts/app/usage/AppIdleHostTest.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.cts.app.usage;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+
+public class AppIdleHostTest extends DeviceTestCase implements IBuildReceiver {
+    private static final String SETTINGS_APP_IDLE_CONSTANTS = "app_idle_constants";
+
+    private static final String TEST_APP_PACKAGE = "com.android.cts.app.usage.test";
+    private static final String TEST_APP_APK = "CtsDeviceAppUsageTestApp.apk";
+    private static final String TEST_APP_CLASS = "TestActivity";
+
+    private static final long ACTIVITY_LAUNCH_WAIT_MILLIS = 500;
+
+    /**
+     * A reference to the build.
+     */
+    private CtsBuildHelper mBuild;
+
+    /**
+     * A reference to the device under test.
+     */
+    private ITestDevice mDevice;
+
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        // Get the build, this is used to access the APK.
+        mBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Get the device, this gives a handle to run commands and install APKs.
+        mDevice = getDevice();
+
+        // Remove any previously installed versions of this APK.
+        mDevice.uninstallPackage(TEST_APP_PACKAGE);
+
+        // Install the APK on the device.
+        mDevice.installPackage(mBuild.getTestApp(TEST_APP_APK), false);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        // Remove the package once complete.
+        mDevice.uninstallPackage(TEST_APP_PACKAGE);
+        super.tearDown();
+    }
+
+    /**
+     * Checks whether an package is idle.
+     * @param appPackage The package to check for idleness.
+     * @return true if the package is idle
+     * @throws DeviceNotAvailableException
+     */
+    private boolean isAppIdle(String appPackage) throws DeviceNotAvailableException {
+        String result = mDevice.executeShellCommand(String.format("am get-inactive %s", appPackage));
+        return result.contains("Idle=true");
+    }
+
+    /**
+     * Set the app idle settings.
+     * @param settingsStr The settings string, a comma separated key=value list.
+     * @throws DeviceNotAvailableException
+     */
+    private void setAppIdleSettings(String settingsStr) throws DeviceNotAvailableException {
+        mDevice.executeShellCommand(String.format("settings put global %s \"%s\"",
+                SETTINGS_APP_IDLE_CONSTANTS, settingsStr));
+    }
+
+    /**
+     * Get the current app idle settings.
+     * @throws DeviceNotAvailableException
+     */
+    private String getAppIdleSettings() throws DeviceNotAvailableException {
+        String result = mDevice.executeShellCommand(String.format("settings get global %s",
+                SETTINGS_APP_IDLE_CONSTANTS));
+        return result.trim();
+    }
+
+    /**
+     * Launch the test app for a few hundred milliseconds then launch home.
+     * @throws DeviceNotAvailableException
+     */
+    private void startAndStopTestApp() throws DeviceNotAvailableException {
+        // Launch the app.
+        mDevice.executeShellCommand(
+                String.format("am start -W -a android.intent.action.MAIN -n %s/%s.%s",
+                        TEST_APP_PACKAGE, TEST_APP_PACKAGE, TEST_APP_CLASS));
+
+        // Wait for some time.
+        sleepUninterrupted(ACTIVITY_LAUNCH_WAIT_MILLIS);
+
+        // Launch home.
+        mDevice.executeShellCommand(
+                "am start -W -a android.intent.action.MAIN -c android.intent.category.HOME");
+    }
+
+    /**
+     * Tests that the app is idle when the idle threshold is passed, and that the app is not-idle
+     * before the threshold is passed.
+     *
+     * @throws Exception
+     */
+    public void testAppIsIdle() throws Exception {
+        final String previousState = getAppIdleSettings();
+        try {
+            // Set the app idle time to be super low.
+            setAppIdleSettings("idle_duration=5,wallclock_threshold=5");
+            startAndStopTestApp();
+            assertTrue(isAppIdle(TEST_APP_PACKAGE));
+
+            // Set the app idle time to something larger.
+            setAppIdleSettings("idle_duration=10000,wallclock_threshold=10000");
+            startAndStopTestApp();
+            assertFalse(isAppIdle(TEST_APP_PACKAGE));
+        } finally {
+            setAppIdleSettings(previousState);
+        }
+    }
+
+    private static void sleepUninterrupted(long timeMillis) {
+        boolean interrupted;
+        do {
+            try {
+                Thread.sleep(timeMillis);
+                interrupted = false;
+            } catch (InterruptedException e) {
+                interrupted = true;
+            }
+        } while (interrupted);
+    }
+}
diff --git a/libs/deviceutil/src/android/cts/util/LocationUtils.java b/libs/deviceutil/src/android/cts/util/LocationUtils.java
new file mode 100644
index 0000000..1f7af86
--- /dev/null
+++ b/libs/deviceutil/src/android/cts/util/LocationUtils.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 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
+ */
+
+package android.cts.util;
+
+import android.app.Instrumentation;
+import android.util.Log;
+
+import java.io.IOException;
+
+public class LocationUtils {
+    private static String TAG = "LocationUtils";
+
+    public static void registerMockLocationProvider(Instrumentation instrumentation,
+            boolean enable) {
+        StringBuilder command = new StringBuilder();
+        command.append("appops set ");
+        command.append(instrumentation.getContext().getPackageName());
+        command.append(" android:mock_location ");
+        command.append(enable ? "allow" : "deny");
+        try {
+            SystemUtil.runShellCommand(instrumentation, command.toString());
+        } catch (IOException e) {
+            Log.e(TAG, "Error managing mock location app. Command: " + command, e);
+        }
+    }
+}
diff --git a/libs/deviceutil/src/android/cts/util/MediaUtils.java b/libs/deviceutil/src/android/cts/util/MediaUtils.java
old mode 100644
new mode 100755
index 4ec84ce..7e2bfe3
--- a/libs/deviceutil/src/android/cts/util/MediaUtils.java
+++ b/libs/deviceutil/src/android/cts/util/MediaUtils.java
@@ -26,9 +26,15 @@
 import android.media.MediaFormat;
 import android.net.Uri;
 import android.util.Range;
+
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+
 import java.lang.reflect.Method;
 import static java.lang.reflect.Modifier.isPublic;
 import static java.lang.reflect.Modifier.isStatic;
+import java.util.Arrays;
 import java.util.Map;
 import android.util.Log;
 
@@ -143,6 +149,17 @@
         return result;
     }
 
+    public static MediaCodec getDecoder(MediaFormat format) {
+        String decoder = sMCL.findDecoderForFormat(format);
+        if (decoder != null) {
+            try {
+                return MediaCodec.createByCodecName(decoder);
+            } catch (IOException e) {
+            }
+        }
+        return null;
+    }
+
     public static boolean canDecode(MediaFormat format) {
         if (sMCL.findDecoderForFormat(format) == null) {
             Log.i(TAG, "no decoder for " + format);
@@ -399,4 +416,125 @@
 
         return extractor;
     }
+
+    /**
+     * return the average value of the passed array.
+     */
+    public static double getAverage(double[] data) {
+        int num = data.length;
+        if (num == 0) {
+            return 0;
+        }
+
+        double sum = data[0];
+        for (int i = 1; i < num; i++) {
+            sum += data[i];
+        }
+        return sum / num;
+    }
+
+    /**
+     * return the standard deviation value of the passed array
+     */
+    public static double getStdev(double[] data) {
+        double average = getAverage(data);
+        int num = data.length;
+        if (num == 0) {
+            return 0;
+        }
+        double variance = 0;
+        for (int i = 0; i < num; ++i) {
+            variance += (data[i] - average) * (data[i] - average);
+        }
+        variance /= num;
+        return Math.sqrt(variance);
+    }
+
+    public static double[] calculateMovingAverage(double[] array, int n) {
+        int num = array.length;
+        if (num < n) {
+            return null;
+        }
+        int avgsNum = num - n + 1;
+        double[] avgs = new double[avgsNum];
+        double sum = array[0];
+        for (int i = 1; i < n; ++i) {
+            sum += array[i];
+        }
+        avgs[0] = sum / n;
+
+        for (int i = n; i < num; ++i) {
+            sum = sum - array[i - n] + array[i];
+            avgs[i - n + 1] = sum / n;
+        }
+        return avgs;
+    }
+
+    public static String logResults(ReportLog log, String prefix,
+            double min, double max, double avg, double stdev) {
+        String msg = prefix;
+        msg += " min=" + Math.round(min / 1000) + " max=" + Math.round(max / 1000) +
+                " avg=" + Math.round(avg / 1000) + " stdev=" + Math.round(stdev / 1000);
+        log.printValue(msg, 1000000000 / min, ResultType.HIGHER_BETTER, ResultUnit.FPS);
+        return msg;
+    }
+
+    public static VideoCapabilities getVideoCapabilities(String codecName, String mime) {
+        for (MediaCodecInfo info : sMCL.getCodecInfos()) {
+            if (!info.getName().equalsIgnoreCase(codecName)) {
+                continue;
+            }
+            CodecCapabilities caps;
+            try {
+                caps = info.getCapabilitiesForType(mime);
+            } catch (IllegalArgumentException e) {
+                // mime is not supported
+                continue;
+            }
+            return caps.getVideoCapabilities();
+        }
+        return null;
+    }
+
+    public static Range<Double> getAchievableFrameRatesFor(
+            String codecName, String mimeType, int width, int height) {
+        VideoCapabilities cap = getVideoCapabilities(codecName, mimeType);
+        if (cap == null) {
+            return null;
+        }
+        return cap.getAchievableFrameRatesFor(width, height);
+    }
+
+    private static final double FRAMERATE_TOLERANCE = Math.sqrt(12.1);
+    public static boolean verifyResults(String name, String mime, int w, int h, double measured) {
+        Range<Double> reported = getAchievableFrameRatesFor(name, mime, w, h);
+        if (reported == null) {
+            Log.d(TAG, "Failed to getAchievableFrameRatesFor " +
+                    name + " " + mime + " " + w + "x" + h);
+            return false;
+        }
+        double lowerBoundary1 = reported.getLower() / FRAMERATE_TOLERANCE;
+        double upperBoundary1 = reported.getUpper() * FRAMERATE_TOLERANCE;
+        double lowerBoundary2 = reported.getUpper() / Math.pow(FRAMERATE_TOLERANCE, 2);
+        double upperBoundary2 = reported.getLower() * Math.pow(FRAMERATE_TOLERANCE, 2);
+        Log.d(TAG, name + " " + mime + " " + w + "x" + h + " " +
+                "lowerBoundary1 " + lowerBoundary1 + " upperBoundary1 " + upperBoundary1 +
+                " lowerBoundary2 " + lowerBoundary2 + " upperBoundary2 " + upperBoundary2 +
+                " measured " + measured);
+        return (measured >= lowerBoundary1 && measured <= upperBoundary1 &&
+                measured >= lowerBoundary2 && measured <= upperBoundary2);
+    }
+
+    public static String getErrorMessage(
+            Range<Double> reportedRange, double[] measuredFps, String[] rawData) {
+        String msg = "";
+        if (reportedRange == null) {
+            msg += "Failed to get achievable frame rate.\n";
+        } else {
+            msg += "Expected achievable frame rate range: " + reportedRange + ".\n";
+        }
+        msg += "Measured frame rate: " + Arrays.toString(measuredFps) + ".\n";
+        msg += "Raw data: " + Arrays.toString(rawData) + ".\n";
+        return msg;
+    }
 }
diff --git a/suite/cts/deviceTests/tvproviderperf/src/com/android/cts/tvproviderperf/TvProviderPerfTest.java b/suite/cts/deviceTests/tvproviderperf/src/com/android/cts/tvproviderperf/TvProviderPerfTest.java
index 286d4fd..f9daa3c 100644
--- a/suite/cts/deviceTests/tvproviderperf/src/com/android/cts/tvproviderperf/TvProviderPerfTest.java
+++ b/suite/cts/deviceTests/tvproviderperf/src/com/android/cts/tvproviderperf/TvProviderPerfTest.java
@@ -80,7 +80,7 @@
     @TimeoutReq(minutes = 8)
     public void testChannels() throws Exception {
         if (!mHasTvInputFramework) return;
-        double[] averages = new double[4];
+        double[] averages = new double[5];
 
         // Insert
         final ArrayList<ContentProviderOperation> operations = new ArrayList<>();
@@ -138,23 +138,42 @@
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[1] = Stat.getAverage(applyBatchTimes);
 
-        // Query
+        // Query channels
         applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
             @Override
             public void run(int i) {
-                int j = 0;
                 try (Cursor cursor = mContentResolver.query(Channels.CONTENT_URI, null, null,
                         null, null)) {
                     while (cursor.moveToNext()) {
-                        ++j;
+                        // Do nothing. Just iterate all the items.
                     }
                 }
             }
         });
-        getReportLog().printArray("Elapsed time for query: ",
+        getReportLog().printArray("Elapsed time for query (channels): ",
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[2] = Stat.getAverage(applyBatchTimes);
 
+        // Query a channel
+        try (final Cursor cursor = mContentResolver.query(Channels.CONTENT_URI,
+                projection, null, null, null)) {
+            final Uri channelUri = TvContract.buildChannelUri(cursor.getLong(0));
+            applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
+                @Override
+                public void run(int i) {
+                    assertTrue(cursor.moveToNext());
+                    try (Cursor c = mContentResolver.query(channelUri, null, null, null, null)) {
+                        while (c.moveToNext()) {
+                            // Do nothing. Just iterate all the items.
+                        }
+                    }
+                }
+            });
+        }
+        getReportLog().printArray("Elapsed time for query (a channel): ",
+                applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
+        averages[3] = Stat.getAverage(applyBatchTimes);
+
         // Delete
         applyBatchTimes = MeasureTime.measure(1, new MeasureRun() {
             @Override
@@ -164,16 +183,17 @@
         });
         getReportLog().printArray("Elapsed time for delete: ",
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
-        averages[3] = Stat.getAverage(applyBatchTimes);
+        averages[4] = Stat.getAverage(applyBatchTimes);
 
-        getReportLog().printArray("Average elapsed time for (insert, update, query, delete): ",
+        getReportLog().printArray("Average elapsed time for insert, update, query (channels), "
+                + "query (a channel), delete: ",
                 averages, ResultType.LOWER_BETTER, ResultUnit.MS);
     }
 
     @TimeoutReq(minutes = 12)
     public void testPrograms() throws Exception {
         if (!mHasTvInputFramework) return;
-        double[] averages = new double[6];
+        double[] averages = new double[7];
 
         // Prepare (insert channels)
         final ArrayList<ContentProviderOperation> operations = new ArrayList<>();
@@ -262,20 +282,19 @@
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[1] = Stat.getAverage(applyBatchTimes);
 
-        // Query
+        // Query programs
         applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
             @Override
             public void run(int i) {
-                int j = 0;
                 try (Cursor cursor = mContentResolver.query(Programs.CONTENT_URI, null, null,
                         null, null)) {
                     while (cursor.moveToNext()) {
-                        ++j;
+                        // Do nothing. Just iterate all the items.
                     }
                 }
             }
         });
-        getReportLog().printArray("Elapsed time for query: ",
+        getReportLog().printArray("Elapsed time for query (programs): ",
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[2] = Stat.getAverage(applyBatchTimes);
 
@@ -284,22 +303,41 @@
             @Override
             public void run(int i) {
                 Uri channelUri = channelUris.get(i);
-                int j = 0;
                 try (Cursor cursor = mContentResolver.query(
                         TvContract.buildProgramsUriForChannel(
                                 channelUri, 0,
                                 PROGRAM_DURATION_MS * TRANSACTION_SIZE / 2),
                         null, null, null, null)) {
                     while (cursor.moveToNext()) {
-                        ++j;
+                        // Do nothing. Just iterate all the items.
                     }
                 }
             }
         });
-        getReportLog().printArray("Elapsed time for query with selection: ",
+        getReportLog().printArray("Elapsed time for query (programs with selection): ",
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[3] = Stat.getAverage(applyBatchTimes);
 
+        // Query a program
+        try (final Cursor cursor = mContentResolver.query(Programs.CONTENT_URI,
+                projection, null, null, null)) {
+            final Uri programUri = TvContract.buildProgramUri(cursor.getLong(0));
+            applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
+                @Override
+                public void run(int i) {
+                    assertTrue(cursor.moveToNext());
+                    try (Cursor c = mContentResolver.query(programUri, null, null, null, null)) {
+                        while (c.moveToNext()) {
+                            // Do nothing. Just iterate all the items.
+                        }
+                    }
+                }
+            });
+        }
+        getReportLog().printArray("Elapsed time for query (a program): ",
+                applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
+        averages[4] = Stat.getAverage(applyBatchTimes);
+
         // Delete programs
         applyBatchTimes = MeasureTime.measure(NUM_CHANNELS, new MeasureRun() {
             @Override
@@ -315,7 +353,7 @@
         });
         getReportLog().printArray("Elapsed time for delete programs: ",
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
-        averages[4] = Stat.getAverage(applyBatchTimes);
+        averages[5] = Stat.getAverage(applyBatchTimes);
 
         // Delete channels
         applyBatchTimes = MeasureTime.measure(NUM_CHANNELS, new MeasureRun() {
@@ -327,10 +365,11 @@
         });
         getReportLog().printArray("Elapsed time for delete channels: ",
                 applyBatchTimes, ResultType.LOWER_BETTER, ResultUnit.MS);
-        averages[5] = Stat.getAverage(applyBatchTimes);
+        averages[6] = Stat.getAverage(applyBatchTimes);
 
-        getReportLog().printArray("Average elapsed time for (insert, update, query, "
-                + "query with selection, delete channels, delete programs): ",
+        getReportLog().printArray("Average elapsed time for insert, update, query (programs), "
+                + "query (programs with selection), query (a channel), delete (channels), "
+                + "delete (programs): ",
                 averages, ResultType.LOWER_BETTER, ResultUnit.MS);
     }
 }
diff --git a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/CodecInfo.java b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/CodecInfo.java
index 88b005a..ccb3126 100644
--- a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/CodecInfo.java
+++ b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/CodecInfo.java
@@ -93,22 +93,6 @@
         return info;
     }
 
-    public static Range<Double> getAchievableFrameRatesFor(
-            String codecName, String mimeType, int width, int height) {
-        MediaCodec codec;
-        try {
-            codec = MediaCodec.createByCodecName(codecName);
-        } catch (IOException e) {
-            return null;
-        }
-
-        VideoCapabilities cap =
-            codec.getCodecInfo().getCapabilitiesForType(mimeType).getVideoCapabilities();
-        Range<Double> results = cap.getAchievableFrameRatesFor(width, height);
-        codec.release();
-        return results;
-    }
-
     // for debugging
     private static void printIntArray(String msg, int[] data) {
         StringBuilder builder = new StringBuilder();
diff --git a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
index eb0e784..62f37c5 100644
--- a/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
+++ b/suite/cts/deviceTests/videoperf/src/com/android/cts/videoperf/VideoEncoderDecoderTest.java
@@ -16,6 +16,8 @@
 
 package com.android.cts.videoperf;
 
+import android.cts.util.MediaUtils;
+import android.cts.util.DeviceReportLog;
 import android.graphics.ImageFormat;
 import android.graphics.Point;
 import android.media.cts.CodecImage;
@@ -37,6 +39,7 @@
 import com.android.cts.util.ResultType;
 import com.android.cts.util.ResultUnit;
 import com.android.cts.util.Stat;
+import com.android.cts.util.TimeoutReq;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -69,10 +72,11 @@
     private static final String VIDEO_H263 = MediaFormat.MIMETYPE_VIDEO_H263;
     private static final String VIDEO_MPEG4 = MediaFormat.MIMETYPE_VIDEO_MPEG4;
     private int mCurrentTestRound = 0;
-    private long[][] mEncoderFrameTimeDiff = null;
-    private long[][] mDecoderFrameTimeDiff = null;
+    private double[][] mEncoderFrameTimeDiff = null;
+    private double[][] mDecoderFrameTimeDiff = null;
     // i frame interval for encoder
     private static final int KEY_I_FRAME_INTERVAL = 5;
+    private static final int MOVING_AVERAGE_NUM = 10;
 
     private static final int Y_CLAMP_MIN = 16;
     private static final int Y_CLAMP_MAX = 235;
@@ -87,6 +91,10 @@
     private int mVideoHeight;
     private int mFrameRate;
 
+    private MediaFormat mEncInputFormat;
+    private MediaFormat mEncOutputFormat;
+    private MediaFormat mDecOutputFormat;
+
     private LinkedList<Pair<ByteBuffer, BufferInfo>> mEncodedOutputBuffer;
     // check this many pixels per each decoded frame
     // checking too many points decreases decoder frame rates a lot.
@@ -101,11 +109,14 @@
         public boolean mTestResult = false;
         public boolean mReportFrameTime = false;
         public int mTotalFrames = 300;
+        public int mMaxTimeMs = 120000;  // 2 minutes
         public int mNumberOfRepeat = 10;
     }
 
     private TestConfig mTestConfig;
 
+    private DeviceReportLog mReportLog;
+
     @Override
     protected void setUp() throws Exception {
         mEncodedOutputBuffer = new LinkedList<Pair<ByteBuffer, BufferInfo>>();
@@ -113,6 +124,7 @@
         long now = System.currentTimeMillis();
         mRandom = new Random(now);
         mTestConfig = new TestConfig();
+        mReportLog = new DeviceReportLog();
         super.setUp();
     }
 
@@ -126,6 +138,7 @@
         mUVDirectBuffer = null;
         mRandom = null;
         mTestConfig = null;
+        mReportLog.deliverReportToHost(getInstrumentation());
         super.tearDown();
     }
 
@@ -223,18 +236,22 @@
         doTestGoog(VIDEO_AVC, 720, 480);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testAvc1280x0720Other() throws Exception {
         doTestOther(VIDEO_AVC, 1280, 720);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testAvc1280x0720Goog() throws Exception {
         doTestGoog(VIDEO_AVC, 1280, 720);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testAvc1920x1080Other() throws Exception {
         doTestOther(VIDEO_AVC, 1920, 1080);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testAvc1920x1080Goog() throws Exception {
         doTestGoog(VIDEO_AVC, 1920, 1080);
     }
@@ -256,18 +273,22 @@
         doTestGoog(VIDEO_VP8, 640, 360);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testVp81280x0720Other() throws Exception {
         doTestOther(VIDEO_VP8, 1280, 720);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testVp81280x0720Goog() throws Exception {
         doTestGoog(VIDEO_VP8, 1280, 720);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testVp81920x1080Other() throws Exception {
         doTestOther(VIDEO_VP8, 1920, 1080);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testVp81920x1080Goog() throws Exception {
         doTestGoog(VIDEO_VP8, 1920, 1080);
     }
@@ -314,10 +335,12 @@
         doTestGoog(VIDEO_MPEG4, 640, 480);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testMpeg41280x0720Other() throws Exception {
         doTestOther(VIDEO_MPEG4, 1280, 720);
     }
 
+    @TimeoutReq(minutes = 10)
     public void testMpeg41280x0720Goog() throws Exception {
         doTestGoog(VIDEO_MPEG4, 1280, 720);
     }
@@ -351,7 +374,7 @@
 
     private void doTestGoog(String mimeType, int w, int h) throws Exception {
         mTestConfig.mTestPixels = false;
-        mTestConfig.mReportFrameTime = true;
+        mTestConfig.mTestResult = true;
         mTestConfig.mTotalFrames = 3000;
         mTestConfig.mNumberOfRepeat = 2;
         doTest(true /* isGoog */, mimeType, w, h);
@@ -360,7 +383,6 @@
     private void doTestOther(String mimeType, int w, int h) throws Exception {
         mTestConfig.mTestPixels = false;
         mTestConfig.mTestResult = true;
-        mTestConfig.mReportFrameTime = true;
         mTestConfig.mTotalFrames = 3000;
         mTestConfig.mNumberOfRepeat = 2;
         doTest(false /* isGoog */, mimeType, w, h);
@@ -432,8 +454,10 @@
                    ", dec format " + mDstColorFormat);
 
         initYUVPlane(w + YUV_PLANE_ADDITIONAL_LENGTH, h + YUV_PLANE_ADDITIONAL_LENGTH);
-        mEncoderFrameTimeDiff = new long[mTestConfig.mNumberOfRepeat][mTestConfig.mTotalFrames - 1];
-        mDecoderFrameTimeDiff = new long[mTestConfig.mNumberOfRepeat][mTestConfig.mTotalFrames - 1];
+        mEncoderFrameTimeDiff =
+                new double[mTestConfig.mNumberOfRepeat][mTestConfig.mTotalFrames - 1];
+        mDecoderFrameTimeDiff =
+                new double[mTestConfig.mNumberOfRepeat][mTestConfig.mTotalFrames - 1];
         double[] encoderFpsResults = new double[mTestConfig.mNumberOfRepeat];
         double[] decoderFpsResults = new double[mTestConfig.mNumberOfRepeat];
         double[] totalFpsResults = new double[mTestConfig.mNumberOfRepeat];
@@ -475,20 +499,25 @@
             // it will be good to clean everything to make every run the same.
             System.gc();
         }
-        getReportLog().printArray("encoder", encoderFpsResults, ResultType.HIGHER_BETTER,
+        mReportLog.printArray("encoder", encoderFpsResults, ResultType.HIGHER_BETTER,
                 ResultUnit.FPS);
-        getReportLog().printArray("rms error", decoderRmsErrorResults, ResultType.LOWER_BETTER,
+        mReportLog.printArray("rms error", decoderRmsErrorResults, ResultType.LOWER_BETTER,
                 ResultUnit.NONE);
-        getReportLog().printArray("decoder", decoderFpsResults, ResultType.HIGHER_BETTER,
+        mReportLog.printArray("decoder", decoderFpsResults, ResultType.HIGHER_BETTER,
                 ResultUnit.FPS);
-        getReportLog().printArray("encoder decoder", totalFpsResults, ResultType.HIGHER_BETTER,
+        mReportLog.printArray("encoder decoder", totalFpsResults, ResultType.HIGHER_BETTER,
                 ResultUnit.FPS);
-        getReportLog().printValue(mimeType + " encoder average fps for " + w + "x" + h,
+        mReportLog.printValue(mimeType + " encoder average fps for " + w + "x" + h,
                 Stat.getAverage(encoderFpsResults), ResultType.HIGHER_BETTER, ResultUnit.FPS);
-        getReportLog().printValue(mimeType + " decoder average fps for " + w + "x" + h,
+        mReportLog.printValue(mimeType + " decoder average fps for " + w + "x" + h,
                 Stat.getAverage(decoderFpsResults), ResultType.HIGHER_BETTER, ResultUnit.FPS);
-        getReportLog().printSummary("encoder decoder", Stat.getAverage(totalFpsResults),
+        mReportLog.printSummary("encoder decoder", Stat.getAverage(totalFpsResults),
                 ResultType.HIGHER_BETTER, ResultUnit.FPS);
+
+        boolean encTestPassed = false;
+        boolean decTestPassed = false;
+        double[] measuredFps = new double[mTestConfig.mNumberOfRepeat];
+        String[] resultRawData = new String[mTestConfig.mNumberOfRepeat];
         for (int i = 0; i < mTestConfig.mNumberOfRepeat; i++) {
             // make sure that rms error is not too big.
             if (decoderRmsErrorResults[i] >= mRmsErrorMargain) {
@@ -497,35 +526,67 @@
             }
 
             if (mTestConfig.mReportFrameTime) {
-                getReportLog().printValue(
+                mReportLog.printValue(
                         "encodertest#" + i + ": " + Arrays.toString(mEncoderFrameTimeDiff[i]),
                         0, ResultType.NEUTRAL, ResultUnit.NONE);
-                getReportLog().printValue(
+                mReportLog.printValue(
                         "decodertest#" + i + ": " + Arrays.toString(mDecoderFrameTimeDiff[i]),
                         0, ResultType.NEUTRAL, ResultUnit.NONE);
             }
+
+            if (mTestConfig.mTestResult) {
+                double[] avgs = MediaUtils.calculateMovingAverage(
+                        mEncoderFrameTimeDiff[i], MOVING_AVERAGE_NUM);
+                double encMin = Stat.getMin(avgs);
+                double encMax = Stat.getMax(avgs);
+                double encAvg = MediaUtils.getAverage(mEncoderFrameTimeDiff[i]);
+                double encStdev = MediaUtils.getStdev(avgs);
+                String prefix = "codec=" + encoderName + " round=" + i +
+                        " EncInputFormat=" + mEncInputFormat +
+                        " EncOutputFormat=" + mEncOutputFormat;
+                String result =
+                        MediaUtils.logResults(mReportLog, prefix, encMin, encMax, encAvg, encStdev);
+                double measuredEncFps = 1000000000 / encMin;
+                resultRawData[i] = result;
+                measuredFps[i] = measuredEncFps;
+                if (!encTestPassed) {
+                    encTestPassed = MediaUtils.verifyResults(
+                            encoderName, mimeType, w, h, measuredEncFps);
+                }
+
+                avgs = MediaUtils.calculateMovingAverage(
+                        mDecoderFrameTimeDiff[i], MOVING_AVERAGE_NUM);
+                double decMin = Stat.getMin(avgs);
+                double decMax = Stat.getMax(avgs);
+                double decAvg = MediaUtils.getAverage(mDecoderFrameTimeDiff[i]);
+                double decStdev = MediaUtils.getStdev(avgs);
+                prefix = "codec=" + decoderName + " size=" + w + "x" + h + " round=" + i +
+                        " DecOutputFormat=" + mDecOutputFormat;
+                MediaUtils.logResults(mReportLog, prefix, decMin, decMax, decAvg, decStdev);
+                double measuredDecFps = 1000000000 / decMin;
+                if (!decTestPassed) {
+                    decTestPassed = MediaUtils.verifyResults(
+                            decoderName, mimeType, w, h, measuredDecFps);
+                }
+            }
         }
 
         if (mTestConfig.mTestResult) {
-            Range<Double> reportedEncoderResults =
-                    CodecInfo.getAchievableFrameRatesFor(encoderName, mimeType, w, h);
-            Range<Double> reportedDecoderResults =
-                    CodecInfo.getAchievableFrameRatesFor(decoderName, mimeType, w, h);
-            if (reportedEncoderResults == null) {
-                fail("Failed to getAchievableFrameRatesFor "
-                        + encoderName + " " + mimeType + " " + w + "x" + h);
+            if (!encTestPassed) {
+                Range<Double> reportedRange =
+                    MediaUtils.getAchievableFrameRatesFor(encoderName, mimeType, w, h);
+                String failMessage =
+                    MediaUtils.getErrorMessage(reportedRange, measuredFps, resultRawData);
+                fail(failMessage);
             }
-            if (reportedDecoderResults == null) {
-                fail("Failed to getAchievableFrameRatesFor "
-                        + decoderName + " " + mimeType + " " + w + "x" + h);
-            }
-            if (!reportedEncoderResults.contains(Stat.getAverage(encoderFpsResults))) {
-                fail("Expecting achievable frame rate in the rang of " + reportedEncoderResults);
-            }
-            if (!reportedDecoderResults.contains(Stat.getAverage(decoderFpsResults))) {
-                fail("Expecting achievable frame rate in the rang of " + reportedDecoderResults);
-            }
+            // Decoder result will be verified in VideoDecoderPerfTest
+            // if (!decTestPassed) {
+            //     fail("Measured fps for " + decoderName +
+            //             " doesn't match with reported achievable frame rates.");
+            // }
         }
+        measuredFps = null;
+        resultRawData = null;
     }
 
     /**
@@ -553,6 +614,7 @@
             return Double.NaN;
         }
         codec.start();
+        mEncInputFormat = codec.getInputFormat();
         ByteBuffer[] codecOutputBuffers = codec.getOutputBuffers();
 
         int numBytesSubmitted = 0;
@@ -567,6 +629,10 @@
                 index = codec.dequeueInputBuffer(VIDEO_CODEC_WAIT_TIME_US /* timeoutUs */);
                 if (index != MediaCodec.INFO_TRY_AGAIN_LATER) {
                     int size;
+                    boolean eos = (inFramesCount == (totalFrames - 1));
+                    if (!eos && ((System.currentTimeMillis() - start) > mTestConfig.mMaxTimeMs)) {
+                        eos = true;
+                    }
                     // when encoder only supports flexYUV, use Image only; otherwise,
                     // use ByteBuffer & Image each on half of the frames to test both
                     if (isSrcFlexYUV() || inFramesCount % 2 == 0) {
@@ -575,14 +641,12 @@
                         assertTrue(image != null);
                         size = queueInputImageEncoder(
                                 codec, image, index, inFramesCount,
-                                (inFramesCount == (totalFrames - 1)) ?
-                                        MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
+                                eos ? MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
                     } else {
                         ByteBuffer buffer = codec.getInputBuffer(index);
                         size = queueInputBufferEncoder(
                                 codec, buffer, index, inFramesCount,
-                                (inFramesCount == (totalFrames - 1)) ?
-                                        MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
+                                eos ? MediaCodec.BUFFER_FLAG_END_OF_STREAM : 0);
                     }
                     inFramesCount++;
                     numBytesSubmitted += size;
@@ -597,6 +661,7 @@
             index = codec.dequeueOutputBuffer(info, VIDEO_CODEC_WAIT_TIME_US /* timeoutUs */);
             if (index == MediaCodec.INFO_TRY_AGAIN_LATER) {
             } else if (index == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+                mEncOutputFormat = codec.getOutputFormat();
             } else if (index == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
                 codecOutputBuffers = codec.getOutputBuffers();
             } else if (index >= 0) {
@@ -623,6 +688,10 @@
             }
         }
         long finish = System.currentTimeMillis();
+        int validDataNum = Math.min(mEncodedOutputBuffer.size() - 1,
+                mEncoderFrameTimeDiff[mCurrentTestRound].length);
+        mEncoderFrameTimeDiff[mCurrentTestRound] =
+                Arrays.copyOf(mEncoderFrameTimeDiff[mCurrentTestRound], validDataNum);
         if (VERBOSE) {
             Log.d(TAG, "queued a total of " + numBytesSubmitted + "bytes, "
                     + "dequeued " + numBytesDequeued + " bytes.");
@@ -883,12 +952,17 @@
                     int writeSize = src.capacity();
                     dstBuf.put(src.array(), 0, writeSize);
 
+                    int flags = srcInfo.flags;
+                    if ((System.currentTimeMillis() - start) > mTestConfig.mMaxTimeMs) {
+                        flags |= MediaCodec.BUFFER_FLAG_END_OF_STREAM;
+                    }
+
                     codec.queueInputBuffer(
                             inputBufIndex,
                             0 /* offset */,
                             writeSize,
                             srcInfo.presentationTimeUs,
-                            srcInfo.flags);
+                            flags);
                     inputLeft --;
                     inputBufferCount ++;
                 }
@@ -966,9 +1040,9 @@
                     sawOutputEOS = true;
                 }
             } else if (res == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
-                MediaFormat oformat = codec.getOutputFormat();
-                Log.d(TAG, "output format has changed to " + oformat);
-                int colorFormat = oformat.getInteger(MediaFormat.KEY_COLOR_FORMAT);
+                mDecOutputFormat = codec.getOutputFormat();
+                Log.d(TAG, "output format has changed to " + mDecOutputFormat);
+                int colorFormat = mDecOutputFormat.getInteger(MediaFormat.KEY_COLOR_FORMAT);
                 if (colorFormat == CodecCapabilities.COLOR_FormatYUV420SemiPlanar
                         || colorFormat == CodecCapabilities.COLOR_FormatYUV420Planar) {
                     mDstColorFormat = colorFormat;
@@ -980,13 +1054,14 @@
             }
         }
         long finish = System.currentTimeMillis();
+        int validDataNum = Math.min(outFrameCount - 1,
+                mDecoderFrameTimeDiff[mCurrentTestRound].length);
+        mDecoderFrameTimeDiff[mCurrentTestRound] =
+                Arrays.copyOf(mDecoderFrameTimeDiff[mCurrentTestRound], validDataNum);
         codec.stop();
         codec.release();
         codec = null;
-        if (outFrameCount < mTestConfig.mTotalFrames) {
-            fail("Expecting " + mTestConfig.mTotalFrames +
-                    " frames but get " + outFrameCount + " instead.");
-        }
+
         // divide by 3 as sum is done for Y, U, V.
         double errorRms = Math.sqrt(totalErrorSquared / PIXEL_CHECK_PER_FRAME / outFrameCount / 3);
         double[] result = { (double) finish - start, errorRms };
diff --git a/tests/core/runner/src/com/android/cts/runner/CtsTestRunListener.java b/tests/core/runner/src/com/android/cts/runner/CtsTestRunListener.java
index 19f19c0..57dc7c6 100644
--- a/tests/core/runner/src/com/android/cts/runner/CtsTestRunListener.java
+++ b/tests/core/runner/src/com/android/cts/runner/CtsTestRunListener.java
@@ -123,19 +123,27 @@
         Log.d(TAG, "Free memory   : " + free);
 
         String tempdir = System.getProperty("java.io.tmpdir", "");
+        // TODO: Remove these extra Logs added to debug a specific timeout problem.
+        Log.d(TAG, "java.io.tmpdir is:" + tempdir);
+
         if (!TextUtils.isEmpty(tempdir)) {
             String[] commands = {"df", tempdir};
             BufferedReader in = null;
             try {
+                Log.d(TAG, "About to .exec df");
                 Process proc = runtime.exec(commands);
+                Log.d(TAG, ".exec returned");
                 in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+                Log.d(TAG, "Stream reader created");
                 String line;
                 while ((line = in.readLine()) != null) {
                     Log.d(TAG, line);
                 }
             } catch (IOException e) {
+                Log.d(TAG, "Exception: " + e.toString());
                 // Well, we tried
             } finally {
+                Log.d(TAG, "In finally");
                 if (in != null) {
                     try {
                         in.close();
diff --git a/tests/deviceadmin/res/xml/device_admin.xml b/tests/deviceadmin/res/xml/device_admin.xml
index 263fda6..f7d394e 100644
--- a/tests/deviceadmin/res/xml/device_admin.xml
+++ b/tests/deviceadmin/res/xml/device_admin.xml
@@ -22,6 +22,7 @@
         <force-lock />
         <wipe-data />
         <expire-password />
+        <disable-keyguard-features />
     </uses-policies>
 </device-admin>
 
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index c477128..754e38a 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -174,5 +174,65 @@
     "android.hardware.camera2.cts.SurfaceViewPreviewTest#testPreparePerformance"
   ],
   bug: 17989532
+},
+{
+  description: "The new AE/AF trigger tests are not yet passing on all devices",
+  names: [
+    "android.hardware.camera2.cts.RobustnessTest#testBasicTriggerSequence",
+    "android.hardware.camera2.cts.RobustnessTest#testSimultaneousTriggers",
+    "android.hardware.camera2.cts.RobustnessTest#testAfThenAeTrigger",
+    "android.hardware.camera2.cts.RobustnessTest#testAeThenAfTrigger"
+  ],
+  bug: 22180706
+},
+{
+  description: "The new create session test is not yet passing on all devices",
+  names: [
+    "android.hardware.camera2.cts.CameraDeviceTest#testCreateSessions"
+  ],
+  bug: 22092756
+},
+{
+  description: "The new long processing test is not yet passing on all devices",
+  names: [
+    "android.hardware.camera2.cts.ImageReaderTest#testLongProcessingRepeatingRaw",
+    "android.hardware.camera2.cts.ImageReaderTest#testLongProcessingRepeatingFlexibleYuv"
+  ],
+  bug: 22861512
+},
+{
+  description: "The timing measurements for preview callbacks are not reliable",
+  names: [
+    "android.hardware.cts.CameraTest#testPreviewFpsRange"
+  ],
+  bug: 23008511
+},
+{
+  description: "known failures",
+  names: [
+    "android.hardware.cts.SensorBatchingTests#testAccelerometer_50hz_batching",
+    "android.hardware.cts.SensorBatchingTests#testAccelerometer_fastest_batching",
+    "android.hardware.cts.SensorBatchingTests#testGyroscope_50hz_batching",
+    "android.hardware.cts.SensorBatchingTests#testGyroscope_50hz_flush",
+    "android.hardware.cts.SensorBatchingTests#testMagneticField_50hz_batching",
+    "android.hardware.cts.SensorBatchingTests#testMagneticField_fastest_batching",
+    "android.hardware.cts.SensorBatchingTests#testMagneticFieldUncalibrated_50hz_batching",
+    "android.hardware.cts.SensorBatchingTests#testMagneticFieldUncalibrated_fastest_batching",
+    "android.hardware.cts.SensorBatchingTests#testPressure_50hz_batching",
+    "android.hardware.cts.SensorBatchingTests#testPressure_fastest_batching",
+    "android.hardware.cts.SensorBatchingTests#testRotationVector_50hz_flush",
+    "android.hardware.cts.SensorBatchingTests#testRotationVector_fastest_batching",
+    "android.hardware.cts.SensorIntegrationTests#testSensorsMovingRates",
+    "android.hardware.cts.SensorIntegrationTests#testSensorsWithSeveralClients",
+    "android.hardware.cts.SensorTest#testSensorTimeStamps",
+    "android.hardware.cts.SensorTest#testBatchAndFlush",
+    "android.hardware.cts.SingleSensorTests#testGyroscope_15hz",
+    "android.hardware.cts.SingleSensorTests#testGyroscope_1hz",
+    "android.hardware.cts.SingleSensorTests#testMagneticField_1hz",
+    "android.hardware.cts.SingleSensorTests#testMagneticField_50hz",
+    "android.hardware.cts.SingleSensorTests#testMagneticFieldUncalibrated_200hz",
+    "android.hardware.cts.SingleSensorTests#testOrientation_5hz"
+  ],
+  bug: 22922206
 }
 ]
diff --git a/tests/leanbackjank/Android.mk b/tests/leanbackjank/Android.mk
new file mode 100644
index 0000000..b3adfb1
--- /dev/null
+++ b/tests/leanbackjank/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+        ./app/src/android/cts/jank/leanback/IntentKeys.java
+
+LOCAL_PACKAGE_NAME := CtsLeanbackJankTestCases
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner ub-uiautomator ub-janktesthelper android-support-v17-leanback
+
+include $(BUILD_CTS_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
+
diff --git a/tests/leanbackjank/AndroidManifest.xml b/tests/leanbackjank/AndroidManifest.xml
new file mode 100644
index 0000000..1cd552d
--- /dev/null
+++ b/tests/leanbackjank/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="android.cts.leanbackjank">
+
+  <application>
+      <uses-library android:name="android.test.runner"/>
+  </application>
+
+  <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+                   android:targetPackage="android.cts.leanbackjank"
+                   android:label="Jank tests">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
diff --git a/tests/leanbackjank/AndroidTest.xml b/tests/leanbackjank/AndroidTest.xml
new file mode 100644
index 0000000..e61c58d
--- /dev/null
+++ b/tests/leanbackjank/AndroidTest.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<configuration description="CTS Jank test config">
+    <include name="common-config" />
+    <option name="cts-apk-installer:test-file-name" value="CtsLeanbackJank.apk" />
+</configuration>
diff --git a/tests/leanbackjank/app/Android.mk b/tests/leanbackjank/app/Android.mk
new file mode 100644
index 0000000..5abe1a7
--- /dev/null
+++ b/tests/leanbackjank/app/Android.mk
@@ -0,0 +1,47 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsLeanbackJank
+
+LOCAL_RESOURCE_DIR := \
+    $(TOP)/frameworks/support/v17/leanback/res \
+    $(TOP)/frameworks/support/v7/recyclerview/res \
+    $(LOCAL_PATH)/res
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    ctsdeviceutil \
+    ctstestrunner \
+    ub-uiautomator \
+    ub-janktesthelper \
+    android-support-v4 \
+    android-support-v7-recyclerview \
+    android-support-v17-leanback \
+    glide
+
+LOCAL_AAPT_FLAGS := \
+        --auto-add-overlay \
+        --extra-packages android.support.v17.leanback \
+        --extra-packages android.support.v7.recyclerview
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/leanbackjank/app/AndroidManifest.xml b/tests/leanbackjank/app/AndroidManifest.xml
new file mode 100644
index 0000000..333399e
--- /dev/null
+++ b/tests/leanbackjank/app/AndroidManifest.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.cts.jank.leanback"
+    android:versionCode="1"
+    android:versionName="1.1" >
+
+    <uses-sdk
+        android:minSdkVersion="21"
+        android:targetSdkVersion="23" />
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
+    <uses-feature
+        android:name="android.hardware.touchscreen"
+        android:required="false" />
+
+    <uses-feature android:name="android.software.leanback"
+        android:required="true" />
+
+    <application
+        android:allowBackup="false"
+        android:icon="@drawable/videos_by_google_banner"
+        android:label="@string/app_name"
+        android:logo="@drawable/videos_by_google_banner"
+        android:theme="@style/Theme.Example.Leanback" >
+        <activity
+            android:name=".ui.MainActivity"
+            android:icon="@drawable/videos_by_google_banner"
+            android:label="@string/app_name"
+            android:logo="@drawable/videos_by_google_banner"
+            android:screenOrientation="landscape" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/tests/leanbackjank/app/res/drawable-hdpi/app_icon_quantum.png b/tests/leanbackjank/app/res/drawable-hdpi/app_icon_quantum.png
new file mode 100644
index 0000000..fda9a74
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-hdpi/app_icon_quantum.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-hdpi/app_icon_quantum_card.png b/tests/leanbackjank/app/res/drawable-hdpi/app_icon_quantum_card.png
new file mode 100644
index 0000000..498cf66
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-hdpi/app_icon_quantum_card.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-hdpi/ic_launcher.png b/tests/leanbackjank/app/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..96a442e
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-hdpi/ic_main_icon.png b/tests/leanbackjank/app/res/drawable-hdpi/ic_main_icon.png
new file mode 100644
index 0000000..6f0c962
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-hdpi/ic_main_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-hdpi/videos_by_google_banner.png b/tests/leanbackjank/app/res/drawable-hdpi/videos_by_google_banner.png
new file mode 100644
index 0000000..4cedb52
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-hdpi/videos_by_google_banner.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-hdpi/videos_by_google_icon.png b/tests/leanbackjank/app/res/drawable-hdpi/videos_by_google_icon.png
new file mode 100644
index 0000000..20fd898
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-hdpi/videos_by_google_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-ldpi/ic_launcher.png b/tests/leanbackjank/app/res/drawable-ldpi/ic_launcher.png
new file mode 100644
index 0000000..9923872
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-ldpi/ic_launcher.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-mdpi/app_icon_quantum.png b/tests/leanbackjank/app/res/drawable-mdpi/app_icon_quantum.png
new file mode 100644
index 0000000..6b62138
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-mdpi/app_icon_quantum.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-mdpi/app_icon_quantum_card.png b/tests/leanbackjank/app/res/drawable-mdpi/app_icon_quantum_card.png
new file mode 100644
index 0000000..ac9cc30
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-mdpi/app_icon_quantum_card.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-mdpi/ic_launcher.png b/tests/leanbackjank/app/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..359047d
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-mdpi/ic_main_icon.png b/tests/leanbackjank/app/res/drawable-mdpi/ic_main_icon.png
new file mode 100644
index 0000000..e9effc8
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-mdpi/ic_main_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-mdpi/videos_by_google_banner.png b/tests/leanbackjank/app/res/drawable-mdpi/videos_by_google_banner.png
new file mode 100644
index 0000000..b191626
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-mdpi/videos_by_google_banner.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-mdpi/videos_by_google_icon.png b/tests/leanbackjank/app/res/drawable-mdpi/videos_by_google_icon.png
new file mode 100644
index 0000000..8a7c6dc
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-mdpi/videos_by_google_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/app_icon_quantum.png b/tests/leanbackjank/app/res/drawable-xhdpi/app_icon_quantum.png
new file mode 100644
index 0000000..825ef63
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/app_icon_quantum.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/app_icon_quantum_card.png b/tests/leanbackjank/app/res/drawable-xhdpi/app_icon_quantum_card.png
new file mode 100644
index 0000000..9b1703d
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/app_icon_quantum_card.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/bg.png b/tests/leanbackjank/app/res/drawable-xhdpi/bg.png
new file mode 100644
index 0000000..476c698
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/bg.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/card_background_default.9.png b/tests/leanbackjank/app/res/drawable-xhdpi/card_background_default.9.png
new file mode 100644
index 0000000..29f4e01
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/card_background_default.9.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/default_background.xml b/tests/leanbackjank/app/res/drawable-xhdpi/default_background.xml
new file mode 100644
index 0000000..07b0589
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/default_background.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    <gradient
+            android:startColor="@color/background_gradient_start"
+            android:endColor="@color/background_gradient_end"
+            android:angle="-270" />
+</shape>
\ No newline at end of file
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/grid_bg.png b/tests/leanbackjank/app/res/drawable-xhdpi/grid_bg.png
new file mode 100644
index 0000000..476c698
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/grid_bg.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/ic_launcher.png b/tests/leanbackjank/app/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..71c6d76
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/ic_main_icon.png b/tests/leanbackjank/app/res/drawable-xhdpi/ic_main_icon.png
new file mode 100644
index 0000000..2e56516
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/ic_main_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/shadow7.9.png b/tests/leanbackjank/app/res/drawable-xhdpi/shadow7.9.png
new file mode 100644
index 0000000..6d00d09
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/shadow7.9.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/videos_by_google_banner.png b/tests/leanbackjank/app/res/drawable-xhdpi/videos_by_google_banner.png
new file mode 100644
index 0000000..bdcf41e
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/videos_by_google_banner.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xhdpi/videos_by_google_icon.png b/tests/leanbackjank/app/res/drawable-xhdpi/videos_by_google_icon.png
new file mode 100644
index 0000000..9bc4836
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xhdpi/videos_by_google_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xxhdpi/app_icon_quantum.png b/tests/leanbackjank/app/res/drawable-xxhdpi/app_icon_quantum.png
new file mode 100644
index 0000000..c82f94c
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xxhdpi/app_icon_quantum.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xxhdpi/app_icon_quantum_card.png b/tests/leanbackjank/app/res/drawable-xxhdpi/app_icon_quantum_card.png
new file mode 100644
index 0000000..6c50e8f
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xxhdpi/app_icon_quantum_card.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xxhdpi/videos_by_google_banner.png b/tests/leanbackjank/app/res/drawable-xxhdpi/videos_by_google_banner.png
new file mode 100644
index 0000000..6c121e61
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xxhdpi/videos_by_google_banner.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable-xxhdpi/videos_by_google_icon.png b/tests/leanbackjank/app/res/drawable-xxhdpi/videos_by_google_icon.png
new file mode 100644
index 0000000..4258160e
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable-xxhdpi/videos_by_google_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/android_header.png b/tests/leanbackjank/app/res/drawable/android_header.png
new file mode 100644
index 0000000..56206ec
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/android_header.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/app_icon_quantum.png b/tests/leanbackjank/app/res/drawable/app_icon_quantum.png
new file mode 100644
index 0000000..fda9a74
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/app_icon_quantum.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/app_icon_quantum_card.png b/tests/leanbackjank/app/res/drawable/app_icon_quantum_card.png
new file mode 100644
index 0000000..498cf66
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/app_icon_quantum_card.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/gradation.png b/tests/leanbackjank/app/res/drawable/gradation.png
new file mode 100644
index 0000000..ba43a90
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/gradation.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/ic_action_a.png b/tests/leanbackjank/app/res/drawable/ic_action_a.png
new file mode 100644
index 0000000..3d555ef
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/ic_action_a.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/ic_title.png b/tests/leanbackjank/app/res/drawable/ic_title.png
new file mode 100644
index 0000000..1c62b2e
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/ic_title.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/movie.png b/tests/leanbackjank/app/res/drawable/movie.png
new file mode 100644
index 0000000..cb5cb6d
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/movie.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/player_bg_gradient_dark.xml b/tests/leanbackjank/app/res/drawable/player_bg_gradient_dark.xml
new file mode 100644
index 0000000..4450cb6
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/player_bg_gradient_dark.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <gradient
+        android:angle="90"
+        android:centerColor="#00000000"
+        android:endColor="#B2000000"
+        android:startColor="#B2000000"
+        android:type="linear" />
+
+</shape>
\ No newline at end of file
diff --git a/tests/leanbackjank/app/res/drawable/shadow7.9.png b/tests/leanbackjank/app/res/drawable/shadow7.9.png
new file mode 100644
index 0000000..6d00d09
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/shadow7.9.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/text_bg.xml b/tests/leanbackjank/app/res/drawable/text_bg.xml
new file mode 100644
index 0000000..43fbeaf
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/text_bg.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <gradient
+        android:startColor="#FFFF0000"
+        android:endColor="#FFFF00FF"
+        android:angle="45" />
+    <padding
+        android:left="7dp"
+        android:top="7dp"
+        android:right="7dp"
+        android:bottom="7dp" />
+    <size
+        android:height="160dp"
+        android:width="100dp" />
+</shape>
diff --git a/tests/leanbackjank/app/res/drawable/videos_by_google_banner.png b/tests/leanbackjank/app/res/drawable/videos_by_google_banner.png
new file mode 100644
index 0000000..4cedb52
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/videos_by_google_banner.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/drawable/videos_by_google_icon.png b/tests/leanbackjank/app/res/drawable/videos_by_google_icon.png
new file mode 100644
index 0000000..20fd898
--- /dev/null
+++ b/tests/leanbackjank/app/res/drawable/videos_by_google_icon.png
Binary files differ
diff --git a/tests/leanbackjank/app/res/layout/icon_header_item.xml b/tests/leanbackjank/app/res/layout/icon_header_item.xml
new file mode 100644
index 0000000..586881d
--- /dev/null
+++ b/tests/leanbackjank/app/res/layout/icon_header_item.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 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.
+-->
+<android.support.v17.leanback.widget.NonOverlappingLinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView
+        android:id="@+id/header_icon"
+        android:layout_width="32dp"
+        android:layout_height="32dp" />
+
+    <TextView
+        android:id="@+id/header_label"
+        android:layout_marginTop="6dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+</android.support.v17.leanback.widget.NonOverlappingLinearLayout>
diff --git a/tests/leanbackjank/app/res/layout/main.xml b/tests/leanbackjank/app/res/layout/main.xml
new file mode 100644
index 0000000..7a83b69
--- /dev/null
+++ b/tests/leanbackjank/app/res/layout/main.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 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.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/main_frame"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <fragment
+        android:name="android.cts.jank.leanback.ui.MainFragment"
+        android:id="@+id/main_browse_fragment"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</FrameLayout>
diff --git a/tests/leanbackjank/app/res/layout/movie_card.xml b/tests/leanbackjank/app/res/layout/movie_card.xml
new file mode 100644
index 0000000..c63841d
--- /dev/null
+++ b/tests/leanbackjank/app/res/layout/movie_card.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<android.support.v17.leanback.widget.NonOverlappingLinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="vertical"
+              android:layout_height="wrap_content"
+              android:layout_width="wrap_content"
+              android:scaleType="centerCrop"
+              android:focusable="true"
+              android:focusableInTouchMode="true">
+    <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:id="@+id/poster" android:layout_gravity="center"/>
+    <TextView
+       android:id="@+id/poster_text"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content"
+       android:paddingTop="10dp"
+       android:paddingRight="10dp"
+       android:paddingBottom="10dp"
+       android:paddingLeft="10dp" />
+</android.support.v17.leanback.widget.NonOverlappingLinearLayout>
\ No newline at end of file
diff --git a/tests/leanbackjank/app/res/values/colors.xml b/tests/leanbackjank/app/res/values/colors.xml
new file mode 100644
index 0000000..7e246ed
--- /dev/null
+++ b/tests/leanbackjank/app/res/values/colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="background_gradient_start">#000000</color>
+    <color name="background_gradient_end">#DDDDDD</color>
+    <color name="fastlane_background">#0096a6</color>
+    <color name="search_opaque">#ffaa3f</color>
+    <color name="selected_background">#ffaa3f</color>
+    <color name="soft_opaque">#30000000</color>
+    <color name="img_soft_opaque">#30FF0000</color>
+    <color name="img_full_opaque">#00000000</color>
+    <color name="black_opaque">#AA000000</color>
+    <color name="black">#59000000</color>
+    <color name="white">#FFFFFF</color>
+    <color name="orange_transparent">#AAFADCA7</color>
+    <color name="orange">#FADCA7</color>
+    <color name="yellow">#EEFF41</color>
+    <color name="default_background">#0096a6</color>
+    <color name="icon_background">#4A4F51</color>
+    <color name="icon_alt_background">#2A2F51</color>
+</resources>
\ No newline at end of file
diff --git a/tests/leanbackjank/app/res/values/strings.xml b/tests/leanbackjank/app/res/values/strings.xml
new file mode 100644
index 0000000..17edf95
--- /dev/null
+++ b/tests/leanbackjank/app/res/values/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 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.
+-->
+
+<resources>
+    <string name="app_name"><![CDATA[Leanback launcher jank test application]]></string>
+    <string name="browse_title"><![CDATA[Leanback launcher jank test application]]></string>
+    <string name="error">Error</string>
+    <string name="ok">OK</string>
+    <string name="grid_item_template">Item %1$d</string>
+    <string name="settings">Settings</string>
+
+    <!-- Error messages -->
+    <string name="error_fragment_message">An error occurred</string>
+    <string name="dismiss_error">Dismiss</string>
+</resources>
diff --git a/tests/leanbackjank/app/res/values/themes.xml b/tests/leanbackjank/app/res/values/themes.xml
new file mode 100644
index 0000000..4a1e06d
--- /dev/null
+++ b/tests/leanbackjank/app/res/values/themes.xml
@@ -0,0 +1,15 @@
+<resources>
+    <style name="Theme.Example.Leanback" parent="Theme.Leanback">
+        <item name="android:colorPrimary">@color/search_opaque</item>
+        <item name="android:windowEnterTransition">@android:transition/fade</item>
+        <item name="android:windowExitTransition">@android:transition/fade</item>
+        <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
+        <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
+        <!-- Set to display colorPrimary when apps launches -->
+        <item name="android:windowAllowReturnTransitionOverlap">true</item>
+        <item name="android:windowAllowEnterTransitionOverlap">false</item>
+        <item name="android:windowContentTransitions">true</item>
+    </style>
+    <style name="Widget.Example.Leanback.Title.Text" parent="Widget.Leanback.Title.Text" >
+    </style>
+</resources>
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/IntentKeys.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/IntentKeys.java
new file mode 100644
index 0000000..e9c5e6e
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/IntentKeys.java
@@ -0,0 +1,10 @@
+package android.cts.jank.leanback;
+
+/**
+ * Intent key strings of the leanback jank test helper app.
+ */
+public class IntentKeys {
+    public static final String SCROLL_COUNT = "SCROLL_COUNT";
+    public static final String SCROLL_DELAY = "SCROLL_DELAY";
+    public static final String SCROLL_INTERVAL = "SCROLL_INTERVAL";
+}
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/Utils.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/Utils.java
new file mode 100644
index 0000000..de6d6af
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/Utils.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Point;
+import android.media.MediaMetadataRetriever;
+import android.os.Build;
+import android.util.DisplayMetrics;
+import android.view.Display;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+import android.widget.Toast;
+import android.widget.VideoView;
+
+import java.util.HashMap;
+
+/**
+ * A collection of utility methods, all static.
+ */
+public class Utils {
+
+    public interface MediaDimensions {
+        double MEDIA_HEIGHT = 0.95;
+        double MEDIA_WIDTH = 0.95;
+        double MEDIA_TOP_MARGIN = 0.025;
+        double MEDIA_RIGHT_MARGIN = 0.025;
+        double MEDIA_BOTTOM_MARGIN = 0.025;
+        double MEDIA_LEFT_MARGIN = 0.025;
+    }
+
+    /*
+     * Making sure public utility methods remain static
+     */
+    private Utils() {
+    }
+
+    /**
+     * Returns the screen/display size
+     */
+    public static Point getDisplaySize(Context context) {
+        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+        Display display = wm.getDefaultDisplay();
+        Point size = new Point();
+        display.getSize(size);
+        return size;
+    }
+
+    /**
+     * Shows a (long) toast
+     */
+    public static void showToast(Context context, String msg) {
+        Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
+    }
+
+    /**
+     * Shows a (long) toast.
+     */
+    public static void showToast(Context context, int resourceId) {
+        Toast.makeText(context, context.getString(resourceId), Toast.LENGTH_LONG).show();
+    }
+
+    public static int convertDpToPixel(Context ctx, int dp) {
+        float density = ctx.getResources().getDisplayMetrics().density;
+        return Math.round((float) dp * density);
+    }
+
+
+    /**
+     * Example for handling resizing content for overscan.  Typically you won't need to resize
+     * when using the Leanback support library.
+     */
+    public void overScan(Activity activity, VideoView videoView) {
+        DisplayMetrics metrics = new DisplayMetrics();
+        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
+        int w = (int) (metrics.widthPixels * MediaDimensions.MEDIA_WIDTH);
+        int h = (int) (metrics.heightPixels * MediaDimensions.MEDIA_HEIGHT);
+        int marginLeft = (int) (metrics.widthPixels * MediaDimensions.MEDIA_LEFT_MARGIN);
+        int marginTop = (int) (metrics.heightPixels * MediaDimensions.MEDIA_TOP_MARGIN);
+        int marginRight = (int) (metrics.widthPixels * MediaDimensions.MEDIA_RIGHT_MARGIN);
+        int marginBottom = (int) (metrics.heightPixels * MediaDimensions.MEDIA_BOTTOM_MARGIN);
+        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(w, h);
+        lp.setMargins(marginLeft, marginTop, marginRight, marginBottom);
+        videoView.setLayoutParams(lp);
+    }
+
+
+    public static long getDuration(String videoUrl) {
+        MediaMetadataRetriever mmr = new MediaMetadataRetriever();
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+            mmr.setDataSource(videoUrl, new HashMap<String, String>());
+        } else {
+            mmr.setDataSource(videoUrl);
+        }
+        return Long.parseLong(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
+    }
+}
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/data/VideoProvider.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/data/VideoProvider.java
new file mode 100644
index 0000000..fa317ed
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/data/VideoProvider.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback.data;
+
+import android.cts.jank.leanback.model.Movie;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Provides synthesized movie data.
+ */
+public class VideoProvider {
+    private static HashMap<String, List<Movie>> sMovieList;
+    private static HashMap<String, Movie> sMovieListById;
+
+    public static Movie getMovieById(String mediaId) {
+        return sMovieListById.get(mediaId);
+    }
+
+    public static HashMap<String, List<Movie>> getMovieList() {
+        return sMovieList;
+    }
+
+    public static HashMap<String, List<Movie>> buildMedia(int nCategories) {
+        if (null != sMovieList) {
+            return sMovieList;
+        }
+        sMovieList = new HashMap<>();
+        sMovieListById = new HashMap<>();
+
+        String title = new String();
+        String studio = new String();
+        for (int i = 0; i < nCategories; i++) {
+            String category_name = String.format("Category %d",  i);
+            List<Movie> categoryList = new ArrayList<Movie>();
+            for (int j = 0; j < 20; j++) {
+                String description = "This is description of a movie.";
+                title = String.format("Video %d-%d", i, j);
+                studio = String.format("Studio %d", (i + j) % 7);
+                Movie movie = buildMovieInfo(category_name, title, description, studio);
+                sMovieListById.put(movie.getId(), movie);
+                categoryList.add(movie);
+            }
+            sMovieList.put(category_name, categoryList);
+        }
+        return sMovieList;
+    }
+
+    private static Movie buildMovieInfo(String category,
+                                        String title,
+                                        String description,
+                                        String studio) {
+        Movie movie = new Movie();
+        movie.setId(Movie.getCount());
+        Movie.incrementCount();
+        movie.setTitle(title);
+        movie.setDescription(description);
+        movie.setStudio(studio);
+        movie.setCategory(category);
+
+        return movie;
+    }
+}
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/model/Movie.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/model/Movie.java
new file mode 100644
index 0000000..874bb00
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/model/Movie.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Movie class represents video entity with title, description, image thumbs and video url.
+ */
+public class Movie implements Parcelable {
+    static final long serialVersionUID = 727566175075960653L;
+    private static int sCount = 0;
+    private String mId;
+    private String mTitle;
+    private String mDescription;
+    private String mStudio;
+    private String mCategory;
+
+    public Movie() {
+    }
+
+    public Movie(Parcel in){
+        String[] data = new String[5];
+
+        in.readStringArray(data);
+        mId = data[0];
+        mTitle = data[1];
+        mDescription = data[2];
+        mStudio = data[3];
+        mCategory = data[4];
+    }
+
+    public static String getCount() {
+        return Integer.toString(sCount);
+    }
+
+    public static void incrementCount() {
+        sCount++;
+    }
+
+    public String getId() {
+        return mId;
+    }
+
+    public void setId(String id) {
+        mId = id;
+    }
+
+    public String getTitle() {
+        return mTitle;
+    }
+
+    public void setTitle(String title) {
+        mTitle = title;
+    }
+
+    public String getDescription() {
+        return mDescription;
+    }
+
+    public void setDescription(String description) {
+        mDescription = description;
+    }
+
+    public String getStudio() {
+        return mStudio;
+    }
+
+    public void setStudio(String studio) {
+        mStudio = studio;
+    }
+
+    public String getCategory() {
+        return mCategory;
+    }
+
+    public void setCategory(String category) {
+        mCategory = category;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeStringArray(new String[] {mId,
+                mTitle,
+                mDescription,
+                mStudio,
+                mCategory});
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder(200);
+        sb.append("Movie{");
+        sb.append("mId=" + mId);
+        sb.append(", mTitle='" + mTitle + '\'');
+        sb.append('}');
+        return sb.toString();
+    }
+
+    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
+        public Movie createFromParcel(Parcel in) {
+            return new Movie(in);
+        }
+
+        public Movie[] newArray(int size) {
+            return new Movie[size];
+        }
+    };
+}
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/CardPresenter.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/CardPresenter.java
new file mode 100644
index 0000000..9f425ca
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/CardPresenter.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback.presenter;
+
+import android.graphics.drawable.Drawable;
+import android.support.v17.leanback.widget.ImageCardView;
+import android.support.v17.leanback.widget.Presenter;
+import android.view.ViewGroup;
+
+import com.bumptech.glide.Glide;
+import android.cts.jank.leanback.R;
+import android.cts.jank.leanback.model.Movie;
+
+/**
+ * A CardPresenter is used to generate Views and bind Objects to them on demand.
+ * It contains an Image CardView
+ */
+public class CardPresenter extends Presenter {
+    private static int CARD_WIDTH = 313;
+    private static int CARD_HEIGHT = 176;
+    private static int sSelectedBackgroundColor;
+    private static int sDefaultBackgroundColor;
+    private Drawable mDefaultCardImage;
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent) {
+        sDefaultBackgroundColor = parent.getResources().getColor(R.color.default_background, null);
+        sSelectedBackgroundColor =
+                parent.getResources().getColor(R.color.selected_background, null);
+        mDefaultCardImage = parent.getResources().getDrawable(R.drawable.movie, null);
+
+        ImageCardView cardView = new ImageCardView(parent.getContext()) {
+            @Override
+            public void setSelected(boolean selected) {
+                updateCardBackgroundColor(this, selected);
+                super.setSelected(selected);
+            }
+        };
+
+        cardView.setFocusable(true);
+        cardView.setFocusableInTouchMode(true);
+        updateCardBackgroundColor(cardView, false);
+        return new ViewHolder(cardView);
+    }
+
+    private static void updateCardBackgroundColor(ImageCardView view, boolean selected) {
+        int color = selected ? sSelectedBackgroundColor : sDefaultBackgroundColor;
+        // Both background colors should be set because the view's background is temporarily visible
+        // during animations.
+        view.setBackgroundColor(color);
+        view.findViewById(R.id.info_field).setBackgroundColor(color);
+    }
+
+    @Override
+    public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
+        Movie movie = (Movie) item;
+        ImageCardView cardView = (ImageCardView) viewHolder.view;
+
+        cardView.setTitleText(movie.getTitle());
+        cardView.setContentText(movie.getStudio());
+        cardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT);
+        Glide.with(viewHolder.view.getContext())
+                .load(R.drawable.gradation)
+                .centerCrop()
+                .error(mDefaultCardImage)
+                .into(cardView.getMainImageView());
+    }
+
+    @Override
+    public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) {
+        ImageCardView cardView = (ImageCardView) viewHolder.view;
+        // Remove references to images so that the garbage collector can free up memory
+        cardView.setBadgeImage(null);
+        cardView.setMainImage(null);
+    }
+}
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/GridItemPresenter.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/GridItemPresenter.java
new file mode 100644
index 0000000..4084383
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/GridItemPresenter.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback.presenter;
+
+import android.graphics.Color;
+import android.support.v17.leanback.widget.Presenter;
+import android.view.Gravity;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import android.cts.jank.leanback.R;
+import android.cts.jank.leanback.ui.MainFragment;
+
+public class GridItemPresenter extends Presenter {
+    private static int GRID_ITEM_WIDTH = 200;
+    private static int GRID_ITEM_HEIGHT = 200;
+
+    private MainFragment mainFragment;
+
+    public GridItemPresenter(MainFragment mainFragment) {
+        this.mainFragment = mainFragment;
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent) {
+        TextView view = new TextView(parent.getContext());
+        view.setLayoutParams(new ViewGroup.LayoutParams(GRID_ITEM_WIDTH, GRID_ITEM_HEIGHT));
+        view.setFocusable(true);
+        view.setFocusableInTouchMode(true);
+        view.setBackgroundColor(
+            mainFragment.getResources().getColor(R.color.default_background, null));
+        view.setTextColor(Color.WHITE);
+        view.setGravity(Gravity.CENTER);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder viewHolder, Object item) {
+        ((TextView) viewHolder.view).setText((String) item);
+    }
+
+    @Override
+    public void onUnbindViewHolder(ViewHolder viewHolder) {
+    }
+}
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/IconHeaderItemPresenter.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/IconHeaderItemPresenter.java
new file mode 100644
index 0000000..42e4c0c
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/presenter/IconHeaderItemPresenter.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback.presenter;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.support.v17.leanback.widget.HeaderItem;
+import android.support.v17.leanback.widget.ListRow;
+import android.support.v17.leanback.widget.Presenter;
+import android.support.v17.leanback.widget.RowHeaderPresenter;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import android.cts.jank.leanback.R;
+
+public class IconHeaderItemPresenter extends RowHeaderPresenter {
+    private float mUnselectedAlpha;
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup viewGroup) {
+        mUnselectedAlpha = viewGroup.getResources()
+                .getFraction(R.fraction.lb_browse_header_unselect_alpha, 1, 1);
+        LayoutInflater inflater = (LayoutInflater) viewGroup.getContext()
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+        View view = inflater.inflate(R.layout.icon_header_item, null);
+
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object o) {
+        HeaderItem headerItem = ((ListRow) o).getHeaderItem();
+        View rootView = viewHolder.view;
+
+        ImageView iconView = (ImageView) rootView.findViewById(R.id.header_icon);
+        Drawable icon = rootView.getResources().getDrawable(R.drawable.android_header, null);
+        iconView.setImageDrawable(icon);
+
+        TextView label = (TextView) rootView.findViewById(R.id.header_label);
+        label.setText(headerItem.getName());
+    }
+
+    @Override
+    public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) {
+    }
+
+    // TODO: TEMP - remove me when leanback onCreateViewHolder no longer sets the mUnselectAlpha,AND
+    // also assumes the xml inflation will return a RowHeaderView
+    @Override
+    protected void onSelectLevelChanged(RowHeaderPresenter.ViewHolder holder) {
+        // this is a temporary fix
+        holder.view.setAlpha(mUnselectedAlpha + holder.getSelectLevel() *
+                (1.0f - mUnselectedAlpha));
+    }
+}
\ No newline at end of file
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/ui/MainActivity.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/ui/MainActivity.java
new file mode 100644
index 0000000..fb27fa1
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/ui/MainActivity.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback.ui;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.cts.jank.leanback.R;
+
+/**
+ * MainActivity class that loads MainFragment
+ */
+public class MainActivity extends Activity {
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    @Override
+    public boolean onSearchRequested() {
+        return false;
+    }
+}
diff --git a/tests/leanbackjank/app/src/android/cts/jank/leanback/ui/MainFragment.java b/tests/leanbackjank/app/src/android/cts/jank/leanback/ui/MainFragment.java
new file mode 100644
index 0000000..e645f6b
--- /dev/null
+++ b/tests/leanbackjank/app/src/android/cts/jank/leanback/ui/MainFragment.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.jank.leanback.ui;
+
+import android.content.Intent;
+import android.content.res.Resources.Theme;
+import android.cts.jank.leanback.IntentKeys;
+import android.cts.jank.leanback.R;
+import android.cts.jank.leanback.data.VideoProvider;
+import android.cts.jank.leanback.model.Movie;
+import android.cts.jank.leanback.presenter.CardPresenter;
+import android.cts.jank.leanback.presenter.GridItemPresenter;
+import android.cts.jank.leanback.presenter.IconHeaderItemPresenter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.v17.leanback.app.BackgroundManager;
+import android.support.v17.leanback.app.BrowseFragment;
+import android.support.v17.leanback.widget.ArrayObjectAdapter;
+import android.support.v17.leanback.widget.HeaderItem;
+import android.support.v17.leanback.widget.ListRow;
+import android.support.v17.leanback.widget.ListRowPresenter;
+import android.support.v17.leanback.widget.Presenter;
+import android.support.v17.leanback.widget.PresenterSelector;
+import android.util.DisplayMetrics;
+import android.view.View;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * Main class to show BrowseFragment with header and rows of videos
+ */
+public class MainFragment extends BrowseFragment {
+    private static final int NUM_ROWS = 20;
+    private final Handler mHandler = new Handler();
+    private Timer mAutoScrollTimer;
+    private int mAutoScrollCount;
+
+    private ArrayObjectAdapter mRowsAdapter;
+    private DisplayMetrics mMetrics;
+    private BackgroundManager mBackgroundManager;
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        buildRowAdapterItems(VideoProvider.buildMedia(NUM_ROWS));
+        prepareBackgroundManager();
+        setupUIElements();
+        setupEventListeners();
+        Intent intent = getActivity().getIntent();
+        if (intent.getExtras() != null) {
+            int initialDelay = intent.getExtras().getInt(IntentKeys.SCROLL_DELAY);
+            int scrollCount = intent.getExtras().getInt(IntentKeys.SCROLL_COUNT);
+            int scrollInterval = intent.getExtras().getInt(IntentKeys.SCROLL_INTERVAL);
+            if (scrollInterval != 0 && scrollCount != 0) {
+                startAutoScrollTimer(initialDelay, scrollInterval, scrollCount);
+            }
+        }
+    }
+
+    @Override
+    public void onDestroy() {
+        if (null != mAutoScrollTimer) {
+            mAutoScrollTimer.cancel();
+            mAutoScrollTimer = null;
+        }
+        super.onDestroy();
+    }
+
+    @Override
+    public void onStop() {
+        mBackgroundManager.release();
+        super.onStop();
+    }
+
+    private void prepareBackgroundManager() {
+        mBackgroundManager = BackgroundManager.getInstance(getActivity());
+        mBackgroundManager.attach(getActivity().getWindow());
+        mBackgroundManager.setDrawable(getActivity().getResources().getDrawable(
+                R.drawable.default_background, getContext().getTheme()));
+        mMetrics = new DisplayMetrics();
+        getActivity().getWindowManager().getDefaultDisplay().getMetrics(mMetrics);
+    }
+
+    private void setupUIElements() {
+        setBadgeDrawable(getActivity().getResources().getDrawable(
+                R.drawable.videos_by_google_banner, getContext().getTheme()));
+        setTitle(getString(R.string.browse_title));
+        setHeadersState(HEADERS_ENABLED);
+        setHeadersTransitionOnBackEnabled(true);
+
+        Theme theme = getContext().getTheme();
+        setBrandColor(getResources().getColor(R.color.fastlane_background, theme));
+
+        setSearchAffordanceColor(getResources().getColor(R.color.search_opaque, theme));
+
+        setHeaderPresenterSelector(new PresenterSelector() {
+            @Override
+            public Presenter getPresenter(Object o) {
+                return new IconHeaderItemPresenter();
+            }
+        });
+    }
+
+    private void setupEventListeners() {
+        // Add lister to show the search button.
+        setOnSearchClickedListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+            }
+        });
+    }
+
+    public void buildRowAdapterItems(HashMap<String, List<Movie>> data) {
+        mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
+        CardPresenter cardPresenter = new CardPresenter();
+
+        int i = 0;
+
+        for (Map.Entry<String, List<Movie>> entry : data.entrySet()) {
+            ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);
+            List<Movie> list = entry.getValue();
+
+            for (int j = 0; j < list.size(); j++) {
+                listRowAdapter.add(list.get(j));
+            }
+            HeaderItem header = new HeaderItem(i, entry.getKey());
+            i++;
+            mRowsAdapter.add(new ListRow(header, listRowAdapter));
+        }
+
+        HeaderItem gridHeader = new HeaderItem(i, getString(R.string.settings));
+
+        GridItemPresenter gridPresenter = new GridItemPresenter(this);
+        ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(gridPresenter);
+        for (int j = 0; j < 10; j++) {
+            gridRowAdapter.add(getString(R.string.grid_item_template, j));
+        }
+        mRowsAdapter.add(new ListRow(gridHeader, gridRowAdapter));
+
+        setAdapter(mRowsAdapter);
+    }
+
+    private class UpdateAutoScrollTask extends TimerTask {
+        @Override
+        public void run() {
+            mHandler.post(new Runnable() {
+                @Override
+                public void run() {
+                    if (mAutoScrollCount == 0) {
+                      mAutoScrollTimer.cancel();
+                      return;
+                    }
+                    if (mAutoScrollCount % 2 == 0) {
+                      setSelectedPosition(NUM_ROWS - 1);
+                    } else {
+                      setSelectedPosition(0);
+                    }
+                    mAutoScrollCount--;
+                }
+            });
+        }
+    }
+
+    private void startAutoScrollTimer(int initialDelay, int interval, int count) {
+        if (null != mAutoScrollTimer) {
+            mAutoScrollTimer.cancel();
+        }
+        mAutoScrollCount = count;
+        mAutoScrollTimer = new Timer();
+        mAutoScrollTimer.schedule(new UpdateAutoScrollTask(), initialDelay, interval);
+    }
+
+    public void selectRow(int row) {
+        setSelectedPosition(row);
+    }
+}
diff --git a/tests/leanbackjank/src/android/cts/leanbackjank/CtsDeviceLeanback.java b/tests/leanbackjank/src/android/cts/leanbackjank/CtsDeviceLeanback.java
new file mode 100644
index 0000000..a86a707
--- /dev/null
+++ b/tests/leanbackjank/src/android/cts/leanbackjank/CtsDeviceLeanback.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.leanbackjank;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.cts.jank.leanback.IntentKeys;
+import android.os.SystemClock;
+import android.support.test.jank.GfxMonitor;
+import android.support.test.jank.JankTest;
+import android.support.test.jank.WindowContentFrameStatsMonitor;
+import android.support.test.uiautomator.By;
+import android.support.test.uiautomator.Until;
+import android.util.Log;
+
+public class CtsDeviceLeanback extends CtsJankTestBase {
+    private static final String TAG = "CtsDeviceLeanback";
+    private static final int MILLIS_PER_SECOND = 1000;
+    private static final long WAIT_TIMEOUT = 5 * MILLIS_PER_SECOND;
+    private static final int SCROLL_COUNT = 100;
+    private static final int SCROLL_INTERVAL_MILLIS = 200;
+    private static final int PRE_SCROLL_DELAY_MILLIS = 0;
+    private static final int PRE_SCROLL_IDLE_TIME = 2 * MILLIS_PER_SECOND;
+    private static final int SAMPLING_DURATION_SECONDS = 3;
+    private static final int SAMPLING_DURATION_MILLIS =
+            SAMPLING_DURATION_SECONDS * MILLIS_PER_SECOND;
+    private final static String APP_PACKAGE = "android.cts.jank.leanback";
+    private final static String JAVA_PACKAGE = "android.cts.jank.leanback.ui";
+    private final static String CLASS = JAVA_PACKAGE + ".MainActivity";
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.setComponent(new ComponentName(APP_PACKAGE, CLASS));
+
+        // Trigger automated scroll of the helper app.
+        intent.putExtra(IntentKeys.SCROLL_DELAY, PRE_SCROLL_DELAY_MILLIS);
+        intent.putExtra(IntentKeys.SCROLL_COUNT, SCROLL_COUNT);
+        intent.putExtra(IntentKeys.SCROLL_INTERVAL, SCROLL_INTERVAL_MILLIS);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        getInstrumentation().getTargetContext().startActivity(intent);
+        if (!getUiDevice().wait(Until.hasObject(By.pkg(APP_PACKAGE)), WAIT_TIMEOUT)) {
+            fail("Test helper app package not found on device");
+        }
+
+        // Wait until scroll animation starts.
+        SystemClock.sleep(PRE_SCROLL_IDLE_TIME);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        getUiDevice().pressHome();
+        super.tearDown();
+    }
+
+    // Requires at least 30 fps on average to pass the test.
+    @JankTest(expectedFrames = 30 * SAMPLING_DURATION_SECONDS, defaultIterationCount = 2)
+    @GfxMonitor(processName = APP_PACKAGE)
+    @WindowContentFrameStatsMonitor
+    public void testScrollingByTimer() {
+        SystemClock.sleep(SAMPLING_DURATION_MILLIS);
+    }
+}
diff --git a/tests/leanbackjank/src/android/cts/leanbackjank/CtsJankTestBase.java b/tests/leanbackjank/src/android/cts/leanbackjank/CtsJankTestBase.java
new file mode 100644
index 0000000..4de0702
--- /dev/null
+++ b/tests/leanbackjank/src/android/cts/leanbackjank/CtsJankTestBase.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.cts.leanbackjank;
+
+import android.cts.util.DeviceReportLog;
+import android.os.Bundle;
+import android.support.test.jank.GfxMonitor;
+import android.support.test.jank.JankTestBase;
+import android.support.test.jank.WindowContentFrameStatsMonitor;
+import android.support.test.uiautomator.UiDevice;
+
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+
+public abstract class CtsJankTestBase extends JankTestBase {
+
+    private UiDevice mDevice;
+    private DeviceReportLog mLog;
+
+    private void printIntValueWithKey(String source, Bundle metrics, String key,
+            ResultType resultType, ResultUnit resultUnit) {
+        if (!metrics.containsKey(key)) {
+            return;
+        }
+        mLog.printValue(source, key, metrics.getInt(key), resultType, resultUnit);
+    }
+
+    private void printDoubleValueWithKey(String source, Bundle metrics, String key,
+            ResultType resultType, ResultUnit resultUnit) {
+        if (!metrics.containsKey(key)) {
+            return;
+        }
+        mLog.printValue(source, key, metrics.getDouble(key), resultType, resultUnit);
+    }
+
+    @Override
+    public void afterTest(Bundle metrics) {
+        String source = String.format("%s#%s", getClass().getCanonicalName(), getName());
+        printDoubleValueWithKey(source, metrics, WindowContentFrameStatsMonitor.KEY_AVG_FPS,
+                ResultType.HIGHER_BETTER, ResultUnit.FPS);
+        printDoubleValueWithKey(source, metrics,
+                WindowContentFrameStatsMonitor.KEY_AVG_LONGEST_FRAME,
+                ResultType.LOWER_BETTER, ResultUnit.MS);
+        printIntValueWithKey(source, metrics, WindowContentFrameStatsMonitor.KEY_MAX_NUM_JANKY,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        mLog.printSummary(WindowContentFrameStatsMonitor.KEY_AVG_NUM_JANKY,
+                metrics.getDouble(WindowContentFrameStatsMonitor.KEY_AVG_NUM_JANKY),
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_NUM_JANKY,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_FRAME_TIME_90TH_PERCENTILE,
+                ResultType.LOWER_BETTER, ResultUnit.MS);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_FRAME_TIME_95TH_PERCENTILE,
+                ResultType.LOWER_BETTER, ResultUnit.MS);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_FRAME_TIME_99TH_PERCENTILE,
+                ResultType.LOWER_BETTER, ResultUnit.MS);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_MISSED_VSYNC,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_SLOW_UI_THREAD,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_SLOW_BITMAP_UPLOADS,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_SLOW_DRAW,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+        printDoubleValueWithKey(source, metrics, GfxMonitor.KEY_AVG_HIGH_INPUT_LATENCY,
+                ResultType.LOWER_BETTER, ResultUnit.COUNT);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mLog = new DeviceReportLog();
+        // fix device orientation
+        mDevice = UiDevice.getInstance(getInstrumentation());
+        mDevice.setOrientationNatural();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mLog.deliverReportToHost(getInstrumentation());
+        // restore device orientation
+        mDevice.unfreezeRotation();
+        super.tearDown();
+    }
+
+    protected UiDevice getUiDevice() {
+        return mDevice;
+    }
+}
diff --git a/tests/tests/accounts/Android.mk b/tests/tests/accounts/Android.mk
index 1579822..6ed35c6 100644
--- a/tests/tests/accounts/Android.mk
+++ b/tests/tests/accounts/Android.mk
@@ -21,7 +21,7 @@
 # and when built explicitly put it in the data partition
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := CtsAccountTestsCommon ctstestrunner
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
@@ -30,3 +30,4 @@
 LOCAL_SDK_VERSION := current
 
 include $(BUILD_CTS_PACKAGE)
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/accounts/AndroidManifest.xml b/tests/tests/accounts/AndroidManifest.xml
index 93529d0..d882690 100644
--- a/tests/tests/accounts/AndroidManifest.xml
+++ b/tests/tests/accounts/AndroidManifest.xml
@@ -18,11 +18,9 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.accounts.cts">
 
-    <!-- Used for AccountManagerService test, don't delete this permission -->
-    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
-    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
-    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
-    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
+    <!-- Don't need GET_ACCOUNTS because share a Uid with the relevant
+         authenticators -->
+
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
 
     <application>
diff --git a/tests/tests/accounts/AndroidTest.xml b/tests/tests/accounts/AndroidTest.xml
new file mode 100644
index 0000000..3e29c9c
--- /dev/null
+++ b/tests/tests/accounts/AndroidTest.xml
@@ -0,0 +1,18 @@
+<!-- Copyright (C) 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.
+-->
+<configuration description="Test module config for Account apis">
+    <include name="common-config" />
+    <option name="cts-apk-installer:test-file-name" value="CtsUnaffiliatedAccountAuthenticators.apk" />
+</configuration>
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.mk b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.mk
new file mode 100644
index 0000000..cb504da
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.mk
@@ -0,0 +1,42 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# LOCAL_MODULE_TAGS := tests
+
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+        ctstestrunner \
+	CtsAccountTestsCommon
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := CtsUnaffiliatedAccountAuthenticators
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/AndroidManifest.xml b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/AndroidManifest.xml
new file mode 100644
index 0000000..c32f89f
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/AndroidManifest.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2009 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.accounts.cts.unaffiliated">
+
+    <!-- Used for AccountManagerService test, don't delete this permission -->
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+
+    <application>
+
+        <activity
+                android:name="android.accounts.cts.common.TestAuthenticatorActivity"
+                android:exported="true" />
+
+        <provider
+                android:name="android.accounts.cts.common.AuthenticatorContentProvider"
+                android:authorities="android.accounts.cts.unaffiliated.authenticators.provider"
+                android:exported="true" />
+
+        <service
+                android:name=".StdAccountAuthService"
+                android:exported="false">
+            <intent-filter>
+                <action android:name="android.accounts.AccountAuthenticator" />
+            </intent-filter>
+            <meta-data android:name="android.accounts.AccountAuthenticator"
+                       android:resource="@xml/standard_authenticator" />
+        </service>
+<!--
+        <service android:name=".CustomAccountAuthService" android:exported="false">
+            <intent-filter>
+                <action android:name="android.accounts.AccountAuthenticator" />
+            </intent-filter>
+            <meta-data android:name="android.accounts.AccountAuthenticator"
+                       android:resource="@xml/custom_authenticator" />
+        </service>
+        -->
+
+    </application>
+</manifest>
+
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_minitab_selected.png b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_minitab_selected.png
new file mode 100644
index 0000000..c730050
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_minitab_selected.png
Binary files differ
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_minitab_selected_custom_account.png b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_minitab_selected_custom_account.png
new file mode 100644
index 0000000..3fbbc94
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_minitab_selected_custom_account.png
Binary files differ
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_selected.png b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_selected.png
new file mode 100644
index 0000000..72a065c
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_selected.png
Binary files differ
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_selected_custom_account.png b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_selected_custom_account.png
new file mode 100644
index 0000000..70e35c0
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/drawable/ic_cts_selected_custom_account.png
Binary files differ
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/values/strings.xml
similarity index 66%
copy from tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java
copy to tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/values/strings.xml
index accdcaf..442669b 100644
--- a/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/values/strings.xml
@@ -1,5 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
 /*
- * Copyright 2015 The Android Open Source Project
+ * Copyright (C) 2009 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.
@@ -13,13 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+-->
 
-package android.hardware.input.cts;
-
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-public interface InputCallback {
-    public void onKeyEvent(KeyEvent ev);
-    public void onMotionEvent(MotionEvent ev);
-}
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for this package -->
+    <string name="label">Android CTS - Account</string>
+</resources>
\ No newline at end of file
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/xml/custom_authenticator.xml b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/xml/custom_authenticator.xml
new file mode 100644
index 0000000..3485f76
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/xml/custom_authenticator.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, 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.
+ */
+-->
+
+<!-- The attributes in this XML file provide configuration information -->
+<!-- for the Account Manager. -->
+
+<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:accountType="android.accounts.test.custom"
+    android:icon="@drawable/ic_cts_selected_custom_account"
+    android:smallIcon="@drawable/ic_cts_minitab_selected_custom_account"
+    android:customTokens="true"
+    android:label="@string/label"
+/>
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/xml/standard_authenticator.xml b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/xml/standard_authenticator.xml
new file mode 100644
index 0000000..0c843b9
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/res/xml/standard_authenticator.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2009, 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.
+ */
+-->
+
+<!-- The attributes in this XML file provide configuration information -->
+<!-- for the Account Manager. -->
+
+<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:accountType="android.accounts.test.standard.unaffiliated"
+    android:icon="@drawable/ic_cts_selected"
+    android:smallIcon="@drawable/ic_cts_minitab_selected"
+    android:label="@string/label"
+/>
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/src/android/accounts/cts/unaffiliated/StdAccountAuthService.java b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/src/android/accounts/cts/unaffiliated/StdAccountAuthService.java
new file mode 100644
index 0000000..de87ac7
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/src/android/accounts/cts/unaffiliated/StdAccountAuthService.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.accounts.cts.unaffiliated;
+
+import android.accounts.cts.common.Fixtures;
+import android.accounts.cts.common.TestAccountAuthenticator;
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+/**
+ * a basic Mock Service for wrapping the MockAccountAuthenticator
+ */
+public class StdAccountAuthService extends Service {
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        TestAccountAuthenticator auth =
+                new TestAccountAuthenticator(this, Fixtures.TYPE_STANDARD_UNAFFILIATED);
+        return auth.getIBinder();
+    }
+}
diff --git a/tests/tests/accounts/common/Android.mk b/tests/tests/accounts/common/Android.mk
new file mode 100644
index 0000000..cac9c5e
--- /dev/null
+++ b/tests/tests/accounts/common/Android.mk
@@ -0,0 +1,36 @@
+# Copyright (C) 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.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+# Includes all the java files, and explicitly declares any aidl files
+LOCAL_SRC_FILES := \
+    $(call all-java-files-under, src) \
+    $(call all-Iaidl-files-under, src)
+
+LOCAL_AIDL_INCLUDES += $(LOCAL_PATH)/src
+
+LOCAL_MODULE:= CtsAccountTestsCommon
+
+LOCAL_SDK_VERSION := current
+
+# Build the actual static library
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/accounts/common/AndroidManifest.xml b/tests/tests/accounts/common/AndroidManifest.xml
new file mode 100644
index 0000000..6e6d107
--- /dev/null
+++ b/tests/tests/accounts/common/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.accounts.test.shared">
+    <uses-sdk
+        android:minSdkVersion="4" />
+    <application />
+</manifest>
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/AuthenticatorContentProvider.java b/tests/tests/accounts/common/src/android/accounts/cts/common/AuthenticatorContentProvider.java
new file mode 100644
index 0000000..b52dae3
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/AuthenticatorContentProvider.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.accounts.cts.common;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Parcelable;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+public class AuthenticatorContentProvider extends ContentProvider {
+
+    public static final String AUTHORITY =
+            "android.accounts.cts.unaffiliated.authenticators.provider";
+
+    public static final int RESULT_SUCCESS = 1;
+    public static final int RESULT_FAIL = 2;
+
+    public static final String METHOD_GET = "get";
+    public static final String METHOD_SETUP = "setup";
+    public static final String METHOD_TEARDOWN = "setup";
+
+    public static final int ACTION_GET = 1;
+    public static final int ACTION_SETUP = 2;
+    public static final int ACTION_TEARDOWN = 3;
+
+    public static final int ARG_UNAFFILIATED = 10;
+    public static final int ARG_AFFILIATED = 11;
+
+    public static final String KEY_CALLBACK = "callback";
+    public static final String KEY_TX = "tx";
+
+    public static final AtomicReference<Parcelable> sLastTx = new AtomicReference<>();
+
+    public static void setTx(Parcelable tx) {
+        sLastTx.set(tx);
+    }
+
+    @Override
+    // public void handleMessage(Message msg) {
+    public Bundle call(String method, String arg, Bundle extras) {
+        super.call(method, arg, extras);
+        Bundle result = new Bundle();
+        if (METHOD_GET.equals(method)) {
+            result.putParcelable(KEY_TX, sLastTx.get());
+            return result;
+        } else if (METHOD_SETUP.equals(method)) {
+            setup();
+            return result;
+        } else if (METHOD_TEARDOWN.equals(method)) {
+            teardown();
+            return result;
+        } else {
+            throw new IllegalArgumentException("Unrecognized method!");
+        }
+    }
+
+    public void setup() {
+        Context context = getContext();
+        AccountManager am = AccountManager.get(context);
+        AuthenticatorDescription[] authenticators = am.getAuthenticatorTypes();
+        for (AuthenticatorDescription a : authenticators) {
+            /*
+             * Populate relevant test information for authenticators in the
+             * same package as the TestAuthenticatorSupportHandler.
+             */
+            if (a.packageName.equals(context.getPackageName())) {
+                for (String name : Fixtures.getFixtureAccountNames()) {
+                    Account account = new Account(name, a.type);
+                    am.addAccountExplicitly(account, Fixtures.PREFIX_PASSWORD + name, null);
+                }
+            }
+        }
+    }
+
+    public void teardown() {
+        Context context = getContext();
+        AccountManager am = AccountManager.get(context);
+        AuthenticatorDescription[] authenticators = am.getAuthenticatorTypes();
+        for (AuthenticatorDescription a : authenticators) {
+            /*
+             * Populate relevant test information for authenticators in the
+             * same package as the TestAuthenticatorSupportHandler.
+             */
+            if (a.packageName.equals(context.getPackageName())) {
+                Account[] accountsToRemove = am.getAccountsByType(a.type);
+                for (Account account : accountsToRemove) {
+                    am.removeAccountExplicitly(account);
+                }
+            }
+        }
+    }
+
+    @Override
+    public boolean onCreate() {
+        return true;   
+    }
+
+    @Override
+    public Cursor query(
+            Uri uri, 
+            String[] projection,
+            String selection,
+            String[] selectionArgs,
+            String sortOrder) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        throw new UnsupportedOperationException();
+    }
+}
+
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/Fixtures.java b/tests/tests/accounts/common/src/android/accounts/cts/common/Fixtures.java
new file mode 100644
index 0000000..f8636a0
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/Fixtures.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.accounts.cts.common;
+
+import android.accounts.Account;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Constants shared amongst account hostside tests.
+ */
+public final class Fixtures {
+
+    public static final String TYPE_CUSTOM = "android.accounts.test.custom";
+    public static final String TYPE_STANDARD = "android.accounts.test.standard";
+
+    public static final String TYPE_STANDARD_UNAFFILIATED =
+            "android.accounts.test.standard.unaffiliated";
+
+    public static final String PREFIX_TOKEN = "token:";
+    public static final String PREFIX_PASSWORD = "password:";
+
+    public static final String SUFFIX_NAME_FIXTURE = "fixture.com";
+    public static final String SUFFIX_NAME_TEST = "test.com";
+
+    public static final String PREFIX_NAME_SUCCESS = "success_on_return";
+    public static final String PREFIX_NAME_ERROR = "error";
+    public static final String PREFIX_NAME_INTERVENE = "intervene";
+
+    private static final String[] accountNamePrefixes = new String[] {
+            PREFIX_NAME_SUCCESS,
+            PREFIX_NAME_ERROR,
+            PREFIX_NAME_INTERVENE
+    };
+
+    public static final Account ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS = new Account(
+            PREFIX_NAME_SUCCESS + "@" + SUFFIX_NAME_FIXTURE,
+            TYPE_STANDARD_UNAFFILIATED);
+
+    public static List<String> getFixtureAccountNames() {
+        List<String> accountNames = new ArrayList<>(accountNamePrefixes.length);
+        for (String prefix : accountNamePrefixes) {
+            accountNames.add(prefix + "@" + SUFFIX_NAME_FIXTURE);
+        }
+        return accountNames;
+    }
+
+    public static final int TEST_SUPPORT_RESULT_SUCCESS = 1;
+    public static final int TEST_SUPPORT_RESULT_FAIL = 2;
+
+    public static final String KEY_ACCOUNT_NAME = "test:account_name";
+
+    public static final String KEY_CALLBACK = "test:callback";
+    public static final String KEY_CALLBACK_REQUIRED = "test:callback_required";
+    public static final String KEY_RESULT = "test:result";
+    public static final String KEY_TOKEN_EXPIRY = "test:token_duration";
+
+    private Fixtures() {}
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/TestAccountAuthenticator.java b/tests/tests/accounts/common/src/android/accounts/cts/common/TestAccountAuthenticator.java
new file mode 100644
index 0000000..1fac1ea
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/TestAccountAuthenticator.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.accounts.cts.common;
+
+import android.accounts.AbstractAccountAuthenticator;
+import android.accounts.Account;
+import android.accounts.AccountAuthenticatorResponse;
+import android.accounts.AccountManager;
+import android.accounts.NetworkErrorException;
+import android.accounts.cts.common.tx.AddAccountTx;
+import android.accounts.cts.common.tx.ConfirmCredentialsTx;
+import android.accounts.cts.common.tx.GetAuthTokenLabelTx;
+import android.accounts.cts.common.tx.GetAuthTokenTx;
+import android.accounts.cts.common.tx.HasFeaturesTx;
+import android.accounts.cts.common.tx.UpdateCredentialsTx;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import java.util.Arrays;
+
+public class TestAccountAuthenticator extends AbstractAccountAuthenticator {
+
+    private final String mAccountType;
+    private final Context mContext;
+    private volatile int mCounter = 0;
+
+    public TestAccountAuthenticator(Context context, String accountType) {
+        super(context);
+        mContext = context;
+        mAccountType = accountType;
+    }
+
+    @Override
+    public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
+        throw new UnsupportedOperationException(
+                "editProperties should be tested using the MockAuthenticator");
+    }
+
+    @Override
+    public Bundle addAccount(
+            AccountAuthenticatorResponse response,
+            String accountType,
+            String authTokenType,
+            String[] requiredFeatures,
+            Bundle options) throws NetworkErrorException {
+        if (!mAccountType.equals(accountType)) {
+            throw new IllegalArgumentException("Request to the wrong authenticator!");
+        }
+        String accountName = null;
+        boolean isCallbackRequired = false;
+        if (options != null) {
+            accountName = options.getString(Fixtures.KEY_ACCOUNT_NAME);
+            isCallbackRequired = options.getBoolean(Fixtures.KEY_CALLBACK_REQUIRED, false);
+        }
+        Bundle result = new Bundle();
+        AuthenticatorContentProvider.setTx(
+                new AddAccountTx(accountType, authTokenType, requiredFeatures, options, result));
+        if (accountName.startsWith(Fixtures.PREFIX_NAME_SUCCESS)) {
+            // fill bundle with a success result.
+            result.putString(AccountManager.KEY_ACCOUNT_NAME, accountName);
+            result.putString(AccountManager.KEY_ACCOUNT_TYPE, mAccountType);
+        } else if (accountName.startsWith(Fixtures.PREFIX_NAME_INTERVENE)) {
+            // Specify data to be returned by the eventual activity.
+            Intent eventualActivityResultData = new Intent();
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, accountName);
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, accountType);
+            // Fill result with Intent.
+            Intent intent = new Intent(mContext, TestAuthenticatorActivity.class);
+            intent.putExtra(Fixtures.KEY_RESULT, eventualActivityResultData);
+            intent.putExtra(Fixtures.KEY_CALLBACK, response);
+
+            result.putParcelable(AccountManager.KEY_INTENT, intent);
+        } else {
+            // fill with error
+            int errorCode = AccountManager.ERROR_CODE_INVALID_RESPONSE;
+            String errorMsg = "Default Error Message";
+            if (options != null) {
+                errorCode = options.getInt(AccountManager.KEY_ERROR_CODE);
+                errorMsg = options.getString(AccountManager.KEY_ERROR_MESSAGE);
+            }
+            result.putInt(AccountManager.KEY_ERROR_CODE, errorCode);
+            result.putString(AccountManager.KEY_ERROR_MESSAGE, errorMsg);
+        }
+
+        try {
+            return (isCallbackRequired) ? null : result;
+        } finally {
+            if (isCallbackRequired) {
+                response.onResult(result);
+            }
+        }
+    }
+
+    @Override
+    public Bundle confirmCredentials(
+            AccountAuthenticatorResponse response,
+            Account account,
+            Bundle options) throws NetworkErrorException {
+        if (!mAccountType.equals(account.type)) {
+            throw new IllegalArgumentException("Request to the wrong authenticator!");
+        }
+        Bundle result = new Bundle();
+        AuthenticatorContentProvider.setTx(
+                new ConfirmCredentialsTx(account, options, result));
+
+        boolean isCallbackRequired =
+                options != null && options.getBoolean(Fixtures.KEY_CALLBACK_REQUIRED);
+        if (account.name.startsWith(Fixtures.PREFIX_NAME_SUCCESS)) {
+            // fill bundle with a success result.
+            result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true);
+            result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
+            result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+        } else if (account.name.startsWith(Fixtures.PREFIX_NAME_INTERVENE)) {
+            // Specify data to be returned by the eventual activity.
+            Intent eventualActivityResultData = new Intent();
+            eventualActivityResultData.putExtra(AccountManager.KEY_BOOLEAN_RESULT, true);
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name);
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+
+            // Fill result with Intent.
+            Intent intent = new Intent(mContext, TestAuthenticatorActivity.class);
+            intent.putExtra(Fixtures.KEY_RESULT, eventualActivityResultData);
+            intent.putExtra(Fixtures.KEY_CALLBACK, response);
+
+            result.putParcelable(AccountManager.KEY_INTENT, intent);
+        } else {
+            // fill with error
+            // fill with error
+            int errorCode = AccountManager.ERROR_CODE_INVALID_RESPONSE;
+            String errorMsg = "Default Error Message";
+            if (options != null) {
+                errorCode = options.getInt(AccountManager.KEY_ERROR_CODE);
+                errorMsg = options.getString(AccountManager.KEY_ERROR_MESSAGE);
+            }
+            result.putInt(AccountManager.KEY_ERROR_CODE, errorCode);
+            result.putString(AccountManager.KEY_ERROR_MESSAGE, errorMsg);
+        }
+
+        try {
+            return (isCallbackRequired) ? null : result;
+        } finally {
+            if (isCallbackRequired) {
+                response.onResult(result);
+            }
+        }
+    }
+
+    @Override
+    public Bundle getAuthToken(
+            AccountAuthenticatorResponse response,
+            Account account,
+            String authTokenType,
+            Bundle options) throws NetworkErrorException {
+        if (!mAccountType.equals(account.type)) {
+            throw new IllegalArgumentException("Request to the wrong authenticator!");
+        }
+        Bundle result = new Bundle();
+        AuthenticatorContentProvider.setTx(
+                new GetAuthTokenTx(account, authTokenType, options, result));
+        boolean isCallbackRequired =
+                options != null && options.getBoolean(Fixtures.KEY_CALLBACK_REQUIRED);
+        long expiryMillis = (options == null) ? 0 : options.getLong(Fixtures.KEY_TOKEN_EXPIRY);
+        if (account.name.startsWith(Fixtures.PREFIX_NAME_SUCCESS)) {
+            // fill bundle with a success result.
+            result.putString(
+                    AccountManager.KEY_AUTHTOKEN, Fixtures.PREFIX_TOKEN + mCounter++);
+            result.putLong(
+                    AbstractAccountAuthenticator.KEY_CUSTOM_TOKEN_EXPIRY,
+                    expiryMillis);
+            result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
+            result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+        } else if (account.name.startsWith(Fixtures.PREFIX_NAME_INTERVENE)) {
+            // Specify data to be returned by the eventual activity.
+            Intent eventualActivityResultData = new Intent();
+            eventualActivityResultData.putExtra(
+                    AccountManager.KEY_AUTHTOKEN, Fixtures.PREFIX_TOKEN + mCounter++);
+            eventualActivityResultData.putExtra(
+                    AbstractAccountAuthenticator.KEY_CUSTOM_TOKEN_EXPIRY,
+                    expiryMillis);
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name);
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+
+            // Fill result with Intent.
+            Intent intent = new Intent(mContext, TestAuthenticatorActivity.class);
+            intent.putExtra(Fixtures.KEY_RESULT, eventualActivityResultData);
+            intent.putExtra(Fixtures.KEY_CALLBACK, response);
+
+            result.putParcelable(AccountManager.KEY_INTENT, intent);
+
+        } else {
+            // fill with error
+            int errorCode = AccountManager.ERROR_CODE_INVALID_RESPONSE;
+            String errorMsg = "Default Error Message";
+            if (options != null) {
+                errorCode = options.getInt(AccountManager.KEY_ERROR_CODE);
+                errorMsg = options.getString(AccountManager.KEY_ERROR_MESSAGE);
+            }
+            result.putInt(AccountManager.KEY_ERROR_CODE, errorCode);
+            result.putString(AccountManager.KEY_ERROR_MESSAGE, errorMsg);
+        }
+
+        try {
+            return (isCallbackRequired) ? null : result;
+        } finally {
+            if (isCallbackRequired) {
+                response.onResult(result);
+            }
+        }
+    }
+
+    @Override
+    public String getAuthTokenLabel(String authTokenType) {
+        String result = "Label:" + authTokenType;
+        AuthenticatorContentProvider.setTx(
+                new GetAuthTokenLabelTx(authTokenType, result));
+        return result;
+    }
+
+    @Override
+    public Bundle updateCredentials(
+            AccountAuthenticatorResponse response,
+            Account account,
+            String authTokenType,
+            Bundle options) throws NetworkErrorException {
+        if (!mAccountType.equals(account.type)) {
+            throw new IllegalArgumentException("Request to the wrong authenticator!");
+        }
+        Bundle result = new Bundle();
+        AuthenticatorContentProvider.setTx(
+                new UpdateCredentialsTx(account, authTokenType, options, result));
+
+        boolean isCallbackRequired =
+                options != null && options.getBoolean(Fixtures.KEY_CALLBACK_REQUIRED);
+        if (account.name.startsWith(Fixtures.PREFIX_NAME_SUCCESS)) {
+            // fill bundle with a success result.
+            result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
+            result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+        } else if (account.name.startsWith(Fixtures.PREFIX_NAME_INTERVENE)) {
+            // Specify data to be returned by the eventual activity.
+            Intent eventualActivityResultData = new Intent();
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name);
+            eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type);
+
+            // Fill result with Intent.
+            Intent intent = new Intent(mContext, TestAuthenticatorActivity.class);
+            intent.putExtra(Fixtures.KEY_RESULT, eventualActivityResultData);
+            intent.putExtra(Fixtures.KEY_CALLBACK, response);
+
+            result.putParcelable(AccountManager.KEY_INTENT, intent);
+        } else {
+            // fill with error
+            // fill with error
+            int errorCode = AccountManager.ERROR_CODE_INVALID_RESPONSE;
+            String errorMsg = "Default Error Message";
+            if (options != null) {
+                errorCode = options.getInt(AccountManager.KEY_ERROR_CODE);
+                errorMsg = options.getString(AccountManager.KEY_ERROR_MESSAGE);
+            }
+            result.putInt(AccountManager.KEY_ERROR_CODE, errorCode);
+            result.putString(AccountManager.KEY_ERROR_MESSAGE, errorMsg);
+        }
+
+        try {
+            return (isCallbackRequired) ? null : result;
+        } finally {
+            if (isCallbackRequired) {
+                response.onResult(result);
+            }
+        }
+    }
+
+    @Override
+    public Bundle hasFeatures(
+            AccountAuthenticatorResponse response,
+            Account account,
+            String[] features) throws NetworkErrorException {
+        if (!mAccountType.equals(account.type)) {
+            throw new IllegalArgumentException("Request to the wrong authenticator!");
+        }
+        Bundle result = new Bundle();
+        AuthenticatorContentProvider.setTx(
+                new HasFeaturesTx(account, features, result));
+        boolean isCallbackRequired =
+                Arrays.asList(features).contains(Fixtures.KEY_CALLBACK_REQUIRED);
+        if (account.name.startsWith(Fixtures.PREFIX_NAME_SUCCESS)) {
+            // fill bundle with a success result.
+            result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true);
+        } else if (account.name.startsWith(Fixtures.PREFIX_NAME_INTERVENE)) {
+            // Specify data to be returned by the eventual activity.
+            Intent eventualActivityResultData = new Intent();
+            eventualActivityResultData.putExtra(AccountManager.KEY_BOOLEAN_RESULT, true);
+
+            Intent intent = new Intent(mContext, TestAuthenticatorActivity.class);
+            intent.putExtra(Fixtures.KEY_RESULT, eventualActivityResultData);
+            intent.putExtra(Fixtures.KEY_CALLBACK, response);
+
+            result.putParcelable(AccountManager.KEY_INTENT, intent);
+        } else {
+            // fill with error
+        }
+
+        try {
+            return (isCallbackRequired) ? null : result;
+        } finally {
+            if (isCallbackRequired) {
+                response.onResult(result);
+            }
+        }
+    }
+}
+
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/TestAuthenticatorActivity.java b/tests/tests/accounts/common/src/android/accounts/cts/common/TestAuthenticatorActivity.java
new file mode 100644
index 0000000..83c0533
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/TestAuthenticatorActivity.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.accounts.cts.common;
+
+import android.accounts.AccountAuthenticatorResponse;
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+
+public class TestAuthenticatorActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        Intent intent = getIntent();
+        AccountAuthenticatorResponse response = intent.getParcelableExtra(Fixtures.KEY_CALLBACK);
+        Intent result = intent.getParcelableExtra(Fixtures.KEY_RESULT);
+        if (response != null) {
+            response.onResult(result.getExtras());
+        }
+        setResult(RESULT_OK, result);
+        finish();
+    }
+}
+
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/AddAccountTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/AddAccountTx.aidl
new file mode 100644
index 0000000..912322a
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/AddAccountTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable AddAccountTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/AddAccountTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/AddAccountTx.java
new file mode 100644
index 0000000..3d829315
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/AddAccountTx.java
@@ -0,0 +1,70 @@
+package android.accounts.cts.common.tx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AddAccountTx implements Parcelable {
+
+    public static final Parcelable.Creator<AddAccountTx> CREATOR =
+            new Parcelable.Creator<AddAccountTx>() {
+
+                @Override
+                public AddAccountTx createFromParcel(Parcel in) {
+                    return new AddAccountTx(in);
+                }
+
+                @Override
+                public AddAccountTx[] newArray(int size) {
+                    return new AddAccountTx[size];
+                }
+            };
+
+    public final String accountType;
+    public final String authTokenType;
+    public final List<String> requiredFeatures = new ArrayList<>();
+    public final Bundle options;
+    public final Bundle result;
+
+    private AddAccountTx(Parcel in) {
+        accountType = in.readString();
+        authTokenType = in.readString();
+        in.readStringList(requiredFeatures);
+        options = in.readBundle();
+        result = in.readBundle();
+    }
+
+    public AddAccountTx(
+            String accountType,
+            String authTokenType,
+            String[] requiredFeatures,
+            Bundle options,
+            Bundle result) {
+        this.accountType = accountType;
+        this.authTokenType = authTokenType;
+        if (requiredFeatures != null) {
+            for (String feature : requiredFeatures) {
+                this.requiredFeatures.add(feature);
+            }
+        }
+        this.options = options;
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeString(accountType);
+        out.writeString(authTokenType);
+        out.writeStringList(requiredFeatures);
+        out.writeBundle(options);
+        out.writeBundle(result);
+    }
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/ConfirmCredentialsTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/ConfirmCredentialsTx.aidl
new file mode 100644
index 0000000..98a6367
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/ConfirmCredentialsTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable ConfirmCredentialsTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/ConfirmCredentialsTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/ConfirmCredentialsTx.java
new file mode 100644
index 0000000..d73b0a5
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/ConfirmCredentialsTx.java
@@ -0,0 +1,54 @@
+package android.accounts.cts.common.tx;
+
+import android.accounts.Account;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class ConfirmCredentialsTx implements Parcelable {
+
+    public static final Parcelable.Creator<ConfirmCredentialsTx> CREATOR =
+            new Parcelable.Creator<ConfirmCredentialsTx>() {
+
+                @Override
+                public ConfirmCredentialsTx createFromParcel(Parcel in) {
+                    return new ConfirmCredentialsTx(in);
+                }
+
+                @Override
+                public ConfirmCredentialsTx[] newArray(int size) {
+                    return new ConfirmCredentialsTx[size];
+                }
+            };
+
+    public final Account account;
+    public final Bundle options;
+    public final Bundle result;
+
+    private ConfirmCredentialsTx(Parcel in) {
+        account = in.readParcelable(null);
+        options = in.readBundle();
+        result = in.readBundle();
+    }
+
+    public ConfirmCredentialsTx(
+            Account account,
+            Bundle options,
+            Bundle result) {
+        this.account = account;
+        this.options = options;
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeParcelable(account, flags);
+        out.writeBundle(options);
+        out.writeBundle(result);
+    }
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/EditPropertiesTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/EditPropertiesTx.aidl
new file mode 100644
index 0000000..d9e813f
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/EditPropertiesTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable EditPropertiesTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/EditPropertiesTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/EditPropertiesTx.java
new file mode 100644
index 0000000..4eba64d
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/EditPropertiesTx.java
@@ -0,0 +1,48 @@
+package android.accounts.cts.common.tx;
+
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class EditPropertiesTx implements Parcelable {
+
+    public static final Parcelable.Creator<EditPropertiesTx> CREATOR =
+            new Parcelable.Creator<EditPropertiesTx>() {
+
+                @Override
+                public EditPropertiesTx createFromParcel(Parcel in) {
+                    return new EditPropertiesTx(in);
+                }
+
+                @Override
+                public EditPropertiesTx[] newArray(int size) {
+                    return new EditPropertiesTx[size];
+                }
+            };
+
+    public final String accountType;
+    public final Bundle result;
+
+    private EditPropertiesTx(Parcel in) {
+        accountType = in.readString();
+        result = in.readBundle();
+    }
+
+    public EditPropertiesTx(
+            String accountType,
+            Bundle result) {
+        this.accountType = accountType;
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeString(accountType);
+        out.writeBundle(result);
+    }
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAccountRemovalAllowedTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAccountRemovalAllowedTx.aidl
new file mode 100644
index 0000000..cbcd99d
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAccountRemovalAllowedTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable GetAccountRemovalAllowedTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAccountRemovalAllowedTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAccountRemovalAllowedTx.java
new file mode 100644
index 0000000..0e456b0
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAccountRemovalAllowedTx.java
@@ -0,0 +1,49 @@
+package android.accounts.cts.common.tx;
+
+import android.accounts.Account;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class GetAccountRemovalAllowedTx implements Parcelable {
+
+    public static final Parcelable.Creator<GetAccountRemovalAllowedTx> CREATOR =
+            new Parcelable.Creator<GetAccountRemovalAllowedTx>() {
+
+                @Override
+                public GetAccountRemovalAllowedTx createFromParcel(Parcel in) {
+                    return new GetAccountRemovalAllowedTx(in);
+                }
+
+                @Override
+                public GetAccountRemovalAllowedTx[] newArray(int size) {
+                    return new GetAccountRemovalAllowedTx[size];
+                }
+            };
+
+    public final Account account;
+    public final Bundle result;
+
+    private GetAccountRemovalAllowedTx(Parcel in) {
+        account = in.readParcelable(null);
+        result = in.readBundle();
+    }
+
+    public GetAccountRemovalAllowedTx(
+            Account account,
+            Bundle result) {
+        this.account = account;
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeParcelable(account, flags);
+        out.writeBundle(result);
+    }
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenLabelTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenLabelTx.aidl
new file mode 100644
index 0000000..82aeb9e
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenLabelTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable GetAuthTokenLabelTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenLabelTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenLabelTx.java
new file mode 100644
index 0000000..4a017dd
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenLabelTx.java
@@ -0,0 +1,47 @@
+package android.accounts.cts.common.tx;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class GetAuthTokenLabelTx implements Parcelable {
+
+    public static final Parcelable.Creator<GetAuthTokenLabelTx> CREATOR =
+            new Parcelable.Creator<GetAuthTokenLabelTx>() {
+
+                @Override
+                public GetAuthTokenLabelTx createFromParcel(Parcel in) {
+                    return new GetAuthTokenLabelTx(in);
+                }
+
+                @Override
+                public GetAuthTokenLabelTx[] newArray(int size) {
+                    return new GetAuthTokenLabelTx[size];
+                }
+            };
+
+    public final String authTokenType;
+    public final String result;
+
+    private GetAuthTokenLabelTx(Parcel in) {
+        authTokenType = in.readString();
+        result = in.readString();
+    }
+
+    public GetAuthTokenLabelTx(
+            String authTokenType,
+            String result) {
+        this.authTokenType = authTokenType;
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeString(authTokenType);
+        out.writeString(result);
+    }
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenTx.aidl
new file mode 100644
index 0000000..4ff5abb
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable GetAuthTokenTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenTx.java
new file mode 100644
index 0000000..c328353
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/GetAuthTokenTx.java
@@ -0,0 +1,59 @@
+package android.accounts.cts.common.tx;
+
+import android.accounts.Account;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class GetAuthTokenTx implements Parcelable {
+
+    public static final Parcelable.Creator<GetAuthTokenTx> CREATOR =
+            new Parcelable.Creator<GetAuthTokenTx>() {
+
+                @Override
+                public GetAuthTokenTx createFromParcel(Parcel in) {
+                    return new GetAuthTokenTx(in);
+                }
+
+                @Override
+                public GetAuthTokenTx[] newArray(int size) {
+                    return new GetAuthTokenTx[size];
+                }
+            };
+
+    public final Account account;
+    public final String authTokenType;
+    public final Bundle options;
+    public final Bundle result;
+
+    private GetAuthTokenTx(Parcel in) {
+        account = in.readParcelable(null);
+        authTokenType = in.readString();
+        options = in.readBundle();
+        result = in.readBundle();
+    }
+
+    public GetAuthTokenTx(
+            Account account,
+            String authTokenType,
+            Bundle options,
+            Bundle result) {
+        this.account = account;
+        this.authTokenType = authTokenType;
+        this.options = options;
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeParcelable(account, flags);
+        out.writeString(authTokenType);
+        out.writeBundle(options);
+        out.writeBundle(result);
+    }
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/HasFeaturesTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/HasFeaturesTx.aidl
new file mode 100644
index 0000000..20b4a67
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/HasFeaturesTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable HasFeaturesTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/HasFeaturesTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/HasFeaturesTx.java
new file mode 100644
index 0000000..81d3446
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/HasFeaturesTx.java
@@ -0,0 +1,61 @@
+package android.accounts.cts.common.tx;
+
+import android.accounts.Account;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class HasFeaturesTx implements Parcelable {
+
+    public static final Parcelable.Creator<HasFeaturesTx> CREATOR =
+            new Parcelable.Creator<HasFeaturesTx>() {
+
+                @Override
+                public HasFeaturesTx createFromParcel(Parcel in) {
+                    return new HasFeaturesTx(in);
+                }
+
+                @Override
+                public HasFeaturesTx[] newArray(int size) {
+                    return new HasFeaturesTx[size];
+                }
+            };
+
+    public final Account account;
+    public final List<String> features = new ArrayList<>();
+    public final Bundle result;
+
+    private HasFeaturesTx(Parcel in) {
+        account = in.readParcelable(null);
+        in.readStringList(features);
+        result = in.readBundle();
+    }
+
+    public HasFeaturesTx(
+            Account account,
+            String[] features,
+            Bundle result) {
+        this.account = account;
+        if (features != null) {
+            for (String feature : features) {
+                this.features.add(feature);
+            }
+        }
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeParcelable(account, flags);
+        out.writeStringList(features);
+        out.writeBundle(result);
+    }
+}
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/UpdateCredentialsTx.aidl b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/UpdateCredentialsTx.aidl
new file mode 100644
index 0000000..8106242
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/UpdateCredentialsTx.aidl
@@ -0,0 +1,3 @@
+package android.accounts.cts.common.tx;
+
+parcelable UpdateCredentialsTx;
diff --git a/tests/tests/accounts/common/src/android/accounts/cts/common/tx/UpdateCredentialsTx.java b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/UpdateCredentialsTx.java
new file mode 100644
index 0000000..ed2e082
--- /dev/null
+++ b/tests/tests/accounts/common/src/android/accounts/cts/common/tx/UpdateCredentialsTx.java
@@ -0,0 +1,59 @@
+package android.accounts.cts.common.tx;
+
+import android.accounts.Account;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class UpdateCredentialsTx implements Parcelable {
+
+    public static final Parcelable.Creator<UpdateCredentialsTx> CREATOR =
+            new Parcelable.Creator<UpdateCredentialsTx>() {
+
+                @Override
+                public UpdateCredentialsTx createFromParcel(Parcel in) {
+                    return new UpdateCredentialsTx(in);
+                }
+
+                @Override
+                public UpdateCredentialsTx[] newArray(int size) {
+                    return new UpdateCredentialsTx[size];
+                }
+            };
+
+    public final Account account;
+    public final String authTokenType;
+    public final Bundle options;
+    public final Bundle result;
+
+    private UpdateCredentialsTx(Parcel in) {
+        account = in.readParcelable(null);
+        authTokenType = in.readString();
+        options = in.readBundle();
+        result = in.readBundle();
+    }
+
+    public UpdateCredentialsTx(
+            Account account,
+            String authTokenType,
+            Bundle options,
+            Bundle result) {
+        this.account = account;
+        this.authTokenType = authTokenType;
+        this.options = options;
+        this.result = result;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeParcelable(account, flags);
+        out.writeString(authTokenType);
+        out.writeBundle(options);
+        out.writeBundle(result);
+    }
+}
diff --git a/tests/tests/accounts/src/android/accounts/cts/AccountManagerUnaffiliatedAuthenticatorTests.java b/tests/tests/accounts/src/android/accounts/cts/AccountManagerUnaffiliatedAuthenticatorTests.java
new file mode 100644
index 0000000..2068f4c
--- /dev/null
+++ b/tests/tests/accounts/src/android/accounts/cts/AccountManagerUnaffiliatedAuthenticatorTests.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.accounts.cts;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AccountManagerFuture;
+import android.accounts.AuthenticatorException;
+import android.accounts.OperationCanceledException;
+import android.accounts.cts.common.AuthenticatorContentProvider;
+import android.accounts.cts.common.Fixtures;
+import android.content.ContentProviderClient;
+import android.content.ContentResolver;
+import android.os.RemoteException;
+import android.test.AndroidTestCase;
+
+import java.io.IOException;
+
+/**
+ * Tests for AccountManager and AbstractAccountAuthenticator related behavior using {@link
+ * android.accounts.cts.common.TestAccountAuthenticator} instances signed with different keys than
+ * the caller. This is important to test that portion of the {@link AccountManager} API intended
+ * for {@link android.accounts.AbstractAccountAuthenticator} implementers.
+ * <p>
+ * You can run those unit tests with the following command line:
+ * <p>
+ *  adb shell am instrument
+ *   -e debug false -w
+ *   -e class android.accounts.cts.AccountManagerUnaffiliatedAuthenticatorTests
+ * android.accounts.cts/android.support.test.runner.AndroidJUnitRunner
+ */
+public class AccountManagerUnaffiliatedAuthenticatorTests extends AndroidTestCase {
+
+    private AccountManager mAccountManager;
+    private ContentProviderClient mProviderClient;
+
+    @Override
+    public void setUp() throws Exception {
+        // bind to the diagnostic service and set it up.
+        mAccountManager = AccountManager.get(getContext());
+        ContentResolver resolver = getContext().getContentResolver();
+        mProviderClient = resolver.acquireContentProviderClient(
+                AuthenticatorContentProvider.AUTHORITY);
+        /*
+         * This will install a bunch of accounts on the device
+         * (see Fixtures.getFixtureAccountNames()).
+         */
+        mProviderClient.call(AuthenticatorContentProvider.METHOD_SETUP, null, null);
+    }
+
+    @Override
+    public void tearDown() throws RemoteException {
+        try {
+            mProviderClient.call(AuthenticatorContentProvider.METHOD_TEARDOWN, null, null);
+        } finally {
+            mProviderClient.release();
+        }
+    }
+
+    public void testNotifyAccountAuthenticated() {
+        try {
+            mAccountManager.notifyAccountAuthenticated(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS);
+            fail("Expected to just barf if the caller doesn't share a signature.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testEditProperties()  {
+        try {
+            mAccountManager.editProperties(
+                    Fixtures.TYPE_STANDARD_UNAFFILIATED,
+                    null, // activity
+                    null, // callback
+                    null); // handler
+            fail("Expecting a OperationCanceledException.");
+        } catch (SecurityException expected) {
+            
+        }
+    }
+
+    public void testAddAccountExplicitly() {
+        try {
+            mAccountManager.addAccountExplicitly(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    "shouldn't matter", // password
+                    null); // bundle
+            fail("addAccountExplicitly should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testRemoveAccount_withBooleanResult() {
+        try {
+            mAccountManager.removeAccount(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    null,
+                    null);
+            fail("removeAccount should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testRemoveAccount_withBundleResult() {
+        try {
+            mAccountManager.removeAccount(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    null, // Activity
+                    null,
+                    null);
+            fail("removeAccount should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testRemoveAccountExplicitly() {
+        try {
+            mAccountManager.removeAccountExplicitly(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS);
+            fail("removeAccountExplicitly should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testGetPassword() {
+        try {
+            mAccountManager.getPassword(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS);
+            fail("getPassword should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testSetPassword() {
+        try {
+            mAccountManager.setPassword(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    "Doesn't matter");
+            fail("setPassword should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testClearPassword() {
+        try {
+            mAccountManager.clearPassword(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS);
+            fail("clearPassword should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testGetUserData() {
+        try {
+            mAccountManager.getUserData(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    "key");
+            fail("getUserData should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testSetUserData() {
+        try {
+            mAccountManager.setUserData(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    "key",
+                    "value");
+            fail("setUserData should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void setAuthToken() {
+        try {
+            mAccountManager.setAuthToken(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    "tokenType",
+                    "token");
+            fail("setAuthToken should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testPeekAuthToken() {
+        try {
+            mAccountManager.peekAuthToken(
+                    Fixtures.ACCOUNT_UNAFFILIATED_FIXTURE_SUCCESS,
+                    "tokenType");
+            fail("peekAuthToken should just barf if the caller isn't permitted.");
+        } catch (SecurityException expected) {}
+    }
+
+    public void testGetAccounts() {
+        Account[] accounts = mAccountManager.getAccounts();
+        assertEquals(0, accounts.length);
+    }
+
+    public void testGetAccountsByType() {
+        Account[] accounts = mAccountManager.getAccountsByType(
+                Fixtures.TYPE_STANDARD_UNAFFILIATED);
+        assertEquals(0, accounts.length);
+    }
+
+    public void testGetAccountsByTypeAndFeatures()
+            throws OperationCanceledException, AuthenticatorException, IOException {
+        AccountManagerFuture<Account[]> future = mAccountManager.getAccountsByTypeAndFeatures(
+                Fixtures.TYPE_STANDARD_UNAFFILIATED,
+                new String[] { "doesn't matter" },
+                null,  // Callback
+                null);  // Handler
+        Account[] accounts = future.getResult();
+        assertEquals(0, accounts.length);
+    }
+
+    public void testGetAccountsByTypeForPackage() {
+        Account[] accounts = mAccountManager.getAccountsByTypeForPackage(
+                Fixtures.TYPE_STANDARD_UNAFFILIATED,
+                getContext().getPackageName());
+        assertEquals(0, accounts.length);
+    }
+}
+
diff --git a/tests/tests/admin/AndroidTest.xml b/tests/tests/admin/AndroidTest.xml
new file mode 100644
index 0000000..c29d404
--- /dev/null
+++ b/tests/tests/admin/AndroidTest.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<configuration description="CTS device admin test config">
+    <include name="common-config" />
+    <option name="run-command:run-command" value="dpm set-active-admin android.deviceadmin.cts/.CtsDeviceAdminReceiver" />
+    <option name="run-command:run-command" value="dpm set-active-admin android.deviceadmin.cts/.CtsDeviceAdminReceiver2" />
+</configuration>
diff --git a/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java b/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java
index 7bc08c6..66e12c0 100644
--- a/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java
+++ b/tests/tests/admin/src/android/admin/cts/DevicePolicyManagerTest.java
@@ -68,6 +68,8 @@
             "VcUyQ1/e7WQgOaBHi9TefUJi+4PSVSluOXon\n" +
             "-----END CERTIFICATE-----";
 
+    private static final String MANAGED_PROVISIONING_PKG = "com.android.managedprovisioning";
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -524,6 +526,23 @@
         }
     }
 
+    public void testKeyguardDisabledFeatures() {
+        if (!mDeviceAdmin) {
+            Log.w(TAG, "Skipping testKeyguardDisabledFeatures");
+            return;
+        }
+        int originalValue = mDevicePolicyManager.getKeyguardDisabledFeatures(mComponent);
+        try {
+            for (int which = DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE;
+                    which < 2 * DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT; ++which) {
+                mDevicePolicyManager.setKeyguardDisabledFeatures(mComponent, which);
+                assertEquals(which, mDevicePolicyManager.getKeyguardDisabledFeatures(mComponent));
+            }
+        } finally {
+            mDevicePolicyManager.setKeyguardDisabledFeatures(mComponent, originalValue);
+        }
+    }
+
     public void testCreateUser_failIfNotDeviceOwner() {
         if (!mDeviceAdmin) {
             Log.w(TAG, "Skipping testCreateUser_failIfNotDeviceOwner");
@@ -1018,6 +1037,14 @@
         fail("No system launcher with version L+ present present on device.");
     }
 
+    /**
+     * Test that managed provisioning is pre-installed if and only if the device declares the
+     * device admin feature.
+     */
+    public void testManagedProvisioningPreInstalled() throws Exception {
+        assertEquals(mDeviceAdmin, isPackageInstalledOnSystemImage(MANAGED_PROVISIONING_PKG));
+    }
+
     private void assertDeviceOwnerMessage(String message) {
         assertTrue("message is: "+ message, message.contains("does not own the device")
                 || message.contains("can only be called by the device owner"));
@@ -1099,4 +1126,14 @@
             assertDeviceOwnerMessage(e.getMessage());
         }
     }
+
+    private boolean isPackageInstalledOnSystemImage(String packagename) {
+        try {
+            ApplicationInfo info = mPackageManager.getApplicationInfo(packagename,
+                    0 /* default flags */);
+            return (info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+        } catch (NameNotFoundException e) {
+            return false;
+        }
+    }
 }
diff --git a/tests/tests/alarmclock/Android.mk b/tests/tests/alarmclock/Android.mk
new file mode 100644
index 0000000..6c30bc7
--- /dev/null
+++ b/tests/tests/alarmclock/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := CtsAlarmClockCommon ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsAlarmClockTestCases
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/alarmclock/AndroidManifest.xml b/tests/tests/alarmclock/AndroidManifest.xml
new file mode 100644
index 0000000..c0193dd
--- /dev/null
+++ b/tests/tests/alarmclock/AndroidManifest.xml
@@ -0,0 +1,47 @@
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.alarmclock.cts">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+
+        <activity android:name="TestStartActivity"
+                  android:label="The Target Activity for AlarmClock CTS Test">
+            <intent-filter>
+                <action android:name="android.intent.action.TEST_START_ACTIVITY_DISMISS_ALARM" />
+                <action android:name="android.intent.action.TEST_START_ACTIVITY_SET_ALARM" />
+                <action android:name=
+                        "android.intent.action.TEST_START_ACTIVITY_SET_ALARM_FOR_DISMISSAL" />
+                <action android:name="android.intent.action.TEST_START_ACTIVITY_SNOOZE_ALARM" />
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.alarmclock.cts"
+                     android:label="CTS tests of android.alarmclock">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+</manifest>
+
diff --git a/tests/tests/alarmclock/AndroidTest.xml b/tests/tests/alarmclock/AndroidTest.xml
new file mode 100644
index 0000000..1cdd7f4
--- /dev/null
+++ b/tests/tests/alarmclock/AndroidTest.xml
@@ -0,0 +1,23 @@
+<!-- Copyright (C) 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.
+-->
+<configuration description="Test module config for AlarmClock">
+    <include name="common-config" />
+    <option name="cts-apk-installer:test-file-name" value="CtsAlarmClockService.apk" />
+    <option name="run-command:run-command"
+         value="settings put secure voice_interaction_service android.alarmclock.service/.MainInteractionService" />
+    <option name="run-command:teardown-command"
+         value="settings put secure voice_interaction_service com.google.android.googlequicksearchbox/com.google.android.voiceinteraction.GsaVoiceInteractionService" />
+    <option name="cts-apk-installer:test-file-name" value="CtsAlarmClockTestCases.apk" />
+</configuration>
diff --git a/tests/tests/alarmclock/common/Android.mk b/tests/tests/alarmclock/common/Android.mk
new file mode 100644
index 0000000..d460ade
--- /dev/null
+++ b/tests/tests/alarmclock/common/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE := CtsAlarmClockCommon
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/alarmclock/common/src/android/alarmclock/common/Utils.java b/tests/tests/alarmclock/common/src/android/alarmclock/common/Utils.java
new file mode 100644
index 0000000..d469592
--- /dev/null
+++ b/tests/tests/alarmclock/common/src/android/alarmclock/common/Utils.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 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.
+ */
+package android.alarmclock.common;
+
+import android.os.Bundle;
+
+public class Utils {
+    // private constructor - so it can't be instantiated.
+    private Utils() {
+    }
+
+    public enum TestcaseType {
+        DISMISS_ALARM,
+        SET_ALARM,
+        SET_ALARM_FOR_DISMISSAL,
+        SNOOZE_ALARM,
+    }
+    public static final String TESTCASE_TYPE = "Testcase_type";
+    public static final String BROADCAST_INTENT =
+            "android.intent.action.FROM_ALARMCLOCK_CTS_TEST_";
+    public static final String TEST_RESULT = "test_result";
+    public static final String COMPLETION_RESULT = "completion";
+    public static final String ABORT_RESULT = "abort";
+
+    public static final String toBundleString(Bundle bundle) {
+        if (bundle == null) {
+            return "*** Bundle is null ****";
+        }
+        StringBuilder buf = new StringBuilder();
+        if (bundle != null) {
+            buf.append("extras: ");
+            for (String s : bundle.keySet()) {
+                buf.append("(" + s + " = " + bundle.get(s) + "), ");
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/tests/tests/alarmclock/res/xml/interaction_service.xml b/tests/tests/alarmclock/res/xml/interaction_service.xml
new file mode 100644
index 0000000..e37017c
--- /dev/null
+++ b/tests/tests/alarmclock/res/xml/interaction_service.xml
@@ -0,0 +1,20 @@
+<!-- Copyright (C) 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.
+-->
+
+<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:sessionService="android.alarmclock.service.MainInteractionSessionService"
+    android:recognitionService="android.alarmclock.service.MainRecognitionService"
+    android:settingsActivity="android.alarmclock.service.SettingsActivity"
+    android:supportsAssist="false" />
diff --git a/tests/tests/alarmclock/service/Android.mk b/tests/tests/alarmclock/service/Android.mk
new file mode 100644
index 0000000..53dc564
--- /dev/null
+++ b/tests/tests/alarmclock/service/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := CtsAlarmClockCommon ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsAlarmClockService
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/alarmclock/service/AndroidManifest.xml b/tests/tests/alarmclock/service/AndroidManifest.xml
new file mode 100644
index 0000000..074df26
--- /dev/null
+++ b/tests/tests/alarmclock/service/AndroidManifest.xml
@@ -0,0 +1,64 @@
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.alarmclock.service">
+    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <service android:name=".MainInteractionService"
+                android:label="CTS test voice interaction service"
+                android:permission="android.permission.BIND_VOICE_INTERACTION"
+                android:process=":interactor"
+                android:exported="true">
+            <meta-data android:name="android.voice_interaction"
+                       android:resource="@xml/interaction_service" />
+            <intent-filter>
+                <action android:name="android.service.voice.VoiceInteractionService" />
+            </intent-filter>
+        </service>
+        <activity android:name=".VoiceInteractionMain" >
+            <intent-filter>
+                <action android:name="android.intent.action.VIMAIN_DISMISS_ALARM" />
+                <action android:name="android.intent.action.VIMAIN_SET_ALARM" />
+                <action android:name="android.intent.action.VIMAIN_SET_ALARM_FOR_DISMISSAL" />
+                <action android:name="android.intent.action.VIMAIN_SNOOZE_ALARM" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity android:name=".SettingsActivity"
+                  android:label="Voice Interaction Settings">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <service android:name=".MainInteractionSessionService"
+                android:permission="android.permission.BIND_VOICE_INTERACTION"
+                android:process=":session">
+        </service>
+        <service android:name=".MainRecognitionService"
+                android:label="CTS Voice Recognition Service">
+            <intent-filter>
+                <action android:name="android.speech.RecognitionService" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="android.speech" android:resource="@xml/recognition_service" />
+        </service>
+    </application>
+</manifest>
+
diff --git a/tests/tests/alarmclock/service/res/xml/interaction_service.xml b/tests/tests/alarmclock/service/res/xml/interaction_service.xml
new file mode 100644
index 0000000..e37017c
--- /dev/null
+++ b/tests/tests/alarmclock/service/res/xml/interaction_service.xml
@@ -0,0 +1,20 @@
+<!-- Copyright (C) 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.
+-->
+
+<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:sessionService="android.alarmclock.service.MainInteractionSessionService"
+    android:recognitionService="android.alarmclock.service.MainRecognitionService"
+    android:settingsActivity="android.alarmclock.service.SettingsActivity"
+    android:supportsAssist="false" />
diff --git a/tests/tests/alarmclock/service/res/xml/recognition_service.xml b/tests/tests/alarmclock/service/res/xml/recognition_service.xml
new file mode 100644
index 0000000..132c987
--- /dev/null
+++ b/tests/tests/alarmclock/service/res/xml/recognition_service.xml
@@ -0,0 +1,17 @@
+<!-- Copyright (C) 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.
+-->
+
+<recognition-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:settingsActivity="android.alarmclock.service.SettingsActivity" />
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionService.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionService.java
new file mode 100644
index 0000000..f96140e
--- /dev/null
+++ b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionService.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.service;
+
+import android.alarmclock.common.Utils;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionService;
+import android.util.Log;
+
+public class MainInteractionService extends VoiceInteractionService {
+    static final String TAG = "MainInteractionService";
+    private Intent mIntent;
+    private boolean mReady = false;
+
+    @Override
+    public void onReady() {
+        super.onReady();
+        mReady = true;
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        Log.i(TAG, "onStartCommand received");
+        mIntent = intent;
+        Log.i(TAG, "received_testcasetype = " + mIntent.getStringExtra(Utils.TESTCASE_TYPE));
+        maybeStart();
+        return START_NOT_STICKY;
+    }
+
+    private void maybeStart() {
+       if (mIntent == null || !mReady) {
+            Log.wtf(TAG, "Can't start session because either intent is null or onReady() "
+                    + "is not called yet. mIntent = " + mIntent + ", mReady = " + mReady);
+        } else {
+            Log.i(TAG,
+                    "Yay! about to start MainInteractionSession as the voice_interaction_service");
+            if (isActiveService(this, new ComponentName(this, getClass()))) {
+                Bundle args = new Bundle();
+                args.putString(Utils.TESTCASE_TYPE, mIntent.getStringExtra(Utils.TESTCASE_TYPE));
+                Log.i(TAG, "xferring_testcasetype = " + args.getString(Utils.TESTCASE_TYPE));
+                showSession(args, 0);
+            } else {
+                Log.wtf(TAG, "**** Not starting MainInteractionService because" +
+                    " it is not set as the current voice_interaction_service");
+            }
+        }
+    }
+}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSession.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSession.java
new file mode 100644
index 0000000..ede762a
--- /dev/null
+++ b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSession.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.service;
+
+import android.alarmclock.common.Utils;
+import android.alarmclock.common.Utils.TestcaseType;
+import android.content.Context;
+import android.content.Intent;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.AlarmClock;
+import android.service.voice.VoiceInteractionSession;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainInteractionSession extends VoiceInteractionSession {
+    static final String TAG = "MainInteractionSession";
+
+    private List<MyTask> mUsedTasks = new ArrayList<MyTask>();
+    private Context mContext;
+    private TestcaseType mTestType;
+    private String mTestResult = "";
+
+    MainInteractionSession(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+    }
+
+    @Override
+    public void onDestroy() {
+        Log.i(TAG, "Canceling the Asynctasks in onDestroy()");
+        for (MyTask t : mUsedTasks) {
+            t.cancel(true);
+        }
+        super.onDestroy();
+    }
+
+    @Override
+    public void onShow(Bundle args, int showFlags) {
+        super.onShow(args, showFlags);
+        String testCaseType = args.getString(Utils.TESTCASE_TYPE);
+        Log.i(TAG, "received_testcasetype = " + testCaseType);
+        try {
+            mTestType = TestcaseType.valueOf(testCaseType);
+        } catch (IllegalArgumentException e) {
+            Log.wtf(TAG, e);
+            return;
+        } catch (NullPointerException e) {
+            Log.wtf(TAG, e);
+            return;
+        }
+        Intent intent;
+        switch(mTestType) {
+            case DISMISS_ALARM:
+                intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);
+                intent.putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE,
+                        AlarmClock.ALARM_SEARCH_MODE_NEXT);
+                break;
+
+            case SET_ALARM_FOR_DISMISSAL:
+            case SET_ALARM:
+                intent = new Intent(AlarmClock.ACTION_SET_ALARM);
+                intent.putExtra(AlarmClock.EXTRA_HOUR, 14);
+                break;
+
+            case SNOOZE_ALARM:
+                intent = new Intent(AlarmClock.ACTION_SNOOZE_ALARM);
+                break;
+
+            default:
+                Log.e(TAG, "Unexpected value");
+                return;
+        }
+        Log.i(TAG, "starting_voiceactivity: " + intent.toString());
+        startVoiceActivity(intent);
+    }
+
+    @Override
+    public void onTaskFinished(Intent intent, int taskId) {
+        // extras contain the info on what the activity started above did.
+        // we probably could verify this also.
+        Bundle extras = intent.getExtras();
+        Log.i(TAG, "in onTaskFinished: testcasetype = " + mTestType + ", intent: " +
+                intent.toString() + Utils.toBundleString(extras));
+        Intent broadcastIntent = new Intent(Utils.BROADCAST_INTENT + mTestType.toString());
+        broadcastIntent.putExtra(Utils.TEST_RESULT, mTestResult);
+        broadcastIntent.putExtra(Utils.TESTCASE_TYPE, mTestType.toString());
+        Log.i(TAG, "sending_broadcast for testcase+type = " +
+                broadcastIntent.getStringExtra(Utils.TESTCASE_TYPE) +
+                ", test_result = " + broadcastIntent.getStringExtra(Utils.TEST_RESULT));
+        mContext.sendBroadcast(broadcastIntent);
+    }
+
+    synchronized MyTask newTask() {
+        MyTask t = new MyTask();
+        mUsedTasks.add(t);
+        return t;
+    }
+
+    @Override
+    public void onRequestCompleteVoice(CompleteVoiceRequest request) {
+        mTestResult = Utils.COMPLETION_RESULT;
+        CharSequence prompt = request.getVoicePrompt().getVoicePromptAt(0);
+        Log.i(TAG, "in Session testcasetype = " + mTestType +
+                ", onRequestCompleteVoice recvd. message = " + prompt);
+        AsyncTaskArg asyncTaskArg = new AsyncTaskArg().setRequest(request).setCompleteReq(true);
+        newTask().execute(asyncTaskArg);
+    }
+
+    @Override
+    public void onRequestAbortVoice(AbortVoiceRequest request) {
+        mTestResult = Utils.ABORT_RESULT;
+        AsyncTaskArg asyncTaskArg = new AsyncTaskArg().setRequest(request).setCompleteReq(false);
+        Log.i(TAG, "in Session sending sendAbortResult for testcasetype = " + mTestType);
+        newTask().execute(asyncTaskArg);
+    }
+
+    private class AsyncTaskArg {
+        CompleteVoiceRequest mCompReq;
+        AbortVoiceRequest mAbortReq;
+        boolean isCompleteRequest = true;
+
+        AsyncTaskArg setRequest(CompleteVoiceRequest r) {
+            mCompReq = r;
+            return this;
+        }
+
+        AsyncTaskArg setRequest(AbortVoiceRequest r) {
+            mAbortReq = r;
+            return this;
+        }
+
+        AsyncTaskArg setCompleteReq(boolean flag) {
+            isCompleteRequest = flag;
+            return this;
+        }
+    }
+
+    private class MyTask extends AsyncTask<AsyncTaskArg, Void, Void> {
+        @Override
+        protected Void doInBackground(AsyncTaskArg... params) {
+            AsyncTaskArg arg = params[0];
+            Log.i(TAG, "in MyTask - doInBackground: testType = " +
+                    MainInteractionSession.this.mTestType);
+            if (arg.isCompleteRequest) {
+                arg.mCompReq.sendCompleteResult(new Bundle());
+            } else {
+                arg.mAbortReq.sendAbortResult(new Bundle());
+            }
+            return null;
+        }
+    }
+}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSessionService.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSessionService.java
new file mode 100644
index 0000000..a83c115
--- /dev/null
+++ b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSessionService.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.service;
+
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionSession;
+import android.service.voice.VoiceInteractionSessionService;
+
+public class MainInteractionSessionService extends VoiceInteractionSessionService {
+    @Override
+    public VoiceInteractionSession onNewSession(Bundle args) {
+        return new MainInteractionSession(this);
+    }
+}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainRecognitionService.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainRecognitionService.java
new file mode 100644
index 0000000..15a32d4
--- /dev/null
+++ b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainRecognitionService.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.service;
+
+import android.content.Intent;
+import android.speech.RecognitionService;
+import android.util.Log;
+
+/**
+ * Stub recognition service needed to be a complete voice interactor.
+ */
+public class MainRecognitionService extends RecognitionService {
+    private static final String TAG = "MainRecognitionService";
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        Log.i(TAG, "onCreate");
+    }
+
+    @Override
+    protected void onStartListening(Intent recognizerIntent, Callback listener) {
+        Log.i(TAG, "onStartListening");
+    }
+
+    @Override
+    protected void onCancel(Callback listener) {
+        Log.i(TAG, "onCancel");
+    }
+
+    @Override
+    protected void onStopListening(Callback listener) {
+        Log.i(TAG, "onStopListening");
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        Log.i(TAG, "onDestroy");
+    }
+}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/SettingsActivity.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/SettingsActivity.java
new file mode 100644
index 0000000..0c4d289
--- /dev/null
+++ b/tests/tests/alarmclock/service/src/android/alarmclock/service/SettingsActivity.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.service;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+/**
+ * Stub activity to test out settings selection for voice interactor.
+ */
+public class SettingsActivity extends Activity {
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/VoiceInteractionMain.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/VoiceInteractionMain.java
new file mode 100644
index 0000000..c1f23a0
--- /dev/null
+++ b/tests/tests/alarmclock/service/src/android/alarmclock/service/VoiceInteractionMain.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.service;
+
+import android.alarmclock.common.Utils;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.ComponentName;
+import android.os.Bundle;
+import android.util.Log;
+
+public class VoiceInteractionMain extends Activity {
+    static final String TAG = "VoiceInteractionMain";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Intent intent = new Intent();
+        String testCaseType = getIntent().getStringExtra(Utils.TESTCASE_TYPE);
+        Log.i(TAG, "received_testcasetype = " + testCaseType);
+        intent.putExtra(Utils.TESTCASE_TYPE, testCaseType);
+        intent.setComponent(new ComponentName(this, MainInteractionService.class));
+        ComponentName serviceName = startService(intent);
+        Log.i(TAG, "Started service: " + serviceName);
+    }
+}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/AlarmClockTestBase.java b/tests/tests/alarmclock/src/android/alarmclock/cts/AlarmClockTestBase.java
new file mode 100644
index 0000000..0089e69
--- /dev/null
+++ b/tests/tests/alarmclock/src/android/alarmclock/cts/AlarmClockTestBase.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.cts;
+
+import android.alarmclock.common.Utils;
+import android.alarmclock.common.Utils.TestcaseType;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class AlarmClockTestBase extends ActivityInstrumentationTestCase2<TestStartActivity> {
+    static final String TAG = "AlarmClockTestBase";
+    protected static final int TIMEOUT_MS = 20 * 1000;
+
+    private Context mContext;
+    private String mTestResult;
+    private CountDownLatch mLatch;
+    private ActivityDoneReceiver mActivityDoneReceiver = null;
+    private TestStartActivity mActivity;
+    private TestcaseType mTestCaseType;
+
+    public AlarmClockTestBase() {
+        super(TestStartActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getTargetContext();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mContext.unregisterReceiver(mActivityDoneReceiver);
+        super.tearDown();
+    }
+
+    private void registerBroadcastReceiver(TestcaseType testCaseType) throws Exception {
+        mTestCaseType = testCaseType;
+        mLatch = new CountDownLatch(1);
+        if (mActivityDoneReceiver != null) {
+            mContext.unregisterReceiver(mActivityDoneReceiver);
+        }
+        mActivityDoneReceiver = new ActivityDoneReceiver();
+        mContext.registerReceiver(mActivityDoneReceiver,
+                new IntentFilter(Utils.BROADCAST_INTENT + testCaseType.toString()));
+    }
+
+    protected String runTest(TestcaseType testCaseType) throws Exception {
+        Log.i(TAG, "Begin Testing: " + testCaseType);
+        if (!startTestActivity(testCaseType)) {
+            fail("test activity start failed for testcase = " + testCaseType);
+            return "";
+        }
+
+        registerBroadcastReceiver(testCaseType);
+        mActivity.startTest(testCaseType.toString());
+        if (!mLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+            fail("Failed to receive broadcast in " + TIMEOUT_MS + "msec");
+            return "";
+        }
+        return mTestResult;
+    }
+
+    private boolean startTestActivity(TestcaseType testCaseType) {
+        Log.i(TAG, "Starting test activity for test: " + testCaseType);
+        Intent intent = new Intent();
+        intent.setAction("android.intent.action.TEST_START_ACTIVITY_" + testCaseType.toString());
+        intent.setComponent(new ComponentName(getInstrumentation().getContext(),
+                TestStartActivity.class));
+        setActivityIntent(intent);
+        mActivity = getActivity();
+        return mActivity != null;
+    }
+
+    class ActivityDoneReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent.getAction().equals(
+                    Utils.BROADCAST_INTENT + AlarmClockTestBase.this.mTestCaseType.toString())) {
+                AlarmClockTestBase.this.mTestResult = intent.getStringExtra(Utils.TEST_RESULT);
+                Log.i(TAG, "received_broadcast for testcase_type = " +
+                        Utils.BROADCAST_INTENT + AlarmClockTestBase.this.mTestCaseType +
+                        ", test_result = " + AlarmClockTestBase.this.mTestResult);
+                mLatch.countDown();
+            }
+        }
+    }
+}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/DismissAlarmTest.java b/tests/tests/alarmclock/src/android/alarmclock/cts/DismissAlarmTest.java
new file mode 100644
index 0000000..64ecf86
--- /dev/null
+++ b/tests/tests/alarmclock/src/android/alarmclock/cts/DismissAlarmTest.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.cts;
+
+import android.alarmclock.common.Utils;
+import android.alarmclock.common.Utils.TestcaseType;
+
+public class DismissAlarmTest extends AlarmClockTestBase {
+    public DismissAlarmTest() {
+        super();
+    }
+
+    public void testAll() throws Exception {
+        assertEquals(Utils.COMPLETION_RESULT, runTest(TestcaseType.SET_ALARM_FOR_DISMISSAL));
+        assertEquals(Utils.COMPLETION_RESULT, runTest(TestcaseType.DISMISS_ALARM));
+    }
+}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/SetAlarmTest.java b/tests/tests/alarmclock/src/android/alarmclock/cts/SetAlarmTest.java
new file mode 100644
index 0000000..a95a1dd
--- /dev/null
+++ b/tests/tests/alarmclock/src/android/alarmclock/cts/SetAlarmTest.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.cts;
+
+import android.alarmclock.common.Utils;
+import android.alarmclock.common.Utils.TestcaseType;
+
+public class SetAlarmTest extends AlarmClockTestBase {
+    public SetAlarmTest() {
+        super();
+    }
+
+    public void testAll() throws Exception {
+        assertEquals(Utils.COMPLETION_RESULT, runTest(TestcaseType.SET_ALARM));
+    }
+}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/SnoozeAlarmTest.java b/tests/tests/alarmclock/src/android/alarmclock/cts/SnoozeAlarmTest.java
new file mode 100644
index 0000000..b67a7cf
--- /dev/null
+++ b/tests/tests/alarmclock/src/android/alarmclock/cts/SnoozeAlarmTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.cts;
+
+import android.alarmclock.common.Utils;
+import android.alarmclock.common.Utils.TestcaseType;
+
+public class SnoozeAlarmTest extends AlarmClockTestBase {
+    public SnoozeAlarmTest() {
+        super();
+    }
+
+    public void testAll() throws Exception {
+        String result = runTest(TestcaseType.SNOOZE_ALARM);
+        // Since there is no way to figure out if there is a currently-firing alarm,
+        // we should expect either of the 2 results:
+        //      Utils.COMPLETION_RESULT
+        //      Utils.ABORT_RESULT
+        // For CTS test purposes, all we can do is to know that snooze-alarm intent
+        // was picked up and processed by the voice_interaction_service and the associated app.
+        // The above call to runTest() would have failed the test otherwise.
+        assertTrue(result.equals(Utils.ABORT_RESULT) || result.equals(Utils.COMPLETION_RESULT));
+    }
+}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/TestStartActivity.java b/tests/tests/alarmclock/src/android/alarmclock/cts/TestStartActivity.java
new file mode 100644
index 0000000..1a3c4eb
--- /dev/null
+++ b/tests/tests/alarmclock/src/android/alarmclock/cts/TestStartActivity.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.alarmclock.cts;
+
+import android.alarmclock.common.Utils;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.ComponentName;
+import android.os.Bundle;
+import android.util.Log;
+
+public class TestStartActivity extends Activity {
+    static final String TAG = "TestStartActivity";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.i(TAG, " in onCreate");
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        Log.i(TAG, " in onResume");
+    }
+
+    void startTest(String testCaseType) {
+        Intent intent = new Intent();
+        Log.i(TAG, "received_testcasetype = " + testCaseType);
+        intent.putExtra(Utils.TESTCASE_TYPE, testCaseType);
+        intent.setAction("android.intent.action.VIMAIN_" + testCaseType);
+        intent.setComponent(new ComponentName("android.alarmclock.service",
+                "android.alarmclock.service.VoiceInteractionMain"));
+        startActivity(intent);
+    }
+
+    @Override
+    protected void onPause() {
+        Log.i(TAG, " in onPause");
+        super.onPause();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        Log.i(TAG, " in onStart");
+    }
+
+    @Override
+    protected void onRestart() {
+        super.onRestart();
+        Log.i(TAG, " in onRestart");
+    }
+
+    @Override
+    protected void onStop() {
+        Log.i(TAG, " in onStop");
+        super.onStop();
+    }
+
+    @Override
+    protected void onDestroy() {
+        Log.i(TAG, " in onDestroy");
+        super.onDestroy();
+    }
+}
diff --git a/tests/tests/app/src/android/app/cts/DownloadManagerTest.java b/tests/tests/app/src/android/app/cts/DownloadManagerTest.java
index 8c0381a..55ad392 100644
--- a/tests/tests/app/src/android/app/cts/DownloadManagerTest.java
+++ b/tests/tests/app/src/android/app/cts/DownloadManagerTest.java
@@ -130,7 +130,7 @@
 
             assertDownloadQueryableById(id);
 
-            receiver.waitForDownloadComplete(SHORT_TIMEOUT, id);
+            receiver.waitForDownloadComplete(LONG_TIMEOUT, id);
 
             assertDownloadQueryableByStatus(DownloadManager.STATUS_SUCCESSFUL);
 
@@ -158,7 +158,7 @@
 
             assertDownloadQueryableById(id);
 
-            receiver.waitForDownloadComplete(SHORT_TIMEOUT, id);
+            receiver.waitForDownloadComplete(LONG_TIMEOUT, id);
 
             assertDownloadQueryableByStatus(DownloadManager.STATUS_SUCCESSFUL);
 
diff --git a/tests/tests/assist/Android.mk b/tests/tests/assist/Android.mk
new file mode 100644
index 0000000..89d2c49
--- /dev/null
+++ b/tests/tests/assist/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := CtsAssistCommon ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsAssistTestCases
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/assist/AndroidManifest.xml b/tests/tests/assist/AndroidManifest.xml
new file mode 100644
index 0000000..b6cd684
--- /dev/null
+++ b/tests/tests/assist/AndroidManifest.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.assist.cts">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.BIND_VOICE_INTERACTION" />
+
+    <application>
+      <uses-library android:name="android.test.runner" />
+      <activity android:name="android.assist.TestStartActivity"
+                android:label="Assist Target">
+          <intent-filter>
+              <action android:name="android.intent.action.TEST_START_ACTIVITY_ASSIST_STRUCTURE" />
+              <action android:name="android.intent.action.TEST_START_ACTIVITY_DISABLE_CONTEXT" />
+              <action android:name="android.intent.action.TEST_START_ACTIVITY_FLAG_SECURE" />
+              <category android:name="android.intent.category.LAUNCHER" />
+              <category android:name="android.intent.category.DEFAULT" />
+          </intent-filter>
+      </activity>
+    </application>
+
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.assist.cts"
+                     android:label="CTS tests of android.assist">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+</manifest>
+
diff --git a/tests/tests/assist/AndroidTest.xml b/tests/tests/assist/AndroidTest.xml
new file mode 100644
index 0000000..f7c56ad
--- /dev/null
+++ b/tests/tests/assist/AndroidTest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<configuration description="Test module config for Assist">
+    <include name="common-config" />
+    <option name="cts-apk-installer:test-file-name" value="CtsAssistService.apk" />
+    <option name="cts-apk-installer:test-file-name" value="CtsAssistApp.apk" />
+    <option name="run-command:run-command"
+         value="settings put secure voice_interaction_service android.assist.service/.MainInteractionService" />
+    <option name="run-command:teardown-command"
+         value="settings put secure voice_interaction_service com.google.android.googlequicksearchbox/com.google.android.voiceinteraction.GsaVoiceInteractionService" />
+    <option name="cts-apk-installer:test-file-name" value="CtsAssistTestCases.apk" />
+</configuration>
diff --git a/tests/tests/assist/common/Android.mk b/tests/tests/assist/common/Android.mk
new file mode 100644
index 0000000..88c90ee
--- /dev/null
+++ b/tests/tests/assist/common/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE := CtsAssistCommon
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/assist/common/src/android/assist/common/Utils.java b/tests/tests/assist/common/src/android/assist/common/Utils.java
new file mode 100644
index 0000000..bf051c0
--- /dev/null
+++ b/tests/tests/assist/common/src/android/assist/common/Utils.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 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.
+ */
+package android.assist.common;
+
+import android.R;
+import android.content.ComponentName;
+import android.os.Bundle;
+
+import java.util.ArrayList;
+
+public class Utils {
+    public static final String TESTCASE_TYPE = "testcase_type";
+    public static final String TESTINFO = "testinfo";
+    public static final String BROADCAST_INTENT = "android.intent.action.ASSIST_TESTAPP";
+    public static final String BROADCAST_ASSIST_DATA_INTENT = "android.intent.action.ASSIST_DATA";
+    public static final String TEST_ERROR = "Error In Test:";
+
+    public static final String ASSIST_STRUCTURE_KEY = "assist_structure";
+    public static final String ASSIST_CONTENT_KEY = "assist_content";
+    public static final String ASSIST_BUNDLE_KEY = "assist_bundle";
+    public static final String ASSIST_SCREENSHOT_KEY = "assist_screenshot";
+
+    public static final int TIMEOUT_MS = 2 * 1000; // TODO(awlee): what is the timeout
+
+    /** Test name suffixes */
+    public static final String ASSIST_STRUCTURE = "ASSIST_STRUCTURE";
+    public static final String DISABLE_CONTEXT = "DISABLE_CONTEXT";
+    public static final String FLAG_SECURE = "FLAG_SECURE";
+
+    /**
+     * The shim activity that starts the service associated with each test.
+     */
+    public static final String getTestActivity(String testCaseType) {
+        switch (testCaseType) {
+            case ASSIST_STRUCTURE:
+            case FLAG_SECURE:
+                return "service.AssistStructureActivity";
+            case DISABLE_CONTEXT:
+                return "service.DisableContextActivity";
+            default:
+                return "";
+        }
+    }
+
+    /**
+     * The test app associated with each test.
+     */
+    public static final ComponentName getTestAppComponent(String testCaseType) {
+        switch (testCaseType) {
+            case ASSIST_STRUCTURE:
+            case DISABLE_CONTEXT:
+                return new ComponentName(
+                        "android.assist.testapp", "android.assist.testapp.TestApp");
+            case FLAG_SECURE:
+                return new ComponentName(
+                        "android.assist.testapp", "android.assist.testapp.SecureActivity");
+            default:
+                return new ComponentName("","");
+        }
+    }
+
+    public static final String toBundleString(Bundle bundle) {
+        if (bundle == null) {
+            return "*** Bundle is null ****";
+        }
+        StringBuffer buf = new StringBuffer("Bundle is: ");
+        String testType = bundle.getString(TESTCASE_TYPE);
+        if (testType != null) {
+            buf.append("testcase type = " + testType);
+        }
+        ArrayList<String> info = bundle.getStringArrayList(TESTINFO);
+        if (info != null) {
+            for (String s : info) {
+                buf.append(s + "\n\t\t");
+            }
+        }
+        return buf.toString();
+    }
+
+    public static final void addErrorResult(final Bundle testinfo, final String msg) {
+        testinfo.getStringArrayList(testinfo.getString(Utils.TESTCASE_TYPE))
+            .add(TEST_ERROR + " " + msg);
+    }
+}
diff --git a/tests/tests/assist/res/xml/interaction_service.xml b/tests/tests/assist/res/xml/interaction_service.xml
new file mode 100644
index 0000000..c968795
--- /dev/null
+++ b/tests/tests/assist/res/xml/interaction_service.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:sessionService="android.assist.service.MainInteractionSessionService"
+    android:recognitionService="android.assist.service.MainRecognitionService"
+    android:settingsActivity="android.assist.service.SettingsActivity"
+    android:supportsAssist="false" />
diff --git a/tests/tests/assist/service/Android.mk b/tests/tests/assist/service/Android.mk
new file mode 100644
index 0000000..07dc228
--- /dev/null
+++ b/tests/tests/assist/service/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := CtsAssistCommon ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsAssistService
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/assist/service/AndroidManifest.xml b/tests/tests/assist/service/AndroidManifest.xml
new file mode 100644
index 0000000..2c5206a
--- /dev/null
+++ b/tests/tests/assist/service/AndroidManifest.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.assist.service">
+
+    <application>
+      <uses-library android:name="android.test.runner" />
+      <service android:name=".MainInteractionService"
+              android:label="CTS test voice interaction service"
+              android:permission="android.permission.BIND_VOICE_INTERACTION"
+              android:process=":interactor"
+              android:exported="true">
+          <meta-data android:name="android.voice_interaction"
+                     android:resource="@xml/interaction_service" />
+          <intent-filter>
+              <action android:name="android.service.voice.VoiceInteractionService" />
+          </intent-filter>
+      </service>
+      <activity android:name=".AssistStructureActivity" >
+          <intent-filter>
+              <action android:name="android.intent.action.START_TEST_ASSIST_STRUCTURE" />
+              <action android:name="android.intent.action.START_TEST_FLAG_SECURE" />
+              <category android:name="android.intent.category.DEFAULT" />
+          </intent-filter>
+      </activity>
+      <activity android:name=".DisableContextActivity"
+                android:label="Disabled Context Activity">
+          <intent-filter>
+              <action android:name="android.intent.action.START_TEST_DISABLE_CONTEXT" />
+              <category android:name="android.intent.category.DEFAULT" />
+          </intent-filter>
+      </activity>
+      <service android:name=".MainInteractionSessionService"
+              android:permission="android.permission.BIND_VOICE_INTERACTION"
+              android:process=":session">
+      </service>
+      <service android:name=".MainRecognitionService"
+              android:label="CTS Voice Recognition Service">
+          <intent-filter>
+              <action android:name="android.speech.RecognitionService" />
+              <category android:name="android.intent.category.DEFAULT" />
+          </intent-filter>
+          <meta-data android:name="android.speech" android:resource="@xml/recognition_service" />
+      </service>
+    </application>
+</manifest>
+
diff --git a/tests/tests/assist/service/res/xml/interaction_service.xml b/tests/tests/assist/service/res/xml/interaction_service.xml
new file mode 100644
index 0000000..3ca7161
--- /dev/null
+++ b/tests/tests/assist/service/res/xml/interaction_service.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:sessionService="android.assist.service.MainInteractionSessionService"
+    android:recognitionService="android.assist.service.MainRecognitionService"
+    android:settingsActivity="android.assist.service.SettingsActivity"
+    android:supportsAssist="true" />
diff --git a/tests/tests/assist/service/res/xml/recognition_service.xml b/tests/tests/assist/service/res/xml/recognition_service.xml
new file mode 100644
index 0000000..3f763b1
--- /dev/null
+++ b/tests/tests/assist/service/res/xml/recognition_service.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<recognition-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:settingsActivity="android.assist.service.SettingsActivity" />
diff --git a/tests/tests/assist/service/src/android/voiceinteraction/service/AssistStructureActivity.java b/tests/tests/assist/service/src/android/voiceinteraction/service/AssistStructureActivity.java
new file mode 100644
index 0000000..784d63b
--- /dev/null
+++ b/tests/tests/assist/service/src/android/voiceinteraction/service/AssistStructureActivity.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.service;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.ComponentName;
+import android.os.Bundle;
+import android.util.Log;
+
+public class AssistStructureActivity extends Activity {
+    static final String TAG = "VoiceInteractionMain";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        Intent intent = new Intent();
+        intent.setComponent(new ComponentName(this, MainInteractionService.class));
+        Log.i(TAG, "Starting service.");
+        finish();
+        startService(intent);
+    }
+}
diff --git a/tests/tests/assist/service/src/android/voiceinteraction/service/DisableContextActivity.java b/tests/tests/assist/service/src/android/voiceinteraction/service/DisableContextActivity.java
new file mode 100644
index 0000000..52ba7ac
--- /dev/null
+++ b/tests/tests/assist/service/src/android/voiceinteraction/service/DisableContextActivity.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package android.assist.service;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.ComponentName;
+import android.os.Bundle;
+import android.util.Log;
+
+/**
+ * TODO(awlee): Change context on/off settings and test
+ */
+public class DisableContextActivity extends Activity {
+    static final String TAG = "DisableContextActivity";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        Intent intent = new Intent();
+        intent.setComponent(new ComponentName(this, MainInteractionService.class));
+        finish();
+        ComponentName serviceName = startService(intent);
+        Log.i(TAG, "Started service: " + serviceName);
+    }
+}
diff --git a/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionService.java b/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionService.java
new file mode 100644
index 0000000..85bd6ea
--- /dev/null
+++ b/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionService.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.service;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionService;
+import android.service.voice.VoiceInteractionSession;
+import android.util.Log;
+
+public class MainInteractionService extends VoiceInteractionService {
+    static final String TAG = "MainInteractionService";
+    private Intent mIntent;
+    private boolean mReady = false;
+
+    @Override
+    public void onReady() {
+        super.onReady();
+        mReady = true;
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        Log.i(TAG, "onStartCommand received");
+        mIntent = intent;
+        maybeStart();
+        return START_NOT_STICKY;
+    }
+
+    private void maybeStart() {
+       if (mIntent == null || !mReady) {
+            Log.wtf(TAG, "Can't start session because either intent is null or onReady() "
+                    + "has not been called yet. mIntent = " + mIntent + ", mReady = " + mReady);
+        } else {
+            Log.i(TAG, "Yay! about to start session");
+            if (isActiveService(this, new ComponentName(this, getClass()))) {
+                showSession(new Bundle(), VoiceInteractionSession.SHOW_WITH_ASSIST |
+                        VoiceInteractionSession.SHOW_WITH_SCREENSHOT);
+            } else {
+                Log.wtf(TAG, "**** Not starting MainInteractionService because" +
+                    " it is not set as the current voice interaction service");
+            }
+        }
+    }
+}
diff --git a/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionSession.java b/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionSession.java
new file mode 100644
index 0000000..9a835c2
--- /dev/null
+++ b/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionSession.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.service;
+
+import android.app.assist.AssistContent;
+import android.app.assist.AssistStructure;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionSession;
+import android.util.Log;
+
+import java.io.ByteArrayOutputStream;
+
+import android.assist.common.Utils;
+
+public class MainInteractionSession extends VoiceInteractionSession {
+    static final String TAG = "MainInteractionSession";
+
+    Intent mStartIntent;
+    Context mContext;
+    Bundle mAssistData = new Bundle();
+
+    private boolean hasReceivedAssistData = false;
+    private boolean hasReceivedScreenshot = false;
+
+    MainInteractionSession(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+    }
+
+    @Override
+    public void onDestroy() {
+        Log.i(TAG, "onDestroy()");
+        super.onDestroy();
+    }
+
+    @Override
+    public void onShow(Bundle args, int showFlags) {
+        // set some content view.
+        // TODO: check that the view takes up the whole screen.
+        // check that interactor mode is for assist
+        if ((showFlags & SHOW_WITH_ASSIST) == 0) {
+            return;
+        }
+        super.onShow(args, showFlags);
+    }
+
+    @Override
+    public void onHandleAssist(/*@Nullable */Bundle data, /*@Nullable*/ AssistStructure structure,
+        /*@Nullable*/ AssistContent content) {
+        Log.i(TAG, "onHandleAssist");
+        Log.i(TAG,
+            String.format("Bundle: %s, Structure: %s, Content: %s", data, structure, content));
+        super.onHandleAssist(data, structure, content);
+
+        // send to test to verify that this is accurate.
+        mAssistData.putParcelable(Utils.ASSIST_STRUCTURE_KEY, structure);
+        mAssistData.putParcelable(Utils.ASSIST_CONTENT_KEY, content);
+        mAssistData.putBundle(Utils.ASSIST_BUNDLE_KEY, data);
+        hasReceivedAssistData = true;
+        maybeBroadcastResults();
+    }
+
+    @Override
+    public void onHandleScreenshot(/*@Nullable*/ Bitmap screenshot) {
+        Log.i(TAG, String.format("onHandleScreenshot - Screenshot: %s", screenshot));
+        super.onHandleScreenshot(screenshot);
+        ByteArrayOutputStream bs = new ByteArrayOutputStream();
+        if (screenshot != null) {
+            screenshot.compress(Bitmap.CompressFormat.PNG, 50, bs);
+            mAssistData.putByteArray(Utils.ASSIST_SCREENSHOT_KEY, bs.toByteArray());
+        } else {
+            mAssistData.putByteArray(Utils.ASSIST_SCREENSHOT_KEY, null);
+        }
+        hasReceivedScreenshot = true;
+        maybeBroadcastResults();
+    }
+
+    private void maybeBroadcastResults() {
+        if (!hasReceivedAssistData) {
+            Log.i(TAG, "waiting for assist data before broadcasting results");
+        } else if (!hasReceivedScreenshot) {
+            Log.i(TAG, "waiting for screenshot before broadcasting results");
+        } else {
+            Intent intent = new Intent(Utils.BROADCAST_ASSIST_DATA_INTENT);
+            intent.putExtras(mAssistData);
+            Log.i(TAG,
+                    "broadcasting: " + intent.toString() + ", Bundle = " + mAssistData.toString());
+            mContext.sendBroadcast(intent);
+
+            hasReceivedAssistData = false;
+            hasReceivedScreenshot = false;
+        }
+    }
+
+    class DoneReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Log.i(TAG, "Done_broadcast " + intent.getAction());
+        }
+    }
+}
diff --git a/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionSessionService.java b/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionSessionService.java
new file mode 100644
index 0000000..ad356a6
--- /dev/null
+++ b/tests/tests/assist/service/src/android/voiceinteraction/service/MainInteractionSessionService.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.service;
+
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionSession;
+import android.service.voice.VoiceInteractionSessionService;
+
+public class MainInteractionSessionService extends VoiceInteractionSessionService {
+    @Override
+    public VoiceInteractionSession onNewSession(Bundle args) {
+        return new MainInteractionSession(this);
+    }
+}
diff --git a/tests/tests/assist/service/src/android/voiceinteraction/service/MainRecognitionService.java b/tests/tests/assist/service/src/android/voiceinteraction/service/MainRecognitionService.java
new file mode 100644
index 0000000..520f913
--- /dev/null
+++ b/tests/tests/assist/service/src/android/voiceinteraction/service/MainRecognitionService.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package android.assist.service;
+
+import android.content.Intent;
+import android.speech.RecognitionService;
+import android.util.Log;
+
+/**
+ * Stub recognition service needed to be a complete voice interactor.
+ */
+public class MainRecognitionService extends RecognitionService {
+    private static final String TAG = "MainRecognitionService";
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        Log.i(TAG, "onCreate");
+    }
+
+    @Override
+    protected void onStartListening(Intent recognizerIntent, Callback listener) {
+        Log.i(TAG, "onStartListening");
+    }
+
+    @Override
+    protected void onCancel(Callback listener) {
+        Log.i(TAG, "onCancel");
+    }
+
+    @Override
+    protected void onStopListening(Callback listener) {
+        Log.i(TAG, "onStopListening");
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        Log.i(TAG, "onDestroy");
+    }
+}
diff --git a/tests/tests/assist/src/android/assist/TestStartActivity.java b/tests/tests/assist/src/android/assist/TestStartActivity.java
new file mode 100644
index 0000000..df9b534
--- /dev/null
+++ b/tests/tests/assist/src/android/assist/TestStartActivity.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist;
+
+import android.assist.common.Utils;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.ComponentName;
+import android.os.Bundle;
+import android.util.Log;
+
+public class TestStartActivity extends Activity {
+    static final String TAG = "TestStartActivity";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.i(TAG, " in onCreate");
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        Log.i(TAG, " in onResume");
+    }
+
+    public void startTest(String testCaseName) {
+        Log.i(TAG, "Starting test activity for TestCaseType = " + testCaseName);
+        Intent intent = new Intent();
+        intent.putExtra(Utils.TESTCASE_TYPE, testCaseName);
+        intent.setAction("android.intent.action.START_TEST_" + testCaseName);
+        intent.setComponent(new ComponentName("android.assist.service",
+                "android.assist." + Utils.getTestActivity(testCaseName)));
+        startActivity(intent);
+    }
+
+    public void start3pApp(String testCaseName) {
+        Intent intent = new Intent();
+        intent.setAction("android.intent.action.TEST_APP_" + testCaseName);
+        intent.setComponent(Utils.getTestAppComponent(testCaseName));
+        startActivity(intent);
+    }
+
+    @Override protected void onPause() {
+        Log.i(TAG, " in onPause");
+        super.onPause();
+    }
+
+    @Override protected void onStart() {
+        super.onStart();
+        Log.i(TAG, " in onStart");
+    }
+
+    @Override protected void onRestart() {
+        super.onRestart();
+        Log.i(TAG, " in onRestart");
+    }
+
+    @Override protected void onStop() {
+        Log.i(TAG, " in onStop");
+        super.onStop();
+    }
+
+    @Override
+    protected void onDestroy() {
+        Log.i(TAG, " in onDestroy");
+        super.onDestroy();
+    }
+}
diff --git a/tests/tests/assist/src/android/assist/cts/AssistStructureTest.java b/tests/tests/assist/src/android/assist/cts/AssistStructureTest.java
new file mode 100644
index 0000000..97ab290
--- /dev/null
+++ b/tests/tests/assist/src/android/assist/cts/AssistStructureTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.cts;
+
+import android.assist.common.Utils;
+
+import android.provider.Settings;
+
+
+/**
+ *  Test that the AssistStructure returned is properly formatted.
+ */
+
+public class AssistStructureTest extends AssistTestBase {
+    static final String TAG = "AssistStructureTest";
+
+    private static final String TEST_CASE_TYPE = Utils.ASSIST_STRUCTURE;
+
+    public AssistStructureTest() {
+        super();
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        startTestActivity(TEST_CASE_TYPE);
+        waitForBroadcast();
+    }
+
+    public void testAssistStructure() throws Exception {
+        assertEquals("1", Settings.Secure.getString(
+            mContext.getContentResolver(), "assist_structure_enabled"));
+
+        verifyAssistDataNullness(false, false, false, false);
+        verifyAssistStructure(Utils.getTestAppComponent(TEST_CASE_TYPE),
+                    false /*FLAG_SECURE set*/);
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/assist/src/android/assist/cts/AssistTest.java b/tests/tests/assist/src/android/assist/cts/AssistTest.java
new file mode 100644
index 0000000..5241c4e
--- /dev/null
+++ b/tests/tests/assist/src/android/assist/cts/AssistTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.cts;
+
+import android.assist.TestStartActivity;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+
+import junit.framework.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import android.assist.common.Utils;
+
+public class AssistTest extends ActivityInstrumentationTestCase2<TestStartActivity> {
+    static final String TAG = "AssistTest";
+    private static final int TIMEOUT_MS = 2 * 1000;
+
+    public AssistTest() {
+        super(TestStartActivity.class);
+    }
+}
diff --git a/tests/tests/assist/src/android/assist/cts/AssistTestBase.java b/tests/tests/assist/src/android/assist/cts/AssistTestBase.java
new file mode 100644
index 0000000..e6d08cf
--- /dev/null
+++ b/tests/tests/assist/src/android/assist/cts/AssistTestBase.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.cts;
+
+import android.assist.TestStartActivity;
+import android.assist.common.Utils;
+
+import android.app.assist.AssistContent;
+import android.app.assist.AssistStructure;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.XmlResourceParser;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class AssistTestBase extends ActivityInstrumentationTestCase2<TestStartActivity> {
+    static final String TAG = "AssistTestBase";
+
+    protected TestStartActivity mTestActivity;
+    protected AssistContent mAssistContent;
+    protected AssistStructure mAssistStructure;
+    protected Bitmap mScreenshot;
+    protected BroadcastReceiver mReceiver;
+    protected Bundle mAssistBundle;
+    protected Context mContext;
+    protected CountDownLatch mLatch;
+    private String mTestName;
+
+    public AssistTestBase() {
+        super(TestStartActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getTargetContext();
+        assertEquals("1", Settings.Secure.getString(
+            mContext.getContentResolver(), "assist_structure_enabled"));
+        assertEquals("1", Settings.Secure.getString(
+            mContext.getContentResolver(), "assist_screenshot_enabled"));
+        logContextAndScreenshotSetting();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mContext.unregisterReceiver(mReceiver);
+        mTestActivity.finish();
+        super.tearDown();
+    }
+
+    protected void startTestActivity(String testName) {
+        Intent intent = new Intent();
+        mTestName = testName;
+        intent.setAction("android.intent.action.TEST_START_ACTIVITY_" + testName);
+        intent.setComponent(new ComponentName(getInstrumentation().getContext(),
+            TestStartActivity.class));
+        setActivityIntent(intent);
+        mTestActivity = getActivity();
+    }
+
+    /**
+     * Called after startTestActivity
+     */
+    protected boolean waitForBroadcast() throws Exception {
+        mLatch = new CountDownLatch(1);
+        if (mReceiver != null) {
+            mContext.unregisterReceiver(mReceiver);
+        }
+        mReceiver = new TestResultsReceiver();
+        mContext.registerReceiver(mReceiver,
+            new IntentFilter(Utils.BROADCAST_ASSIST_DATA_INTENT));
+
+        mTestActivity.start3pApp(mTestName);
+        mTestActivity.startTest(mTestName);
+        if (!mLatch.await(Utils.TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+            fail("Failed to receive broadcast in " + Utils.TIMEOUT_MS + "msec");
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Checks that the nullness of values are what we expect.
+     * @param isBundleNull True if assistBundle should be null.
+     * @param isStructureNull True if assistStructure should be null.
+     * @param isContentNull True if assistContent should be null.
+     * @param isScreenshotNull True if screenshot should be null.
+     */
+    protected void verifyAssistDataNullness(boolean isBundleNull, boolean isStructureNull,
+            boolean isContentNull, boolean isScreenshotNull) {
+
+        if ((mAssistContent == null) != isContentNull) {
+            fail(String.format("Should %s have been null - AssistContent: %s",
+                    isContentNull? "":"not", mAssistContent));
+        }
+
+        if ((mAssistStructure == null) != isStructureNull) {
+            fail(String.format("Should %s have been null - AssistStructure: %s",
+                isStructureNull ? "" : "not", mAssistStructure));
+        }
+
+        if ((mAssistBundle == null) != isBundleNull) {
+            fail(String.format("Should %s have been null - AssistBundle: %s",
+                    isBundleNull? "":"not", mAssistBundle));
+        }
+
+        if ((mScreenshot == null) != isScreenshotNull) {
+            fail(String.format("Should %s have been null - Screenshot: %s",
+                    isScreenshotNull? "":"not", mScreenshot));
+        }
+    }
+
+    /**
+     * Traverses and compares the view heirarchy of the backgroundApp and the view we expect.
+     *
+     * @param backgroundApp ComponentName of app the assistant is invoked upon
+     * @param isSecureWindow Denotes whether the activity has FLAG_SECURE set
+     */
+    protected void verifyAssistStructure(ComponentName backgroundApp, boolean isSecureWindow) {
+        // Check component name matches
+        assertEquals(backgroundApp.flattenToString(),
+            mAssistStructure.getActivityComponent().flattenToString());
+
+        int numWindows = mAssistStructure.getWindowNodeCount();
+        assertEquals(1, numWindows);
+        for (int i = 0; i < numWindows; i++) {
+            AssistStructure.ViewNode node = mAssistStructure.getWindowNodeAt(i).getRootViewNode();
+            // TODO: Actually traverse the view heirarchy and verify it matches what we expect
+            // If isSecureWindow, will not have any children.
+        }
+    }
+
+    protected void logContextAndScreenshotSetting() {
+        Log.i(TAG, "Context is: " + Settings.Secure.getString(
+            mContext.getContentResolver(), "assist_structure_enabled"));
+        Log.i(TAG, "Screenshot is: " + Settings.Secure.getString(
+            mContext.getContentResolver(), "assist_screenshot_enabled"));
+    }
+
+    class TestResultsReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent.getAction().equalsIgnoreCase(Utils.BROADCAST_ASSIST_DATA_INTENT)) { // not necessary?
+                Log.i(TAG, "Received broadcast with assist data.");
+                Bundle assistData = intent.getExtras();
+                AssistTestBase.this.mAssistBundle = assistData.getBundle(Utils.ASSIST_BUNDLE_KEY);
+                AssistTestBase.this.mAssistStructure = assistData.getParcelable(
+                        Utils.ASSIST_STRUCTURE_KEY);
+                AssistTestBase.this.mAssistContent = assistData.getParcelable(
+                        Utils.ASSIST_CONTENT_KEY);
+
+                byte[] bitmapArray = assistData.getByteArray(Utils.ASSIST_SCREENSHOT_KEY);
+                if (bitmapArray != null) {
+                    AssistTestBase.this.mScreenshot = BitmapFactory.decodeByteArray(
+                            bitmapArray, 0, bitmapArray.length);
+                } else {
+                    AssistTestBase.this.mScreenshot = null;
+                }
+
+                if (mLatch != null) {
+                    mLatch.countDown();
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/assist/src/android/assist/cts/DisableContextTest.java b/tests/tests/assist/src/android/assist/cts/DisableContextTest.java
new file mode 100644
index 0000000..9407ec5
--- /dev/null
+++ b/tests/tests/assist/src/android/assist/cts/DisableContextTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.cts;
+
+import android.assist.TestStartActivity;
+import android.assist.common.Utils;
+
+import android.app.Activity;
+import android.app.assist.AssistContent;
+import android.app.assist.AssistStructure;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.cts.util.SystemUtil;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+
+import java.lang.Override;
+import java.util.concurrent.CountDownLatch;
+
+/** Test we receive proper assist data when context is disabled or enabled */
+
+public class DisableContextTest extends AssistTestBase {
+    static final String TAG = "DisableContextTest";
+
+    private static final String TEST_CASE_TYPE = Utils.DISABLE_CONTEXT;
+
+    public DisableContextTest() {
+        super();
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        SystemUtil.runShellCommand(getInstrumentation(),
+                "settings put secure assist_structure_enabled 0");
+        SystemUtil.runShellCommand(getInstrumentation(),
+            "settings put secure assist_screenshot_enabled 0");
+        logContextAndScreenshotSetting();
+        startTestActivity(TEST_CASE_TYPE);
+        waitForBroadcast();
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        SystemUtil.runShellCommand(getInstrumentation(),
+                "settings put secure assist_structure_enabled 1");
+        SystemUtil.runShellCommand(getInstrumentation(),
+            "settings put secure assist_screenshot_enabled 1");
+        logContextAndScreenshotSetting();
+        super.tearDown();
+    }
+
+    public void testContextAndScreenshotOff() throws Exception {
+        // Both settings off
+        verifyAssistDataNullness(true, true, true, true);
+
+        // Screenshot off, context on
+        SystemUtil.runShellCommand(getInstrumentation(),
+            "settings put secure assist_structure_enabled 1");
+        SystemUtil.runShellCommand(getInstrumentation(),
+            "settings put secure assist_screenshot_enabled 0");
+        waitForBroadcast();
+
+        logContextAndScreenshotSetting();
+
+        verifyAssistDataNullness(false, false, false, true);
+
+        // Context off, screenshot on
+        SystemUtil.runShellCommand(getInstrumentation(),
+            "settings put secure assist_structure_enabled 0");
+        SystemUtil.runShellCommand(getInstrumentation(),
+            "settings put secure assist_screenshot_enabled 1");
+        waitForBroadcast();
+
+        logContextAndScreenshotSetting();
+
+        verifyAssistDataNullness(true, true, true, false);
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/assist/src/android/assist/cts/FlagSecureTest.java b/tests/tests/assist/src/android/assist/cts/FlagSecureTest.java
new file mode 100644
index 0000000..0e79d9d
--- /dev/null
+++ b/tests/tests/assist/src/android/assist/cts/FlagSecureTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.cts;
+
+import android.assist.common.Utils;
+
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * Test we receive proper assist data (root assistStructure with no children) when the assistant is
+ * invoked on an app with FLAG_SECURE set.
+ */
+public class FlagSecureTest extends AssistTestBase {
+
+    static final String TAG = "DisableContextTest";
+
+    private static final String TEST_CASE_TYPE = Utils.FLAG_SECURE;
+
+    public FlagSecureTest() {
+        super();
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        startTestActivity(TEST_CASE_TYPE);
+        waitForBroadcast();
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void testSecureActivity() throws Exception {
+        verifyAssistDataNullness(false, false, false, true);
+
+        // verify that we have only the root window and not its children.
+        verifyAssistStructure(Utils.getTestAppComponent(TEST_CASE_TYPE), true);
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/assist/testapp/Android.mk b/tests/tests/assist/testapp/Android.mk
new file mode 100644
index 0000000..68297ef
--- /dev/null
+++ b/tests/tests/assist/testapp/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := CtsAssistCommon
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsAssistApp
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/assist/testapp/AndroidManifest.xml b/tests/tests/assist/testapp/AndroidManifest.xml
new file mode 100644
index 0000000..371ae7b
--- /dev/null
+++ b/tests/tests/assist/testapp/AndroidManifest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.assist.testapp">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+
+        <activity android:name="TestApp"
+                android:label="Assist Test App"
+                android:theme="@android:style/Theme.Material.Light">
+          <intent-filter>
+              <action android:name="android.intent.action.TEST_APP_ASSIST_STRUCTURE" />
+              <category android:name="android.intent.category.DEFAULT" />
+              <category android:name="android.intent.category.VOICE" />
+          </intent-filter>
+        </activity>
+        <activity android:name="SecureActivity"
+                  android:label="Secure Test App"
+                  android:theme="@android:style/Theme.Material.Light">
+            <intent-filter>
+                <action android:name="android.intent.action.TEST_APP_FLAG_SECURE" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/tests/tests/assist/testapp/res/layout/secure_app.xml b/tests/tests/assist/testapp/res/layout/secure_app.xml
new file mode 100644
index 0000000..9169a37
--- /dev/null
+++ b/tests/tests/assist/testapp/res/layout/secure_app.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<RelativeLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+    <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/welcome" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/tests/tests/assist/testapp/res/layout/test_app.xml b/tests/tests/assist/testapp/res/layout/test_app.xml
new file mode 100644
index 0000000..9169a37
--- /dev/null
+++ b/tests/tests/assist/testapp/res/layout/test_app.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+<RelativeLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+    <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/welcome" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/tests/tests/assist/testapp/res/values/strings.xml b/tests/tests/assist/testapp/res/values/strings.xml
new file mode 100644
index 0000000..a245b36
--- /dev/null
+++ b/tests/tests/assist/testapp/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="welcome">Hello there!</string>
+</resources>
\ No newline at end of file
diff --git a/tests/tests/assist/testapp/src/android/voiceinteraction/testapp/SecureActivity.java b/tests/tests/assist/testapp/src/android/voiceinteraction/testapp/SecureActivity.java
new file mode 100644
index 0000000..83f7549
--- /dev/null
+++ b/tests/tests/assist/testapp/src/android/voiceinteraction/testapp/SecureActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.testapp;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+
+import android.view.WindowManager;
+
+public class SecureActivity extends Activity {
+    static final String TAG = "SecureActivity";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.i(TAG, "SecureActivity created");
+        setContentView(R.layout.secure_app);
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
+            WindowManager.LayoutParams.FLAG_SECURE);
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/assist/testapp/src/android/voiceinteraction/testapp/TestApp.java b/tests/tests/assist/testapp/src/android/voiceinteraction/testapp/TestApp.java
new file mode 100644
index 0000000..85a9342
--- /dev/null
+++ b/tests/tests/assist/testapp/src/android/voiceinteraction/testapp/TestApp.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.assist.testapp;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+
+public class TestApp extends Activity {
+    static final String TAG = "TestApp";
+
+    Bundle mTestinfo = new Bundle();
+    Bundle mTotalInfo = new Bundle();
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.i(TAG, "TestApp created");
+        getLayoutInflater().inflate(R.layout.test_app, null);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/content/src/android/content/res/cts/PrivateAttributeTest.java b/tests/tests/content/src/android/content/res/cts/PrivateAttributeTest.java
index 35466be..3024896 100644
--- a/tests/tests/content/src/android/content/res/cts/PrivateAttributeTest.java
+++ b/tests/tests/content/src/android/content/res/cts/PrivateAttributeTest.java
@@ -26,7 +26,7 @@
  */
 public class PrivateAttributeTest extends AndroidTestCase {
 
-    private static final int sLastPublicAttr = 0x010104d5;
+    private static final int sLastPublicAttr = 0x010104f1;
 
     public void testNoAttributesAfterLastPublicAttribute() throws Exception {
         final Resources res = getContext().getResources();
diff --git a/tests/tests/deqp/egl-temporary-failures.txt b/tests/tests/deqp/egl-temporary-failures.txt
deleted file mode 100644
index 1a3bb94..0000000
--- a/tests/tests/deqp/egl-temporary-failures.txt
+++ /dev/null
@@ -1,780 +0,0 @@
-dEQP-EGL.functional.sharing.gles2.multithread.simple.textures#gen_delete
-dEQP-EGL.functional.sharing.gles2.multithread.simple.textures#teximage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple.textures#teximage2d_texsubimage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple.textures#teximage2d_render
-dEQP-EGL.functional.sharing.gles2.multithread.simple.textures#teximage2d_texsubimage2d_render
-dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source#create_destroy
-dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source#create_texture
-dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source#texsubimage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source#teximage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source#create_texture_render
-dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source#texsubimage2d_render
-dEQP-EGL.functional.sharing.gles2.multithread.simple.images.texture_source#teximage2d_render
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.gen_delete#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.teximage2d#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.textures.texsubimage2d#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.gen_delete#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.bufferdata#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.buffers.buffersubdata#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.create_destroy#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.source#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.shaders.compile#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.create_destroy#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.attach_detach#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#15
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#17
-dEQP-EGL.functional.sharing.gles2.multithread.random.programs.link#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.create_destroy#19
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#4
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#6
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.teximage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.texsubimage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.texsubimage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.texsubimage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.texsubimage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.texsubimage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random.images.texsubimage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.buffers#gen_delete
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.buffers#bufferdata
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.buffers#buffersubdata
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.buffers#bufferdata_render
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.textures#gen_delete
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.textures#teximage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.textures#teximage2d_texsubimage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.textures#teximage2d_texsubimage2d_render
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.images.texture_source#texsubimage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.images.texture_source#teximage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.images.texture_source#create_texture_render
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_sync.images.texture_source#teximage2d_render
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.gen_delete#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.teximage2d#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.textures.texsubimage2d#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.gen_delete#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.bufferdata#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.buffers.buffersubdata#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.create_destroy#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.source#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.shaders.compile#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.create_destroy#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.attach_detach#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.programs.link#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.create_destroy#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.teximage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.teximage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.teximage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.teximage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_sync.images.texsubimage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.buffers#gen_delete
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.buffers#bufferdata
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.buffers#buffersubdata
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.textures#gen_delete
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.textures#teximage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.textures#teximage2d_texsubimage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.shaders#vtx_create_destroy
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.shaders#vtx_shadersource
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.shaders#vtx_compile
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.shaders#frag_create_destroy
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.shaders#frag_shadersource
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.shaders#frag_compile
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.images.texture_source#create_destroy
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.images.texture_source#create_texture
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.images.texture_source#texsubimage2d
-dEQP-EGL.functional.sharing.gles2.multithread.simple_egl_server_sync.images.texture_source#teximage2d
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.gen_delete#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.teximage2d#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.textures.texsubimage2d#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.gen_delete#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.bufferdata#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.buffers.buffersubdata#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.create_destroy#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.source#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.shaders.compile#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.create_destroy#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.attach_detach#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.programs.link#18
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#11
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.create_destroy#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#1
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#4
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#6
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#9
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#15
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#17
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.teximage2d#19
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#0
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#2
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#3
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#5
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#7
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#8
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#10
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#12
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#13
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#14
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#16
-dEQP-EGL.functional.sharing.gles2.multithread.random_egl_server_sync.images.texsubimage2d#19
-dEQP-EGL.functional.multithread#config
-dEQP-EGL.functional.multithread#pbuffer
-dEQP-EGL.functional.multithread#pixmap
-dEQP-EGL.functional.multithread#single_window
-dEQP-EGL.functional.multithread#context
-dEQP-EGL.functional.multithread#pbuffer_pixmap
-dEQP-EGL.functional.multithread#pixmap_window
-dEQP-EGL.functional.multithread#pixmap_single_window
-dEQP-EGL.functional.multithread#pixmap_context
-dEQP-EGL.functional.multithread#pbuffer_pixmap_context
-dEQP-EGL.functional.multithread#pixmap_single_window_context
diff --git a/tests/tests/deqp/gles3-golden-tests.txt b/tests/tests/deqp/gles3-golden-tests.txt
deleted file mode 100644
index a57fa40..0000000
--- a/tests/tests/deqp/gles3-golden-tests.txt
+++ /dev/null
@@ -1,37219 +0,0 @@
-dEQP-GLES3.info#vendor
-dEQP-GLES3.info#renderer
-dEQP-GLES3.info#version
-dEQP-GLES3.info#shading_language_version
-dEQP-GLES3.info#extensions
-dEQP-GLES3.info#render_target
-dEQP-GLES3.functional.prerequisite#state_reset
-dEQP-GLES3.functional.prerequisite#clear_color
-dEQP-GLES3.functional.prerequisite#read_pixels
-dEQP-GLES3.functional.implementation_limits#max_element_index
-dEQP-GLES3.functional.implementation_limits#subpixel_bits
-dEQP-GLES3.functional.implementation_limits#max_3d_texture_size
-dEQP-GLES3.functional.implementation_limits#max_texture_size
-dEQP-GLES3.functional.implementation_limits#max_array_texture_layers
-dEQP-GLES3.functional.implementation_limits#max_texture_lod_bias
-dEQP-GLES3.functional.implementation_limits#max_cube_map_texture_size
-dEQP-GLES3.functional.implementation_limits#max_renderbuffer_size
-dEQP-GLES3.functional.implementation_limits#max_draw_buffers
-dEQP-GLES3.functional.implementation_limits#max_color_attachments
-dEQP-GLES3.functional.implementation_limits#aliased_point_size_range
-dEQP-GLES3.functional.implementation_limits#aliased_line_width_range
-dEQP-GLES3.functional.implementation_limits#max_elements_indices
-dEQP-GLES3.functional.implementation_limits#max_elements_vertices
-dEQP-GLES3.functional.implementation_limits#num_compressed_texture_formats
-dEQP-GLES3.functional.implementation_limits#compressed_texture_formats
-dEQP-GLES3.functional.implementation_limits#num_program_binary_formats
-dEQP-GLES3.functional.implementation_limits#num_shader_binary_formats
-dEQP-GLES3.functional.implementation_limits#shader_compiler
-dEQP-GLES3.functional.implementation_limits#max_server_wait_timeout
-dEQP-GLES3.functional.implementation_limits#num_extensions
-dEQP-GLES3.functional.implementation_limits#major_version
-dEQP-GLES3.functional.implementation_limits#minor_version
-dEQP-GLES3.functional.implementation_limits#max_vertex_attribs
-dEQP-GLES3.functional.implementation_limits#max_vertex_uniform_components
-dEQP-GLES3.functional.implementation_limits#max_vertex_uniform_vectors
-dEQP-GLES3.functional.implementation_limits#max_vertex_uniform_blocks
-dEQP-GLES3.functional.implementation_limits#max_vertex_output_components
-dEQP-GLES3.functional.implementation_limits#max_vertex_texture_image_units
-dEQP-GLES3.functional.implementation_limits#max_fragment_uniform_components
-dEQP-GLES3.functional.implementation_limits#max_fragment_uniform_vectors
-dEQP-GLES3.functional.implementation_limits#max_fragment_uniform_blocks
-dEQP-GLES3.functional.implementation_limits#max_fragment_input_components
-dEQP-GLES3.functional.implementation_limits#max_texture_image_units
-dEQP-GLES3.functional.implementation_limits#min_program_texel_offset
-dEQP-GLES3.functional.implementation_limits#max_program_texel_offset
-dEQP-GLES3.functional.implementation_limits#max_uniform_buffer_bindings
-dEQP-GLES3.functional.implementation_limits#max_uniform_block_size
-dEQP-GLES3.functional.implementation_limits#uniform_buffer_offset_alignment
-dEQP-GLES3.functional.implementation_limits#max_combined_uniform_blocks
-dEQP-GLES3.functional.implementation_limits#max_combined_vertex_uniform_components
-dEQP-GLES3.functional.implementation_limits#max_combined_fragment_uniform_components
-dEQP-GLES3.functional.implementation_limits#max_varying_components
-dEQP-GLES3.functional.implementation_limits#max_varying_vectors
-dEQP-GLES3.functional.implementation_limits#max_combined_texture_image_units
-dEQP-GLES3.functional.implementation_limits#max_transform_feedback_interleaved_components
-dEQP-GLES3.functional.implementation_limits#max_transform_feedback_separate_attribs
-dEQP-GLES3.functional.implementation_limits#max_transform_feedback_separate_components
-dEQP-GLES3.functional.color_clear#single_rgb
-dEQP-GLES3.functional.color_clear#single_rgba
-dEQP-GLES3.functional.color_clear#multiple_rgb
-dEQP-GLES3.functional.color_clear#multiple_rgba
-dEQP-GLES3.functional.color_clear#long_rgb
-dEQP-GLES3.functional.color_clear#long_rgba
-dEQP-GLES3.functional.color_clear#subclears_rgb
-dEQP-GLES3.functional.color_clear#subclears_rgba
-dEQP-GLES3.functional.color_clear#short_scissored_rgb
-dEQP-GLES3.functional.color_clear#scissored_rgb
-dEQP-GLES3.functional.color_clear#scissored_rgba
-dEQP-GLES3.functional.color_clear#masked_rgb
-dEQP-GLES3.functional.color_clear#masked_rgba
-dEQP-GLES3.functional.color_clear#masked_scissored_rgb
-dEQP-GLES3.functional.color_clear#masked_scissored_rgba
-dEQP-GLES3.functional.color_clear#complex_rgb
-dEQP-GLES3.functional.color_clear#complex_rgba
-dEQP-GLES3.functional.depth_stencil_clear#depth
-dEQP-GLES3.functional.depth_stencil_clear#depth_scissored
-dEQP-GLES3.functional.depth_stencil_clear#depth_scissored_masked
-dEQP-GLES3.functional.depth_stencil_clear#stencil
-dEQP-GLES3.functional.depth_stencil_clear#stencil_scissored
-dEQP-GLES3.functional.depth_stencil_clear#depth_stencil
-dEQP-GLES3.functional.depth_stencil_clear#depth_stencil_scissored
-dEQP-GLES3.functional.buffer.write.basic#array_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#array_stream_read
-dEQP-GLES3.functional.buffer.write.basic#array_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#array_static_draw
-dEQP-GLES3.functional.buffer.write.basic#array_static_read
-dEQP-GLES3.functional.buffer.write.basic#array_static_copy
-dEQP-GLES3.functional.buffer.write.basic#array_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#array_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#array_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic#copy_read_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#copy_read_stream_read
-dEQP-GLES3.functional.buffer.write.basic#copy_read_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#copy_read_static_draw
-dEQP-GLES3.functional.buffer.write.basic#copy_read_static_read
-dEQP-GLES3.functional.buffer.write.basic#copy_read_static_copy
-dEQP-GLES3.functional.buffer.write.basic#copy_read_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#copy_read_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#copy_read_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic#copy_write_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#copy_write_stream_read
-dEQP-GLES3.functional.buffer.write.basic#copy_write_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#copy_write_static_draw
-dEQP-GLES3.functional.buffer.write.basic#copy_write_static_read
-dEQP-GLES3.functional.buffer.write.basic#copy_write_static_copy
-dEQP-GLES3.functional.buffer.write.basic#copy_write_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#copy_write_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#copy_write_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic#element_array_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#element_array_stream_read
-dEQP-GLES3.functional.buffer.write.basic#element_array_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#element_array_static_draw
-dEQP-GLES3.functional.buffer.write.basic#element_array_static_read
-dEQP-GLES3.functional.buffer.write.basic#element_array_static_copy
-dEQP-GLES3.functional.buffer.write.basic#element_array_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#element_array_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#element_array_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_stream_read
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_static_draw
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_static_read
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_static_copy
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#pixel_pack_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_stream_read
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_static_draw
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_static_read
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_static_copy
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#pixel_unpack_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_stream_read
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_static_draw
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_static_read
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_static_copy
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#transform_feedback_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic#uniform_stream_draw
-dEQP-GLES3.functional.buffer.write.basic#uniform_stream_read
-dEQP-GLES3.functional.buffer.write.basic#uniform_stream_copy
-dEQP-GLES3.functional.buffer.write.basic#uniform_static_draw
-dEQP-GLES3.functional.buffer.write.basic#uniform_static_read
-dEQP-GLES3.functional.buffer.write.basic#uniform_static_copy
-dEQP-GLES3.functional.buffer.write.basic#uniform_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic#uniform_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic#uniform_dynamic_copy
-dEQP-GLES3.functional.buffer.write.recreate_store#identical_1
-dEQP-GLES3.functional.buffer.write.recreate_store#identical_2
-dEQP-GLES3.functional.buffer.write.recreate_store#different_target
-dEQP-GLES3.functional.buffer.write.recreate_store#different_usage
-dEQP-GLES3.functional.buffer.write.recreate_store#different_size
-dEQP-GLES3.functional.buffer.write.recreate_store#random_1
-dEQP-GLES3.functional.buffer.write.recreate_store#random_2
-dEQP-GLES3.functional.buffer.write.recreate_store#random_3
-dEQP-GLES3.functional.buffer.write.recreate_store#random_4
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#array_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_read_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#copy_write_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#element_array_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_pack_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#pixel_unpack_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#transform_feedback_dynamic_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_stream_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_stream_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_stream_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_static_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_static_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_static_copy
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_dynamic_draw
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_dynamic_read
-dEQP-GLES3.functional.buffer.write.basic_subdata#uniform_dynamic_copy
-dEQP-GLES3.functional.buffer.write.partial_specify#whole_1
-dEQP-GLES3.functional.buffer.write.partial_specify#whole_2
-dEQP-GLES3.functional.buffer.write.partial_specify#whole_3
-dEQP-GLES3.functional.buffer.write.partial_specify#whole_4
-dEQP-GLES3.functional.buffer.write.partial_specify#low_1
-dEQP-GLES3.functional.buffer.write.partial_specify#low_2
-dEQP-GLES3.functional.buffer.write.partial_specify#low_3
-dEQP-GLES3.functional.buffer.write.partial_specify#high_1
-dEQP-GLES3.functional.buffer.write.partial_specify#high_2
-dEQP-GLES3.functional.buffer.write.partial_specify#high_3
-dEQP-GLES3.functional.buffer.write.partial_specify#middle_1
-dEQP-GLES3.functional.buffer.write.partial_specify#middle_2
-dEQP-GLES3.functional.buffer.write.partial_specify#middle_3
-dEQP-GLES3.functional.buffer.write.random#0
-dEQP-GLES3.functional.buffer.write.random#1
-dEQP-GLES3.functional.buffer.write.random#2
-dEQP-GLES3.functional.buffer.write.random#3
-dEQP-GLES3.functional.buffer.write.random#4
-dEQP-GLES3.functional.buffer.write.random#5
-dEQP-GLES3.functional.buffer.write.random#6
-dEQP-GLES3.functional.buffer.write.random#7
-dEQP-GLES3.functional.buffer.write.random#8
-dEQP-GLES3.functional.buffer.write.random#9
-dEQP-GLES3.functional.buffer.map.read.sub_data#array_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#array_partial
-dEQP-GLES3.functional.buffer.map.read.sub_data#copy_read_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#copy_read_partial
-dEQP-GLES3.functional.buffer.map.read.sub_data#copy_write_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#copy_write_partial
-dEQP-GLES3.functional.buffer.map.read.sub_data#element_array_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#element_array_partial
-dEQP-GLES3.functional.buffer.map.read.sub_data#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.read.sub_data#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.read.sub_data#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.read.sub_data#uniform_full
-dEQP-GLES3.functional.buffer.map.read.sub_data#uniform_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#array_full
-dEQP-GLES3.functional.buffer.map.read.map_write#array_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#copy_read_full
-dEQP-GLES3.functional.buffer.map.read.map_write#copy_read_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#copy_write_full
-dEQP-GLES3.functional.buffer.map.read.map_write#copy_write_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#element_array_full
-dEQP-GLES3.functional.buffer.map.read.map_write#element_array_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.read.map_write#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.read.map_write#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.read.map_write#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.read.map_write#uniform_full
-dEQP-GLES3.functional.buffer.map.read.map_write#uniform_partial
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#array_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_read_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#copy_write_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#element_array_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_pack_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#pixel_unpack_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#transform_feedback_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_stream_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_stream_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_stream_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_static_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_static_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_static_copy
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_dynamic_read
-dEQP-GLES3.functional.buffer.map.read.usage_hints#uniform_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.map_read#array_full
-dEQP-GLES3.functional.buffer.map.write.map_read#array_partial
-dEQP-GLES3.functional.buffer.map.write.map_read#copy_read_full
-dEQP-GLES3.functional.buffer.map.write.map_read#copy_read_partial
-dEQP-GLES3.functional.buffer.map.write.map_read#copy_write_full
-dEQP-GLES3.functional.buffer.map.write.map_read#copy_write_partial
-dEQP-GLES3.functional.buffer.map.write.map_read#element_array_full
-dEQP-GLES3.functional.buffer.map.write.map_read#element_array_partial
-dEQP-GLES3.functional.buffer.map.write.map_read#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.write.map_read#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.write.map_read#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.write.map_read#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.write.map_read#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.write.map_read#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.write.map_read#uniform_full
-dEQP-GLES3.functional.buffer.map.write.map_read#uniform_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#array_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#array_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#copy_read_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#copy_read_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#copy_write_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#copy_write_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#element_array_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#element_array_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#uniform_full
-dEQP-GLES3.functional.buffer.map.write.render_as_vertex_array#uniform_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#array_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#array_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#copy_read_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#copy_read_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#copy_write_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#copy_write_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#element_array_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#element_array_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#uniform_full
-dEQP-GLES3.functional.buffer.map.write.render_as_index_array#uniform_partial
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#array_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_read_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#copy_write_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#element_array_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_pack_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#pixel_unpack_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#transform_feedback_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_stream_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_stream_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_stream_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_static_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_static_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_static_copy
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_dynamic_draw
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_dynamic_read
-dEQP-GLES3.functional.buffer.map.write.usage_hints#uniform_dynamic_copy
-dEQP-GLES3.functional.buffer.map.write.invalidate#array_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#array_write_partial
-dEQP-GLES3.functional.buffer.map.write.invalidate#copy_read_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#copy_read_write_partial
-dEQP-GLES3.functional.buffer.map.write.invalidate#copy_write_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#copy_write_write_partial
-dEQP-GLES3.functional.buffer.map.write.invalidate#element_array_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#element_array_write_partial
-dEQP-GLES3.functional.buffer.map.write.invalidate#pixel_pack_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#pixel_pack_write_partial
-dEQP-GLES3.functional.buffer.map.write.invalidate#pixel_unpack_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#pixel_unpack_write_partial
-dEQP-GLES3.functional.buffer.map.write.invalidate#transform_feedback_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#transform_feedback_write_partial
-dEQP-GLES3.functional.buffer.map.write.invalidate#uniform_write_all
-dEQP-GLES3.functional.buffer.map.write.invalidate#uniform_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#array_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#array_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#copy_read_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#copy_read_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#copy_write_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#copy_write_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#element_array_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#element_array_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#pixel_pack_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#pixel_pack_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#pixel_unpack_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#pixel_unpack_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#transform_feedback_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#transform_feedback_write_partial
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#uniform_write_all
-dEQP-GLES3.functional.buffer.map.write.partial_invalidate#uniform_write_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#array_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#array_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#copy_read_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#copy_read_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#copy_write_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#copy_write_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#element_array_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#element_array_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#pixel_pack_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#pixel_unpack_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#transform_feedback_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#uniform_all
-dEQP-GLES3.functional.buffer.map.write.explicit_flush#uniform_partial
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#array
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#copy_read
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#copy_write
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#element_array
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#pixel_pack
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#pixel_unpack
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#transform_feedback
-dEQP-GLES3.functional.buffer.map.write.unsynchronized#uniform
-dEQP-GLES3.functional.buffer.map.read_write.map_read#array_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#array_partial
-dEQP-GLES3.functional.buffer.map.read_write.map_read#copy_read_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#copy_read_partial
-dEQP-GLES3.functional.buffer.map.read_write.map_read#copy_write_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#copy_write_partial
-dEQP-GLES3.functional.buffer.map.read_write.map_read#element_array_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#element_array_partial
-dEQP-GLES3.functional.buffer.map.read_write.map_read#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.read_write.map_read#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.read_write.map_read#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.read_write.map_read#uniform_full
-dEQP-GLES3.functional.buffer.map.read_write.map_read#uniform_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#array_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#array_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#copy_read_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#copy_read_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#copy_write_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#copy_write_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#element_array_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#element_array_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#uniform_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_vertex_array#uniform_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#array_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#array_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#copy_read_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#copy_read_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#copy_write_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#copy_write_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#element_array_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#element_array_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#pixel_pack_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#pixel_pack_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#pixel_unpack_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#pixel_unpack_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#transform_feedback_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#transform_feedback_partial
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#uniform_full
-dEQP-GLES3.functional.buffer.map.read_write.render_as_index_array#uniform_partial
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#array_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_read_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#copy_write_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#element_array_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_pack_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#pixel_unpack_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#transform_feedback_dynamic_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_stream_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_stream_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_stream_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_static_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_static_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_static_copy
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_dynamic_draw
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_dynamic_read
-dEQP-GLES3.functional.buffer.map.read_write.usage_hints#uniform_dynamic_copy
-dEQP-GLES3.functional.buffer.copy.basic#array_copy_read
-dEQP-GLES3.functional.buffer.copy.basic#array_copy_write
-dEQP-GLES3.functional.buffer.copy.basic#array_element_array
-dEQP-GLES3.functional.buffer.copy.basic#array_pixel_pack
-dEQP-GLES3.functional.buffer.copy.basic#array_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.basic#array_transform_feedback
-dEQP-GLES3.functional.buffer.copy.basic#array_uniform
-dEQP-GLES3.functional.buffer.copy.basic#copy_read_array
-dEQP-GLES3.functional.buffer.copy.basic#copy_read_copy_write
-dEQP-GLES3.functional.buffer.copy.basic#copy_read_element_array
-dEQP-GLES3.functional.buffer.copy.basic#copy_read_pixel_pack
-dEQP-GLES3.functional.buffer.copy.basic#copy_read_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.basic#copy_read_transform_feedback
-dEQP-GLES3.functional.buffer.copy.basic#copy_read_uniform
-dEQP-GLES3.functional.buffer.copy.basic#copy_write_array
-dEQP-GLES3.functional.buffer.copy.basic#copy_write_copy_read
-dEQP-GLES3.functional.buffer.copy.basic#copy_write_element_array
-dEQP-GLES3.functional.buffer.copy.basic#copy_write_pixel_pack
-dEQP-GLES3.functional.buffer.copy.basic#copy_write_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.basic#copy_write_transform_feedback
-dEQP-GLES3.functional.buffer.copy.basic#copy_write_uniform
-dEQP-GLES3.functional.buffer.copy.basic#element_array_array
-dEQP-GLES3.functional.buffer.copy.basic#element_array_copy_read
-dEQP-GLES3.functional.buffer.copy.basic#element_array_copy_write
-dEQP-GLES3.functional.buffer.copy.basic#element_array_pixel_pack
-dEQP-GLES3.functional.buffer.copy.basic#element_array_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.basic#element_array_transform_feedback
-dEQP-GLES3.functional.buffer.copy.basic#element_array_uniform
-dEQP-GLES3.functional.buffer.copy.basic#pixel_pack_array
-dEQP-GLES3.functional.buffer.copy.basic#pixel_pack_copy_read
-dEQP-GLES3.functional.buffer.copy.basic#pixel_pack_copy_write
-dEQP-GLES3.functional.buffer.copy.basic#pixel_pack_element_array
-dEQP-GLES3.functional.buffer.copy.basic#pixel_pack_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.basic#pixel_pack_transform_feedback
-dEQP-GLES3.functional.buffer.copy.basic#pixel_pack_uniform
-dEQP-GLES3.functional.buffer.copy.basic#pixel_unpack_array
-dEQP-GLES3.functional.buffer.copy.basic#pixel_unpack_copy_read
-dEQP-GLES3.functional.buffer.copy.basic#pixel_unpack_copy_write
-dEQP-GLES3.functional.buffer.copy.basic#pixel_unpack_element_array
-dEQP-GLES3.functional.buffer.copy.basic#pixel_unpack_pixel_pack
-dEQP-GLES3.functional.buffer.copy.basic#pixel_unpack_transform_feedback
-dEQP-GLES3.functional.buffer.copy.basic#pixel_unpack_uniform
-dEQP-GLES3.functional.buffer.copy.basic#transform_feedback_array
-dEQP-GLES3.functional.buffer.copy.basic#transform_feedback_copy_read
-dEQP-GLES3.functional.buffer.copy.basic#transform_feedback_copy_write
-dEQP-GLES3.functional.buffer.copy.basic#transform_feedback_element_array
-dEQP-GLES3.functional.buffer.copy.basic#transform_feedback_pixel_pack
-dEQP-GLES3.functional.buffer.copy.basic#transform_feedback_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.basic#transform_feedback_uniform
-dEQP-GLES3.functional.buffer.copy.basic#uniform_array
-dEQP-GLES3.functional.buffer.copy.basic#uniform_copy_read
-dEQP-GLES3.functional.buffer.copy.basic#uniform_copy_write
-dEQP-GLES3.functional.buffer.copy.basic#uniform_element_array
-dEQP-GLES3.functional.buffer.copy.basic#uniform_pixel_pack
-dEQP-GLES3.functional.buffer.copy.basic#uniform_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.basic#uniform_transform_feedback
-dEQP-GLES3.functional.buffer.copy.subrange#middle
-dEQP-GLES3.functional.buffer.copy.subrange#small_to_large
-dEQP-GLES3.functional.buffer.copy.subrange#large_to_small
-dEQP-GLES3.functional.buffer.copy.subrange#low_to_high_1
-dEQP-GLES3.functional.buffer.copy.subrange#low_to_high_2
-dEQP-GLES3.functional.buffer.copy.subrange#high_to_low_1
-dEQP-GLES3.functional.buffer.copy.subrange#high_to_low_2
-dEQP-GLES3.functional.buffer.copy.single_buffer#array_copy_read
-dEQP-GLES3.functional.buffer.copy.single_buffer#array_copy_write
-dEQP-GLES3.functional.buffer.copy.single_buffer#array_element_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#array_pixel_pack
-dEQP-GLES3.functional.buffer.copy.single_buffer#array_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.single_buffer#array_transform_feedback
-dEQP-GLES3.functional.buffer.copy.single_buffer#array_uniform
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_read_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_read_copy_write
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_read_element_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_read_pixel_pack
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_read_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_read_transform_feedback
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_read_uniform
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_write_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_write_copy_read
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_write_element_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_write_pixel_pack
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_write_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_write_transform_feedback
-dEQP-GLES3.functional.buffer.copy.single_buffer#copy_write_uniform
-dEQP-GLES3.functional.buffer.copy.single_buffer#element_array_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#element_array_copy_read
-dEQP-GLES3.functional.buffer.copy.single_buffer#element_array_copy_write
-dEQP-GLES3.functional.buffer.copy.single_buffer#element_array_pixel_pack
-dEQP-GLES3.functional.buffer.copy.single_buffer#element_array_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.single_buffer#element_array_transform_feedback
-dEQP-GLES3.functional.buffer.copy.single_buffer#element_array_uniform
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_pack_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_pack_copy_read
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_pack_copy_write
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_pack_element_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_pack_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_pack_transform_feedback
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_pack_uniform
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_unpack_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_unpack_copy_read
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_unpack_copy_write
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_unpack_element_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_unpack_pixel_pack
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_unpack_transform_feedback
-dEQP-GLES3.functional.buffer.copy.single_buffer#pixel_unpack_uniform
-dEQP-GLES3.functional.buffer.copy.single_buffer#transform_feedback_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#transform_feedback_copy_read
-dEQP-GLES3.functional.buffer.copy.single_buffer#transform_feedback_copy_write
-dEQP-GLES3.functional.buffer.copy.single_buffer#transform_feedback_element_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#transform_feedback_pixel_pack
-dEQP-GLES3.functional.buffer.copy.single_buffer#transform_feedback_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.single_buffer#transform_feedback_uniform
-dEQP-GLES3.functional.buffer.copy.single_buffer#uniform_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#uniform_copy_read
-dEQP-GLES3.functional.buffer.copy.single_buffer#uniform_copy_write
-dEQP-GLES3.functional.buffer.copy.single_buffer#uniform_element_array
-dEQP-GLES3.functional.buffer.copy.single_buffer#uniform_pixel_pack
-dEQP-GLES3.functional.buffer.copy.single_buffer#uniform_pixel_unpack
-dEQP-GLES3.functional.buffer.copy.single_buffer#uniform_transform_feedback
-dEQP-GLES3.functional.shaders.preprocessor.basic#correct_phases_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#correct_phases_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#invalid_identifier_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#invalid_identifier_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#null_directive_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#null_directive_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#invalid_directive_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#invalid_directive_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#missing_identifier_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#missing_identifier_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#empty_object_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#empty_object_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#empty_function_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#empty_function_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#empty_directive_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#empty_directive_fragment
-dEQP-GLES3.functional.shaders.preprocessor.definitions#define_value_and_function_vertex
-dEQP-GLES3.functional.shaders.preprocessor.definitions#define_value_and_function_fragment
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_object_invalid_syntax_vertex
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_object_invalid_syntax_fragment
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_invalid_object_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_function_vertex
-dEQP-GLES3.functional.shaders.preprocessor.definitions#undefine_function_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_definitions#define_non_identifier_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_definitions#define_non_identifier_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_definitions#undef_non_identifier_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_definitions#undef_non_identifier_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_definitions#undef_non_identifier_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_definitions#undef_non_identifier_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_ident_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_ident_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_whitespace_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_whitespace_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_op_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_op_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_floatval_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_floatval_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_floatval_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_floatval_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_intval_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_intval_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_intval_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#invalid_object_intval_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_ifdef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_ifdef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_undef_ifdef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_undef_ifdef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_ifndef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_ifndef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_defined_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_defined_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_defined_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_defined_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_comment_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_comment_fragment
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_multiline_comment_vertex
-dEQP-GLES3.functional.shaders.preprocessor.object_redefinitions#redefine_object_multiline_comment_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_redefinitions#invalid_identifier_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_redefinitions#invalid_identifier_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#multiline_comment_define_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#multiline_comment_define_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#nested_comment_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#nested_comment_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#comment_trick_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#comment_trick_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#comment_trick_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#comment_trick_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#invalid_comment_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#invalid_comment_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#unterminated_comment_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#unterminated_comment_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#unterminated_comment_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#unterminated_comment_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#comment_vertex
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#comment_fragment
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#define_vertex
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#define_fragment
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#preprocessing_token_vertex
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#preprocessing_token_fragment
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#token_vertex
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#token_fragment
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#middle_of_line_vertex
-dEQP-GLES3.functional.shaders.preprocessor.line_continuation#middle_of_line_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_definitions#same_object_and_function_param_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_definitions#same_object_and_function_param_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_definitions#complex_func_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_definitions#complex_func_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_definitions#function_definition_with_comments_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_definitions#function_definition_with_comments_fragment
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_5_vertex
-dEQP-GLES3.functional.shaders.preprocessor.recursion#recursion_5_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#function_redefinition_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#function_redefinition_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#function_redefinition_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#function_redefinition_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#function_redefinition_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#function_redefinition_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#invalid_function_redefinition_param_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#invalid_function_redefinition_param_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#invalid_function_redefinition_param_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#invalid_function_redefinition_param_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#invalid_function_redefinition_param_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.function_redefinitions#invalid_function_redefinition_param_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_5_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_5_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_6_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_6_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_7_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_7_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_8_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#arguments_8_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#unique_param_name_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#unique_param_name_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#argument_list_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#argument_list_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#argument_list_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#argument_list_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#argument_list_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#argument_list_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_function_definitions#no_closing_parenthesis_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.semantic#ops_as_arguments_vertex
-dEQP-GLES3.functional.shaders.preprocessor.semantic#ops_as_arguments_fragment
-dEQP-GLES3.functional.shaders.preprocessor.semantic#correct_order_vertex
-dEQP-GLES3.functional.shaders.preprocessor.semantic#correct_order_fragment
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#version_vertex
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#version_fragment
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#gl_es_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#gl_es_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#gl_es_2_vertex
-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#file_vertex
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#file_fragment
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#if_gl_es_vertex
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#if_gl_es_fragment
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#if_version_vertex
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#if_version_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_5_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#basic_5_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#unary_ops_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#unary_ops_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#unary_ops_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion#unary_ops_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_op_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_op_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_op_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_op_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_5_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_identifier_5_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_rparen_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#invalid_defined_expected_rparen_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#defined_define_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_ops#defined_define_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#valid_undefined_identifier_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#valid_undefined_identifier_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#valid_undefined_identifier_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#valid_undefined_identifier_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_5_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_5_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_6_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_6_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_7_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_7_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_8_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_8_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_9_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_9_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_10_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_10_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_11_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_11_fragment
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_12_vertex
-dEQP-GLES3.functional.shaders.preprocessor.undefined_identifiers#undefined_identifier_12_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_ifdef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_ifdef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_ifndef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_ifndef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#invalid_ifdef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#invalid_ifdef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#invalid_ifndef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#invalid_ifndef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_if_defined_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#empty_if_defined_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_if_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_if_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_if_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_if_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_ifdef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_ifdef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_ifndef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_ifndef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_else_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_else_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_else_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_else_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_elif_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_elif_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_elif_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_elif_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_elif_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_elif_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#elif_after_else_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#elif_after_else_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#else_without_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#else_without_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#elif_without_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#elif_without_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#endif_without_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#endif_without_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#else_after_else_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#else_after_else_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#nested_elif_without_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#nested_elif_without_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#if_float_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#if_float_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_elif_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_elif_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_else_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_else_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_endif_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_endif_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_ifdef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_ifdef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_ifndef_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#tokens_after_ifndef_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_nested_blocks_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_conditionals#unterminated_nested_blocks_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifdef_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifdef_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifdef_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifdef_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifdef_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifdef_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifndef_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifndef_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifndef_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#ifndef_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#mixed_conditional_inclusion_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#mixed_conditional_inclusion_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#nested_if_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#nested_if_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#nested_if_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#nested_if_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#nested_if_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.conditionals#nested_if_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_is_less_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_is_less_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_is_more_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_is_more_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_missing_es_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_missing_es_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_missing_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_missing_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_not_first_statement_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_not_first_statement_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_not_first_statement_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_not_first_statement_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_invalid_token_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_invalid_token_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_invalid_token_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#version_invalid_token_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#invalid_version_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#invalid_version_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#additional_tokens_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#additional_tokens_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#error_with_no_tokens_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#error_with_no_tokens_fragment
-dEQP-GLES3.functional.shaders.preprocessor.directive#error_vertex
-dEQP-GLES3.functional.shaders.preprocessor.directive#error_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_and_file_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_and_file_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_defined_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_defined_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#empty_line_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#empty_line_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#invalid_line_file_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#invalid_line_file_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.pragmas#pragma_vertex
-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.extensions#basic_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#basic_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#macro_exp_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#macro_exp_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#missing_extension_name_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#missing_extension_name_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_extension_name_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_extension_name_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#missing_colon_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#missing_colon_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#expected_colon_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#expected_colon_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#missing_behavior_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#missing_behavior_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_behavior_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_behavior_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_behavior_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_behavior_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_char_in_name_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_char_in_name_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_char_in_behavior_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#invalid_char_in_behavior_fragment
-dEQP-GLES3.functional.shaders.preprocessor.extensions#unterminated_comment_vertex
-dEQP-GLES3.functional.shaders.preprocessor.extensions#unterminated_comment_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#shift_left_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#shift_left_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#shift_right_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#shift_right_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#cmp_less_than_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#cmp_less_than_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#less_or_equal_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#less_or_equal_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#or_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#or_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#and_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#and_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#xor_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#xor_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#mod_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#mod_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_value_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_value_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_tricky_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_tricky_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_if_no_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_if_no_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_multi_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_multi_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_single_if_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_single_if_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_ifelse_true_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_ifelse_true_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_ifelse_false_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#parenthesis_ifelse_false_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_basic_0_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_basic_0_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_basic_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_basic_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_simple_precedence_0_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_simple_precedence_0_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_simple_precedence_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#eval_simple_precedence_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_4_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_5_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_5_fragment
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_6_vertex
-dEQP-GLES3.functional.shaders.preprocessor.expressions#defined_6_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_unary_expr_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_unary_expr_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_binary_expr_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_binary_expr_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#missing_expr_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#missing_expr_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_expr_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_expr_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_expr_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_expr_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_expr_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#invalid_expr_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#unopened_parenthesis_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#unopened_parenthesis_fragment
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#unclosed_parenthesis_vertex
-dEQP-GLES3.functional.shaders.preprocessor.invalid_expressions#unclosed_parenthesis_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_not_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_not_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_not_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_not_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_not_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_not_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_bit_invert_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_bit_invert_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_minus_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_minus_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_plus_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#modulo_vs_plus_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_bit_invert_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_bit_invert_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_minus_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_minus_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_plus_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#div_vs_plus_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_bit_invert_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_bit_invert_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_minus_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_minus_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_plus_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#mul_vs_plus_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#sub_vs_modulo_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#sub_vs_modulo_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#sub_vs_div_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#sub_vs_div_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#sub_vs_mul_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#sub_vs_mul_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#add_vs_modulo_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#add_vs_modulo_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#add_vs_div_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#add_vs_div_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#add_vs_mul_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#add_vs_mul_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#rshift_vs_sub_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#rshift_vs_sub_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#rshift_vs_add_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#rshift_vs_add_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#lshift_vs_sub_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#lshift_vs_sub_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#lshift_vs_add_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#lshift_vs_add_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_or_equal_vs_rshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_or_equal_vs_rshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_or_equal_vs_lshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_or_equal_vs_lshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_or_equal_vs_rshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_or_equal_vs_rshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_or_equal_vs_lshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_or_equal_vs_lshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_vs_rshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_vs_rshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_vs_lshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#greater_vs_lshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_vs_rshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_vs_rshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_vs_lshift_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#less_vs_lshift_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_greater_or_equal_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_greater_or_equal_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_less_or_equal_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_less_or_equal_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_greater_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_greater_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_less_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#not_equal_vs_less_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_greater_or_equal_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_greater_or_equal_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_less_or_equal_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_less_or_equal_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_greater_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_greater_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_less_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#equal_vs_less_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#bitwise_and_vs_not_equal_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#bitwise_and_vs_not_equal_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#bitwise_and_vs_equal_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#bitwise_and_vs_equal_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#xor_vs_bitwise_and_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#xor_vs_bitwise_and_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#bitwise_or_vs_xor_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#bitwise_or_vs_xor_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#logical_and_vs_bitwise_or_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#logical_and_vs_bitwise_or_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#logical_and_vs_bitwise_and_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#logical_and_vs_bitwise_and_fragment
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#logical_or_vs_logical_and_vertex
-dEQP-GLES3.functional.shaders.preprocessor.operator_precedence#logical_or_vs_logical_and_fragment
-dEQP-GLES3.functional.shaders.constants#float_input_vertex
-dEQP-GLES3.functional.shaders.constants#float_input_fragment
-dEQP-GLES3.functional.shaders.constants#float_uniform_vertex
-dEQP-GLES3.functional.shaders.constants#float_uniform_fragment
-dEQP-GLES3.functional.shaders.constants#float_0_vertex
-dEQP-GLES3.functional.shaders.constants#float_0_fragment
-dEQP-GLES3.functional.shaders.constants#float_1_vertex
-dEQP-GLES3.functional.shaders.constants#float_1_fragment
-dEQP-GLES3.functional.shaders.constants#float_2_vertex
-dEQP-GLES3.functional.shaders.constants#float_2_fragment
-dEQP-GLES3.functional.shaders.constants#float_3_vertex
-dEQP-GLES3.functional.shaders.constants#float_3_fragment
-dEQP-GLES3.functional.shaders.constants#float_4_vertex
-dEQP-GLES3.functional.shaders.constants#float_4_fragment
-dEQP-GLES3.functional.shaders.constants#float_5_vertex
-dEQP-GLES3.functional.shaders.constants#float_5_fragment
-dEQP-GLES3.functional.shaders.constants#float_6_vertex
-dEQP-GLES3.functional.shaders.constants#float_6_fragment
-dEQP-GLES3.functional.shaders.constants#float_7_vertex
-dEQP-GLES3.functional.shaders.constants#float_7_fragment
-dEQP-GLES3.functional.shaders.constants#float_8_vertex
-dEQP-GLES3.functional.shaders.constants#float_8_fragment
-dEQP-GLES3.functional.shaders.constants#float_f_suffix_0_vertex
-dEQP-GLES3.functional.shaders.constants#float_f_suffix_0_fragment
-dEQP-GLES3.functional.shaders.constants#float_f_suffix_1_vertex
-dEQP-GLES3.functional.shaders.constants#float_f_suffix_1_fragment
-dEQP-GLES3.functional.shaders.constants#int_0_vertex
-dEQP-GLES3.functional.shaders.constants#int_0_fragment
-dEQP-GLES3.functional.shaders.constants#int_1_vertex
-dEQP-GLES3.functional.shaders.constants#int_1_fragment
-dEQP-GLES3.functional.shaders.constants#int_2_vertex
-dEQP-GLES3.functional.shaders.constants#int_2_fragment
-dEQP-GLES3.functional.shaders.constants#int_3_vertex
-dEQP-GLES3.functional.shaders.constants#int_3_fragment
-dEQP-GLES3.functional.shaders.constants#int_4_vertex
-dEQP-GLES3.functional.shaders.constants#int_4_fragment
-dEQP-GLES3.functional.shaders.constants#bool_0_vertex
-dEQP-GLES3.functional.shaders.constants#bool_0_fragment
-dEQP-GLES3.functional.shaders.constants#bool_1_vertex
-dEQP-GLES3.functional.shaders.constants#bool_1_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_global_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_global_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_main_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_main_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_function_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_function_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_scope_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_scope_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_1_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_1_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_2_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_2_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_3_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_3_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_4_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_scope_shawdowing_4_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_operations_with_const_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_operations_with_const_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_1_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_1_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_2_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_2_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_3_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_3_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_4_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assignment_4_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assign_uniform_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assign_uniform_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assign_varying
-dEQP-GLES3.functional.shaders.constants#const_float_from_int_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_from_int_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_from_vec2_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_from_vec2_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_from_vec3_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_from_vec3_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_from_vec4_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_from_vec4_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assign_variable_1_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assign_variable_1_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assign_variable_2_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assign_variable_2_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_assign_user_func_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_assign_user_func_fragment
-dEQP-GLES3.functional.shaders.constants#int_decimal_vertex
-dEQP-GLES3.functional.shaders.constants#int_decimal_fragment
-dEQP-GLES3.functional.shaders.constants#int_octal_vertex
-dEQP-GLES3.functional.shaders.constants#int_octal_fragment
-dEQP-GLES3.functional.shaders.constants#int_hexadecimal_0_vertex
-dEQP-GLES3.functional.shaders.constants#int_hexadecimal_0_fragment
-dEQP-GLES3.functional.shaders.constants#int_hexadecimal_1_vertex
-dEQP-GLES3.functional.shaders.constants#int_hexadecimal_1_fragment
-dEQP-GLES3.functional.shaders.constants#uint_decimal_0_vertex
-dEQP-GLES3.functional.shaders.constants#uint_decimal_0_fragment
-dEQP-GLES3.functional.shaders.constants#uint_decimal_1_vertex
-dEQP-GLES3.functional.shaders.constants#uint_decimal_1_fragment
-dEQP-GLES3.functional.shaders.constants#uint_octal_0_vertex
-dEQP-GLES3.functional.shaders.constants#uint_octal_0_fragment
-dEQP-GLES3.functional.shaders.constants#uint_octal_1_vertex
-dEQP-GLES3.functional.shaders.constants#uint_octal_1_fragment
-dEQP-GLES3.functional.shaders.constants#uint_hexadecimal_0_vertex
-dEQP-GLES3.functional.shaders.constants#uint_hexadecimal_0_fragment
-dEQP-GLES3.functional.shaders.constants#uint_hexadecimal_1_vertex
-dEQP-GLES3.functional.shaders.constants#uint_hexadecimal_1_fragment
-dEQP-GLES3.functional.shaders.constants#int_from_uint_vertex
-dEQP-GLES3.functional.shaders.constants#int_from_uint_fragment
-dEQP-GLES3.functional.shaders.constants#uint_from_int_vertex
-dEQP-GLES3.functional.shaders.constants#uint_from_int_fragment
-dEQP-GLES3.functional.shaders.constants#int_from_float_vertex
-dEQP-GLES3.functional.shaders.constants#int_from_float_fragment
-dEQP-GLES3.functional.shaders.constants#uint_from_float_vertex
-dEQP-GLES3.functional.shaders.constants#uint_from_float_fragment
-dEQP-GLES3.functional.shaders.constants#bool_from_int_vertex
-dEQP-GLES3.functional.shaders.constants#bool_from_int_fragment
-dEQP-GLES3.functional.shaders.constants#bool_from_uint_vertex
-dEQP-GLES3.functional.shaders.constants#bool_from_uint_fragment
-dEQP-GLES3.functional.shaders.constants#bool_from_float_vertex
-dEQP-GLES3.functional.shaders.constants#bool_from_float_fragment
-dEQP-GLES3.functional.shaders.constants#invalid_octal_0_vertex
-dEQP-GLES3.functional.shaders.constants#invalid_octal_0_fragment
-dEQP-GLES3.functional.shaders.constants#invalid_hexadecimal_0_vertex
-dEQP-GLES3.functional.shaders.constants#invalid_hexadecimal_0_fragment
-dEQP-GLES3.functional.shaders.constants#invalid_hexadecimal_1_vertex
-dEQP-GLES3.functional.shaders.constants#invalid_hexadecimal_1_fragment
-dEQP-GLES3.functional.shaders.linkage.varying.rules#fragment_declare
-dEQP-GLES3.functional.shaders.linkage.varying.rules#vertex_declare
-dEQP-GLES3.functional.shaders.linkage.varying.rules#both_declare
-dEQP-GLES3.functional.shaders.linkage.varying.rules#vertex_declare_fragment_use
-dEQP-GLES3.functional.shaders.linkage.varying.rules#vertex_use_fragment_declare
-dEQP-GLES3.functional.shaders.linkage.varying.rules#vertex_use_declare_fragment
-dEQP-GLES3.functional.shaders.linkage.varying.rules#vertex_use_fragment_use
-dEQP-GLES3.functional.shaders.linkage.varying.rules#differing_precision_1
-dEQP-GLES3.functional.shaders.linkage.varying.rules#differing_precision_2
-dEQP-GLES3.functional.shaders.linkage.varying.rules#differing_precision_3
-dEQP-GLES3.functional.shaders.linkage.varying.rules#type_mismatch_2
-dEQP-GLES3.functional.shaders.linkage.varying.rules#type_mismatch_3
-dEQP-GLES3.functional.shaders.linkage.varying.rules#invalid_type_bool
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#float
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#vec2
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#vec3
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#vec4
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat2
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat2x3
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat2x4
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat3x2
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat3
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat3x4
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat4x2
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat4x3
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#mat4
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#int
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#ivec2
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#ivec3
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#ivec4
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#uint
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#uvec2
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#uvec3
-dEQP-GLES3.functional.shaders.linkage.varying.basic_types#uvec4
-dEQP-GLES3.functional.shaders.linkage.varying.struct#float
-dEQP-GLES3.functional.shaders.linkage.varying.struct#vec2
-dEQP-GLES3.functional.shaders.linkage.varying.struct#vec3
-dEQP-GLES3.functional.shaders.linkage.varying.struct#vec4
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat2
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat2x3
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat2x4
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat3x2
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat3
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat3x4
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat4x2
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat4x3
-dEQP-GLES3.functional.shaders.linkage.varying.struct#mat4
-dEQP-GLES3.functional.shaders.linkage.varying.struct#int
-dEQP-GLES3.functional.shaders.linkage.varying.struct#ivec2
-dEQP-GLES3.functional.shaders.linkage.varying.struct#ivec3
-dEQP-GLES3.functional.shaders.linkage.varying.struct#ivec4
-dEQP-GLES3.functional.shaders.linkage.varying.struct#uint
-dEQP-GLES3.functional.shaders.linkage.varying.struct#uvec2
-dEQP-GLES3.functional.shaders.linkage.varying.struct#uvec3
-dEQP-GLES3.functional.shaders.linkage.varying.struct#uvec4
-dEQP-GLES3.functional.shaders.linkage.varying.struct#float_vec3
-dEQP-GLES3.functional.shaders.linkage.varying.interpolation#smooth
-dEQP-GLES3.functional.shaders.linkage.varying.interpolation#centroid
-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.struct#basic
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#vertex_only
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#fragment_only
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#vec4
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#vertex_only_vec4
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#fragment_only_vec4
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_vec4
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#vec4_vec3
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#vertex_only_vec4_vec3
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#fragment_only_vec4_vec3
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_vec4_vec3
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#vec4_float
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#vertex_only_vec4_float
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#fragment_only_vec4_float
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_vec4_float
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_vec4_struct
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_vec4_vec3_struct
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_vec2_vec3
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_vec2_int
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_int_float
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_bvec2_vec2
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_ivec2_vec2
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#partial_ivec2_ivec2
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#light_struct_highp
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#light_struct_mediump
-dEQP-GLES3.functional.shaders.linkage.uniform.block#type_mismatch
-dEQP-GLES3.functional.shaders.linkage.uniform.block#members_mismatch
-dEQP-GLES3.functional.shaders.linkage.uniform.block#layout_qualifier_mismatch_4
-dEQP-GLES3.functional.shaders.linkage.uniform.block#layout_qualifier_mismatch_5
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#float_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#int_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#uint_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_scalar#bool_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#float_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#int_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#uint_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_vector#bool_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_float_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_float_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_int_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_int_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_bool_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_bool_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec2_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec3_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#vec4_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec2_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec3_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#ivec4_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec2_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec3_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#uvec4_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec2_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec3_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_uint_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_scalar#bvec4_to_uint_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#vec3_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#ivec3_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#uvec3_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_illegal#bvec3_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec4_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec4_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec4_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec4_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec3_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec3_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec3_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec3_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#vec2_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#ivec2_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#uvec2_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_to_vector#bvec2_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#float_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#int_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#uint_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.scalar_to_matrix#bool_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x3_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat4x2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x4_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat3x2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x4_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2x3_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_to_matrix#mat2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_vec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_vec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_ivec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_ivec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_bvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_bvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_vec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_bvec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_float_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_int_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_uint_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_bool_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_bool_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_ivec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bvec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec3_float_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec3_float_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_ivec2_int_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_ivec2_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec3_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_uvec4_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uvec2_bool_to_uvec4_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_vec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_vec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_ivec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_ivec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_bvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_bvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_float_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_int_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_uint_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_bool_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_float_int_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#vec2_bool_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_float_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bvec2_int_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_ivec2_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_uvec3_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_uvec2_to_uvec3_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_vec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_vec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_ivec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_ivec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_bvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_bvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_float_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_int_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_uint_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#bool_bool_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_int_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#float_bool_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_bool_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#int_uint_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_uvec2_vertex
-dEQP-GLES3.functional.shaders.conversions.vector_combine#uint_float_to_uvec2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_vec2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_vec2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec2_bvec2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec2_bvec2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_float_float_float_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_float_float_float_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_int_int_int_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_int_int_int_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#uint_uint_uint_uint_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#uint_uint_uint_uint_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bool_bool_bool_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bool_bool_bool_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_bool_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_bool_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_bvec2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_bvec2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_float_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_float_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_float_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_float_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_ivec2_int_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_ivec2_int_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_ivec2_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_ivec2_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_uvec3_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_uvec3_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_uvec2_bool_to_mat2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_uvec2_bool_to_mat2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_bvec3_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_bvec3_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_float_float_float_float_float_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_float_float_float_float_float_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_int_int_int_int_int_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_int_int_int_int_int_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bool_bool_bool_bool_bool_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bool_bool_bool_bool_bool_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_bool_float_int_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_bool_float_int_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_ivec3_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_ivec3_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_bvec4_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_bvec4_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_float_ivec2_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_float_ivec2_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_float_bvec2_to_mat2x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_float_bvec2_to_mat2x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_vec2_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_vec2_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec3_ivec3_ivec2_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec3_ivec3_ivec2_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_int_bool_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_int_bool_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec2_bool_bvec2_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec2_bool_bvec2_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec2_int_vec4_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec2_int_vec4_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec2_bool_to_mat2x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec2_bool_to_mat2x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_bvec3_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_bvec3_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_float_float_float_float_float_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_float_float_float_float_float_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_int_int_int_int_int_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#int_int_int_int_int_int_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bool_bool_bool_bool_bool_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bool_bool_bool_bool_bool_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_bool_float_int_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_bool_float_int_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_ivec3_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_ivec3_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_bvec4_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_bvec4_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_float_ivec2_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec3_float_ivec2_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_float_bvec2_to_mat3x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_float_bvec2_to_mat3x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_vec3_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_vec3_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec3_ivec3_ivec3_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec3_ivec3_ivec3_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_int_bool_bool_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_int_bool_bool_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec2_bool_bvec2_float_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec2_bool_bvec2_float_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec2_int_vec4_bool_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec2_int_vec4_bool_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec2_bool_bool_to_mat3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec2_bool_bool_to_mat3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec4_vec4_vec4_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec4_vec4_vec4_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec4_ivec4_ivec4_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec4_ivec4_ivec4_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec3_bool_bvec3_float_bool_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec3_bool_bvec3_float_bool_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec4_int_vec4_bool_float_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec4_int_vec4_bool_float_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec4_bool_bool_int_to_mat3x4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec4_bool_bool_int_to_mat3x4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_vec2_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec3_vec3_vec2_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec3_ivec3_ivec2_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec3_ivec3_ivec2_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_int_bool_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_int_bool_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec2_bool_bvec2_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec2_bool_bvec2_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec2_int_vec4_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec2_int_vec4_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec2_bool_to_mat4x2_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec2_bool_to_mat4x2_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec4_vec4_vec4_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec4_vec4_vec4_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec4_ivec4_ivec4_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec4_ivec4_ivec4_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec3_bool_bvec3_float_bool_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_float_int_vec3_bool_bvec3_float_bool_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec4_int_vec4_bool_float_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bool_bvec4_int_vec4_bool_float_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec4_bool_bool_int_to_mat4x3_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_bvec4_ivec4_bool_bool_int_to_mat4x3_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec4_vec4_vec4_vec4_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#vec4_vec4_vec4_vec4_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec4_ivec4_ivec4_ivec4_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#ivec4_ivec4_ivec4_ivec4_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec4_bvec4_bvec4_bvec4_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#bvec4_bvec4_bvec4_bvec4_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_ivec3_bvec3_vec4_ivec2_float_vec2_to_mat4_vertex
-dEQP-GLES3.functional.shaders.conversions.matrix_combine#float_ivec3_bvec3_vec4_ivec2_float_vec2_to_mat4_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#single_statement_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#single_statement_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#compound_statement_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#compound_statement_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#sequence_statements_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#sequence_statements_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#sequence_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#sequence_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#complex_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#complex_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#if_else_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#if_else_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#if_elseif_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#if_elseif_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#if_elseif_else_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#if_elseif_else_fragment
-dEQP-GLES3.functional.shaders.conditionals.if#mixed_if_elseif_else_vertex
-dEQP-GLES3.functional.shaders.conditionals.if#mixed_if_elseif_else_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#missing_parenthesis_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#missing_parenthesis_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#unclosed_parenthesis_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#unclosed_parenthesis_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_zero_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_zero_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_one_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_one_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_uniform_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#int_uniform_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#float_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#float_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#float_zero_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#float_zero_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#float_one_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#float_one_condition_fragment
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#sampler_condition_vertex
-dEQP-GLES3.functional.shaders.conditionals.invalid_if#sampler_condition_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#in_in_vertex_main
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#out_in_vertex_main
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#in_in_fragment_main
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#out_in_fragment_main
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_in_vertex_main
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_in_fragment_main
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_in_main_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_in_main_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#invariant_uniform_block_1_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#invariant_uniform_block_1_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_layout_qualifier_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_layout_qualifier_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_member_layout_qualifier_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_member_layout_qualifier_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_nested_struct_definition_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_nested_struct_definition_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#nested_uniform_block_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#nested_uniform_block_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_missing_member_semicolon_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_missing_member_semicolon_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_missing_end_semicolon_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_missing_end_semicolon_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_member_name_1_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_member_name_1_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_member_name_2_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_member_name_2_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_member_name_3_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_member_name_3_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_instance_name_1_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_instance_name_1_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_instance_name_2_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_instance_name_2_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_instance_name_3_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_instance_name_3_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_array_without_instance_name_1_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_array_without_instance_name_1_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_array_without_instance_name_2_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_array_without_instance_name_2_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_xx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_xx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_xy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_xy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_yx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_yx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_yxy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_yxy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_xyxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_xyxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_yyyy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_yyyy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_ss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_ss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_st_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_st_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_ts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_ts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_tst_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_tst_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_stss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_stss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_tttt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_tttt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_rr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_rr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_rg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_rg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_gr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_gr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_grg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_grg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_rgrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_rgrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_gggg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec2_gggg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_z_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_z_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xyz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xyz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zzz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zzz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zzy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zzy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_yxy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_yxy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xzx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xzx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xyyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_xyyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zzzz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_zzzz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_p_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_p_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_sp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_sp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_pp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_pp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_stp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_stp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_pts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_pts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_sss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_sss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_ppp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_ppp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_ppt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_ppt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_tst_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_tst_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_sps_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_sps_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_stts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_stts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_pppp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_pppp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_b_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_b_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rgb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rgb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bgr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bgr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bbb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bbb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bbg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bbg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_grg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_grg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rbr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rbr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rggr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_rggr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bbbb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec3_bbbb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_w_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_w_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_www_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_www_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_yyw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_yyw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wzy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wzy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_xyzw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_xyzw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wzyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wzyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_xxxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_xxxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_yyyy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_yyyy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wwww_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wwww_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wzzw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wzzw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wwwy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_wwwy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_xyxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_xyxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_zzwz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_zzwz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_q_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_q_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qs_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qs_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qqq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qqq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ttq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ttq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qpt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qpt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_stpq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_stpq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qpts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qpts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ssss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ssss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_tttt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_tttt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qqqq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qqqq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qppq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qppq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qqqt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_qqqt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_stss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_stss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ppqp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ppqp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_a_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_a_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ar_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ar_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ab_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_ab_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_aaa_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_aaa_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_gga_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_gga_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_abg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_abg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_rgba_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_rgba_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_abgr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_abgr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_rrrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_rrrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_gggg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_gggg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_aaaa_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_aaaa_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_abba_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_abba_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_aaag_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_aaag_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_rgrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_rgrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_bbab_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_vec4_bbab_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_xx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_xx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_xy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_xy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_yx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_yx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_yxy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_yxy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_xyxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_xyxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_yyyy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_yyyy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_ss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_ss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_st_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_st_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_ts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_ts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_tst_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_tst_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_stss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_stss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_tttt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_tttt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_rr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_rr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_rg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_rg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_gr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_gr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_grg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_grg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_rgrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_rgrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_gggg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec2_gggg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_z_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_z_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xyz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xyz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zzz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zzz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zzy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zzy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_yxy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_yxy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xzx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xzx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xyyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_xyyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zzzz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_zzzz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_p_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_p_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_sp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_sp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_pp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_pp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_stp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_stp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_pts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_pts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_sss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_sss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_ppp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_ppp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_ppt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_ppt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_tst_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_tst_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_sps_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_sps_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_stts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_stts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_pppp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_pppp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_b_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_b_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rgb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rgb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bgr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bgr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bbb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bbb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bbg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bbg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_grg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_grg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rbr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rbr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rggr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_rggr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bbbb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec3_bbbb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_w_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_w_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_www_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_www_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_yyw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_yyw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wzy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wzy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_xyzw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_xyzw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wzyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wzyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_xxxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_xxxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_yyyy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_yyyy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wwww_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wwww_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wzzw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wzzw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wwwy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_wwwy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_xyxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_xyxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_zzwz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_zzwz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_q_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_q_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qs_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qs_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qqq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qqq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ttq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ttq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qpt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qpt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_stpq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_stpq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qpts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qpts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ssss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ssss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_tttt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_tttt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qqqq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qqqq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qppq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qppq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qqqt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_qqqt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_stss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_stss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ppqp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ppqp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_a_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_a_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ar_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ar_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ab_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_ab_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_aaa_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_aaa_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_gga_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_gga_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_abg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_abg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_rgba_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_rgba_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_abgr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_abgr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_rrrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_rrrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_gggg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_gggg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_aaaa_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_aaaa_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_abba_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_abba_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_aaag_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_aaag_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_rgrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_rgrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_bbab_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_ivec4_bbab_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_xx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_xx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_xy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_xy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_yx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_yx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_yxy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_yxy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_xyxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_xyxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_yyyy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_yyyy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_ss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_ss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_st_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_st_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_ts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_ts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_tst_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_tst_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_stss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_stss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_tttt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_tttt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_rr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_rr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_rg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_rg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_gr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_gr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_grg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_grg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_rgrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_rgrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_gggg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec2_gggg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_z_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_z_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xyz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xyz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zzz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zzz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zzy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zzy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_yxy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_yxy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xzx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xzx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xyyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_xyyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zzzz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_zzzz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_p_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_p_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_sp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_sp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_pp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_pp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_stp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_stp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_pts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_pts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_sss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_sss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_ppp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_ppp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_ppt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_ppt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_tst_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_tst_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_sps_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_sps_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_stts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_stts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_pppp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_pppp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_b_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_b_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rgb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rgb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bgr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bgr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bbb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bbb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bbg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bbg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_grg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_grg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rbr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rbr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rggr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_rggr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bbbb_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec3_bbbb_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_x_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_x_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_w_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_w_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_www_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_www_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_yyw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_yyw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wzy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wzy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_xyzw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_xyzw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wzyx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wzyx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_xxxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_xxxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_yyyy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_yyyy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wwww_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wwww_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wzzw_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wzzw_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wwwy_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_wwwy_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_xyxx_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_xyxx_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_zzwz_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_zzwz_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_s_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_s_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_q_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_q_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qs_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qs_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qqq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qqq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ttq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ttq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qpt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qpt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_stpq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_stpq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qpts_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qpts_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ssss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ssss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_tttt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_tttt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qqqq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qqqq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qppq_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qppq_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qqqt_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_qqqt_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_stss_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_stss_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ppqp_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ppqp_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_r_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_r_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_a_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_a_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ar_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ar_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ab_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_ab_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_aaa_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_aaa_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_gga_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_gga_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_abg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_abg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_rgba_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_rgba_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_abgr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_abgr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_rrrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_rrrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_gggg_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_gggg_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_aaaa_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_aaaa_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_abba_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_abba_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_aaag_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_aaag_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_rgrr_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_rgrr_fragment
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_bbab_vertex
-dEQP-GLES3.functional.shaders.swizzles.vector_swizzles#mediump_bvec4_bbab_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_float_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_float_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_vec2_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_vec2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_vec3_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_vec3_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_vec4_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_vec4_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_mat2_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_mat2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_mat3_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_mat3_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_mat4_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_mat4_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#int_int_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#int_int_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#int_ivec2_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#int_ivec2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#int_ivec3_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#int_ivec3_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#int_ivec4_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#int_ivec4_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uint_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uint_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#bool_bool_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#bool_bool_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat2_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat2x3_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat2x3_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat2x4_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat2x4_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat3x2_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat3x2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat3_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat3_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat3x4_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat3x4_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat4x2_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat4x2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat4x3_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat4x3_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#mat4_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#mat4_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#float_struct_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#float_struct_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#struct_struct_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#struct_struct_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#struct_nested_struct_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#struct_nested_struct_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_lowp_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_lowp_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_lowp_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_lowp_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_lowp_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_lowp_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_highp_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_highp_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_highp_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_highp_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_in_float_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_in_float_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_lowp_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_lowp_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_lowp_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_lowp_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_lowp_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_lowp_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_highp_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_highp_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_highp_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_highp_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_highp_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_highp_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_in_int_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_in_int_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_bool_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#in_bool_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_bool_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#out_bool_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_bool_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#inout_bool_fragment
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_bool_vertex
-dEQP-GLES3.functional.shaders.functions.qualifiers#const_bool_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#basic_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#basic_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#basic_arg_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#basic_arg_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#define_after_use_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#define_after_use_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#double_declare_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#double_declare_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#declare_after_define_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#declare_after_define_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#void_vs_no_void_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#void_vs_no_void_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#in_vs_no_in_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#in_vs_no_in_fragment
-dEQP-GLES3.functional.shaders.functions.declarations#default_vs_explicit_precision_vertex
-dEQP-GLES3.functional.shaders.functions.declarations#default_vs_explicit_precision_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_type_simple_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_type_simple_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_float_types_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_float_types_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_int_types_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_int_types_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_bool_types_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_bool_types_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_basic_types_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_basic_types_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_complex_types_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arg_complex_types_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arguments_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#user_func_arguments_fragment
-dEQP-GLES3.functional.shaders.functions.overloading#array_size_vertex
-dEQP-GLES3.functional.shaders.functions.overloading#array_size_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#local_in_float_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#local_in_float_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#global_in_float_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#global_in_float_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#local_in_int_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#local_in_int_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#global_in_int_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#global_in_int_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#local_in_bool_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#local_in_bool_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#global_in_bool_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#global_in_bool_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#test_helpers_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#test_helpers_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_local_in_on_call_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_local_in_on_call_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_global_in_on_call_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_global_in_on_call_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_local_inout_on_call_vertex
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_local_inout_on_call_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#simple_return_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#simple_return_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_if_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_if_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_else_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_else_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_loop_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_loop_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_loop_if_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_loop_if_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_loop_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_loop_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_break_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_break_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_continue_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_continue_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_nested_loop_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_in_nested_loop_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_loop_sequence_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#return_after_loop_sequence_fragment
-dEQP-GLES3.functional.shaders.functions.control_flow#mixed_return_break_continue_vertex
-dEQP-GLES3.functional.shaders.functions.control_flow#mixed_return_break_continue_fragment
-dEQP-GLES3.functional.shaders.functions.misc#multi_arg_float_vertex
-dEQP-GLES3.functional.shaders.functions.misc#multi_arg_float_fragment
-dEQP-GLES3.functional.shaders.functions.misc#multi_arg_int_vertex
-dEQP-GLES3.functional.shaders.functions.misc#multi_arg_int_fragment
-dEQP-GLES3.functional.shaders.functions.misc#argument_eval_order_1_vertex
-dEQP-GLES3.functional.shaders.functions.misc#argument_eval_order_1_fragment
-dEQP-GLES3.functional.shaders.functions.misc#argument_eval_order_2_vertex
-dEQP-GLES3.functional.shaders.functions.misc#argument_eval_order_2_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#break_in_body_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#break_in_body_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#continue_in_body_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#continue_in_body_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#return_value_from_void_function_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#return_value_from_void_function_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#extra_arguments_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#extra_arguments_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#missing_arguments_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#missing_arguments_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#missing_argument_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#missing_argument_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#argument_basetype_mismatch_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#argument_basetype_mismatch_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#argument_scalar_vector_mismatch_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#argument_scalar_vector_mismatch_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#argument_vector_size_mismatch_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#argument_vector_size_mismatch_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#duplicate_function_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#duplicate_function_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_unspecified_array_size_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_unspecified_array_size_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#call_mismatch_argument_array_size_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#call_mismatch_argument_array_size_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_argument_const_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_argument_const_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_argument_array_const_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_argument_array_const_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_array_inout_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#prototype_mismatch_array_inout_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#missing_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#missing_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#call_before_definition_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#call_before_definition_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#argument_precision_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#argument_precision_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#argument_in_out_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#argument_in_out_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#argument_in_inout_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#argument_in_inout_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#argument_out_inout_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#argument_out_inout_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#return_type_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#return_type_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#return_type_precision_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#return_type_precision_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#return_type_const_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#return_type_const_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#return_without_value_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#return_without_value_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#local_function_definition_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#local_function_definition_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#name_type_conflict_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#name_type_conflict_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#const_overload_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#const_overload_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#uniform_local_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#uniform_local_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#in_local_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#in_local_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#out_local_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#out_local_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#inout_local_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#inout_local_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#uniform_argument_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#uniform_argument_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#in_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#in_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#out_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#out_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#inout_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#inout_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#main_invalid_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#main_invalid_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#main_has_arguments_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#main_has_arguments_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#main_missing_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#main_missing_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#write_const_arg_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#write_const_arg_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#write_const_array_arg_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#write_const_array_arg_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#basic_recursion_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#basic_recursion_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#simple_tail_recursion_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#simple_tail_recursion_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#dynamic_conditional_recursion_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#dynamic_conditional_recursion_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#dynamic_loop_recursion_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#dynamic_loop_recursion_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#dynamic_switch_recursion_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#dynamic_switch_recursion_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#modify_const_arg_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#modify_const_arg_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#float3_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#float3_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#float4_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#float4_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#int3_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#int3_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#int4_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#int4_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#bool3_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#bool3_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#bool4_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#bool4_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#struct3_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#struct3_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#struct4_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#struct4_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#float_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#float_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#int_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#int_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.constructor#bool_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.constructor#bool_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.return#float_vertex
-dEQP-GLES3.functional.shaders.arrays.return#float_fragment
-dEQP-GLES3.functional.shaders.arrays.return#int_vertex
-dEQP-GLES3.functional.shaders.arrays.return#int_fragment
-dEQP-GLES3.functional.shaders.arrays.return#bool_vertex
-dEQP-GLES3.functional.shaders.arrays.return#bool_fragment
-dEQP-GLES3.functional.shaders.arrays.return#float_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.return#float_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.return#int_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.return#int_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.return#bool_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.return#bool_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.return#float_mat3_vertex
-dEQP-GLES3.functional.shaders.arrays.return#float_mat3_fragment
-dEQP-GLES3.functional.shaders.arrays.return#int_mat3_vertex
-dEQP-GLES3.functional.shaders.arrays.return#int_mat3_fragment
-dEQP-GLES3.functional.shaders.arrays.return#bool_mat3_vertex
-dEQP-GLES3.functional.shaders.arrays.return#bool_mat3_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#float_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#float_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#int_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#int_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#bool_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#bool_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#float_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#float_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#int_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#int_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#bool_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#bool_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#float_mat3_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#float_mat3_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#int_mat3_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#int_mat3_fragment
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#bool_mat3_vertex
-dEQP-GLES3.functional.shaders.arrays.unnamed_parameter#bool_mat3_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_float_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_float_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_int_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_int_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_bool_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_bool_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_struct_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_struct_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_float_vec3_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_float_vec3_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_bool_bvec3_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#implicit_size_bool_bvec3_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#constant_expression_array_size_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#constant_expression_array_size_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#constant_expression_array_access_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#constant_expression_array_access_fragment
-dEQP-GLES3.functional.shaders.arrays.length#float_vertex
-dEQP-GLES3.functional.shaders.arrays.length#float_fragment
-dEQP-GLES3.functional.shaders.arrays.length#int_vertex
-dEQP-GLES3.functional.shaders.arrays.length#int_fragment
-dEQP-GLES3.functional.shaders.arrays.length#bool_vertex
-dEQP-GLES3.functional.shaders.arrays.length#bool_fragment
-dEQP-GLES3.functional.shaders.arrays.length#struct_vertex
-dEQP-GLES3.functional.shaders.arrays.length#struct_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_array1_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_array1_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_array2_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_array2_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_uniform_array_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_uniform_array_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_array_in_uniform_block_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#multidimensional_array_in_uniform_block_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#dynamic_expression_array_size_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#dynamic_expression_array_size_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#constructor_c_style1_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#constructor_c_style1_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#constructor_c_style2_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#constructor_c_style2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#const_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#const_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#uniform_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#uniform_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#layout_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#layout_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#centroid_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#centroid_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#flat_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#flat_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#smooth_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#smooth_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#break_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#break_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#continue_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#continue_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#do_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#do_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#for_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#for_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#while_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#while_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#switch_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#switch_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#case_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#case_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#default_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#default_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#if_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#if_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#else_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#else_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#in_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#in_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#out_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#out_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#inout_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#inout_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#float_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#float_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#int_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#int_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#void_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#void_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#bool_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#bool_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#true_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#true_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#false_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#false_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#invariant_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#invariant_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#discard_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#discard_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#return_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#return_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2x2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2x2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2x3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2x3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2x4_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat2x4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3x2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3x2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3x3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3x3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3x4_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat3x4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4x2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4x2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4x3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4x3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4x4_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mat4x4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#vec2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#vec2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#vec3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#vec3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#vec4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#ivec2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#ivec2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#ivec3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#ivec3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#ivec4_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#ivec4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#bvec2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#bvec2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#bvec3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#bvec3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#bvec4_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#bvec4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#uint_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#uint_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#uvec2_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#uvec2_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#uvec3_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#uvec3_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#uvec4_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#uvec4_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#lowp_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#lowp_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#mediump_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#mediump_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#highp_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#highp_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#precision_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#precision_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2D_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2D_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler3D_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler3D_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#samplerCube_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#samplerCube_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2DShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2DShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#samplerCubeShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#samplerCubeShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2DArrayShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#sampler2DArrayShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#isampler2D_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#isampler2D_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#isampler3D_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#isampler3D_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#isamplerCube_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#isamplerCube_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#isampler2DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#isampler2DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#usampler2D_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#usampler2D_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#usampler3D_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#usampler3D_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#usamplerCube_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#usamplerCube_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#usampler2DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#usampler2DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.keywords#struct_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#struct_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#attribute_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#attribute_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#varying_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#varying_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#noperspective_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#noperspective_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#asm_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#asm_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#class_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#class_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#union_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#union_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#enum_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#enum_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#typedef_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#typedef_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#template_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#template_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#this_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#this_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#goto_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#goto_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#inline_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#inline_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#noinline_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#noinline_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#volatile_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#volatile_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#public_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#public_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#static_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#static_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#extern_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#extern_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#external_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#external_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#interface_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#interface_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#long_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#long_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#short_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#short_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#half_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#half_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fixed_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fixed_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#unsigned_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#unsigned_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#superp_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#superp_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#input_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#input_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#output_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#output_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#hvec2_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#hvec2_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#hvec3_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#hvec3_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#hvec4_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#hvec4_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#dvec2_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#dvec2_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#dvec3_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#dvec3_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#dvec4_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#dvec4_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fvec2_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fvec2_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fvec3_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fvec3_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fvec4_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#fvec4_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler3DRect_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler3DRect_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1DShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1DShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1DArrayShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler1DArrayShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler1D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler1D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler1DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler1DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler1D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler1D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler1DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler1DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DRect_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DRect_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DRectShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DRectShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler2DRect_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler2DRect_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler2DRect_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler2DRect_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DMS_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DMS_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler2DMS_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler2DMS_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler2DMS_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler2DMS_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DMSArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sampler2DMSArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler2DMSArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isampler2DMSArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler2DMSArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usampler2DMSArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sizeof_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sizeof_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#cast_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#cast_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#namespace_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#namespace_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#using_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#using_fragment
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#gl_begin_vertex
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#gl_begin_fragment
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#digit_vertex
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#digit_fragment
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#digit_begin_vertex
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#digit_begin_fragment
-dEQP-GLES3.functional.shaders.qualification_order.variables.valid#interp_storage_precision
-dEQP-GLES3.functional.shaders.qualification_order.variables.valid#storage_precision
-dEQP-GLES3.functional.shaders.qualification_order.variables.valid#interp_storage
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#storage_parameter_precision_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#storage_parameter_precision_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#storage_parameter_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#storage_parameter_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#storage_precision_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#storage_precision_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#parameter_precision_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.valid#parameter_precision_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#storage_precision_parameter_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#storage_precision_parameter_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#parameter_storage_precision_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#parameter_storage_precision_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#parameter_precision_storage_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#parameter_precision_storage_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_storage_parameter_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_storage_parameter_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_parameter_storage_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_parameter_storage_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#parameter_storage_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#parameter_storage_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_storage_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_storage_fragment
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_parameter_vertex
-dEQP-GLES3.functional.shaders.qualification_order.parameters.invalid#precision_parameter_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#local_variable_hides_global_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#local_variable_hides_global_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#block_variable_hides_local_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#block_variable_hides_local_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#block_variable_hides_global_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#block_variable_hides_global_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#variable_from_outer_scope_visible_in_initializer_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#variable_from_outer_scope_visible_in_initializer_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#local_int_variable_hides_struct_type_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#local_int_variable_hides_struct_type_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#local_struct_variable_hides_struct_type_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#local_struct_variable_hides_struct_type_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#local_variable_hides_function_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#local_variable_hides_function_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#function_parameter_hides_global_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#function_parameter_hides_global_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#function_parameter_hides_struct_type_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#function_parameter_hides_struct_type_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#function_parameter_hides_function_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#function_parameter_hides_function_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#local_variable_in_inner_scope_hides_function_parameter_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#local_variable_in_inner_scope_hides_function_parameter_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#redeclare_function_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#redeclare_function_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_global_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_global_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_local_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_local_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_for_condition_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_for_condition_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_for_init_statement_variable_in_for_condition_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_for_init_statement_variable_in_for_condition_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_while_condition_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_while_condition_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redefine_function_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redefine_function_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_builtin_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_builtin_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#conflict_function_struct_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#conflict_function_struct_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#conflict_function_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#conflict_function_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_global_variable_before_declaration_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_global_variable_before_declaration_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_local_variable_before_declaration_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_local_variable_before_declaration_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_struct_type_before_declaration_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_struct_type_before_declaration_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_function_before_declaration_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_function_before_declaration_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_block_in_outer_scope_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_block_in_outer_scope_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_for_init_statement_in_outer_scope_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_for_init_statement_in_outer_scope_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_parameter_names_from_function_declaration_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_parameter_names_from_function_declaration_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#variable_not_visible_in_own_initializer_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#variable_not_visible_in_own_initializer_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#local_variable_hides_function_parameter_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#local_variable_hides_function_parameter_fragment
-dEQP-GLES3.functional.shaders.negative.c_cast#float_0_vertex
-dEQP-GLES3.functional.shaders.negative.c_cast#float_0_fragment
-dEQP-GLES3.functional.shaders.negative.c_cast#float_1_vertex
-dEQP-GLES3.functional.shaders.negative.c_cast#float_1_fragment
-dEQP-GLES3.functional.shaders.negative.c_cast#float_2_vertex
-dEQP-GLES3.functional.shaders.negative.c_cast#float_2_fragment
-dEQP-GLES3.functional.shaders.negative.c_cast#int_vertex
-dEQP-GLES3.functional.shaders.negative.c_cast#int_fragment
-dEQP-GLES3.functional.shaders.negative.c_cast#uint_vertex
-dEQP-GLES3.functional.shaders.negative.c_cast#uint_fragment
-dEQP-GLES3.functional.shaders.negative.c_cast#bool_vertex
-dEQP-GLES3.functional.shaders.negative.c_cast#bool_fragment
-dEQP-GLES3.functional.shaders.discard#basic_always
-dEQP-GLES3.functional.shaders.discard#basic_never
-dEQP-GLES3.functional.shaders.discard#basic_uniform
-dEQP-GLES3.functional.shaders.discard#basic_dynamic
-dEQP-GLES3.functional.shaders.discard#basic_texture
-dEQP-GLES3.functional.shaders.discard#function_always
-dEQP-GLES3.functional.shaders.discard#function_never
-dEQP-GLES3.functional.shaders.discard#function_uniform
-dEQP-GLES3.functional.shaders.discard#function_dynamic
-dEQP-GLES3.functional.shaders.discard#function_texture
-dEQP-GLES3.functional.shaders.discard#static_loop_always
-dEQP-GLES3.functional.shaders.discard#static_loop_never
-dEQP-GLES3.functional.shaders.discard#static_loop_uniform
-dEQP-GLES3.functional.shaders.discard#static_loop_dynamic
-dEQP-GLES3.functional.shaders.discard#static_loop_texture
-dEQP-GLES3.functional.shaders.discard#dynamic_loop_always
-dEQP-GLES3.functional.shaders.discard#dynamic_loop_never
-dEQP-GLES3.functional.shaders.discard#dynamic_loop_uniform
-dEQP-GLES3.functional.shaders.discard#dynamic_loop_dynamic
-dEQP-GLES3.functional.shaders.discard#dynamic_loop_texture
-dEQP-GLES3.functional.shaders.discard#function_static_loop_always
-dEQP-GLES3.functional.shaders.discard#function_static_loop_never
-dEQP-GLES3.functional.shaders.discard#function_static_loop_uniform
-dEQP-GLES3.functional.shaders.discard#function_static_loop_dynamic
-dEQP-GLES3.functional.shaders.discard#function_static_loop_texture
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_static_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#float_dynamic_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_static_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec2_dynamic_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_static_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec3_dynamic_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_static_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_loop_write_static_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_loop_write_dynamic_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_loop_write_static_loop_read
-dEQP-GLES3.functional.shaders.indexing.varying_array#vec4_dynamic_loop_write_dynamic_loop_read
-dEQP-GLES3.functional.shaders.indexing.uniform_array#float_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#float_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.uniform_array#float_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#float_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#float_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec2_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec2_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec2_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec2_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec2_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec3_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec3_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec3_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec3_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec3_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec4_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec4_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec4_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec4_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.uniform_array#vec4_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#float_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec2_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec3_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.tmp_array#vec4_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_direct_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_component_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_static_loop_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec2_dynamic_loop_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_direct_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_component_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_static_loop_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec3_dynamic_loop_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_direct_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_component_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_static_loop_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_direct_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_direct_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_component_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_component_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_static_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_static_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_dynamic_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_dynamic_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_static_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_static_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_dynamic_loop_subscript_read_vertex
-dEQP-GLES3.functional.shaders.indexing.vector_subscript#vec4_dynamic_loop_subscript_write_dynamic_loop_subscript_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x3_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat2x4_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x2_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat3x4_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x2_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4x3_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_static_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_static_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_static_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_dynamic_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_dynamic_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_static_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_static_loop_read_fragment
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_dynamic_loop_read_vertex
-dEQP-GLES3.functional.shaders.indexing.matrix_subscript#mat4_dynamic_loop_write_dynamic_loop_read_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#no_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#no_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.for_constant_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#no_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#no_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.for_uniform_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#no_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#no_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.for_dynamic_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#no_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#no_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.while_constant_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#no_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#no_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.while_uniform_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#no_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#no_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_lowp_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_lowp_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_lowp_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_lowp_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_mediump_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_mediump_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_mediump_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_mediump_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_highp_int_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_highp_int_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_highp_float_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#basic_highp_float_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#empty_body_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#empty_body_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#infinite_with_unconditional_break_first_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#infinite_with_unconditional_break_first_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#infinite_with_unconditional_break_last_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#infinite_with_unconditional_break_last_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#infinite_with_conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#infinite_with_conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#single_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#single_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#compound_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#compound_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#sequence_statement_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#sequence_statement_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#single_iteration_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#single_iteration_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#select_iteration_count_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#select_iteration_count_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#conditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#conditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#unconditional_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#unconditional_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#only_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#only_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#double_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#double_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#conditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#conditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#unconditional_break_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#unconditional_break_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#pre_increment_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#pre_increment_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#post_increment_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#post_increment_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#mixed_break_continue_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#mixed_break_continue_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#vector_counter_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#vector_counter_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#101_iterations_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#101_iterations_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#sequence_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#sequence_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_sequence_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_sequence_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_tricky_dataflow_1_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_tricky_dataflow_1_fragment
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_tricky_dataflow_2_vertex
-dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations#nested_tricky_dataflow_2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.plus#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.minus#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.not#bool_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.not#bool_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.bitwise_not#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_increment_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_increment_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#lowp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#mediump_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add#highp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#lowp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#mediump_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub#highp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#lowp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#mediump_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul#highp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#lowp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#mediump_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div#highp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_int_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#lowp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#mediump_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod#highp_uint_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#lowp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#mediump_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift#highp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#lowp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#mediump_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift#highp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#lowp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#mediump_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_effect#highp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#lowp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#mediump_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_effect#highp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.add_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.sub_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mul_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.div_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.mod_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_and_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_or_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.bitwise_xor_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#lowp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#mediump_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.left_shift_assign_result#highp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_int_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_int_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uint_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uint_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#lowp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#mediump_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.right_shift_assign_result#highp_uvec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.less_or_equal#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.greater_or_equal#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bool_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bool_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.equal#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bool_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bool_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.not_equal#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.logical_and#bool_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.logical_and#bool_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.logical_or#bool_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.logical_or#bool_fragment
-dEQP-GLES3.functional.shaders.operator.binary_operator.logical_xor#bool_vertex
-dEQP-GLES3.functional.shaders.operator.binary_operator.logical_xor#bool_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.radians#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.degrees#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sin#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cos#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tan#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asin#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acos#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atan2#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.sinh#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.cosh#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.tanh#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.asinh#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.acosh#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.pow#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.exp2#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.log2#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.sqrt#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.exponential.inversesqrt#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.abs#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.sign#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.floor#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.trunc#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.round#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.roundEven#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.ceil#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.fract#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mod#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.min#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.max#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#lowp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#mediump_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.clamp#highp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#lowp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.mix#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#lowp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#mediump_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.step#highp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#lowp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#mediump_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.common_functions.smoothstep#highp_float_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.length#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.distance#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.dot#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.cross#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.cross#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.cross#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.cross#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.normalize#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.faceforward#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.reflect#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#mediump_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.operator.geometric.refract#highp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThan#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.lessThanEqual#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThan#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.greaterThanEqual#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.equal#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.float_compare.notEqual#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThan#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.lessThanEqual#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThan#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.greaterThanEqual#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.equal#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.int_compare.notEqual#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.equal#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.equal#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.equal#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.equal#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.equal#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.equal#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.notEqual#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.notEqual#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.notEqual#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.notEqual#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.notEqual#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.notEqual#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.any#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.any#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.any#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.any#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.any#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.any#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.all#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.all#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.all#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.all#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.all#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.all#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.not#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.not#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.not#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.not#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.bool_compare.not#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.bool_compare.not#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_float_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_float_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_float_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_float_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_float_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_float_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_vec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_vec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_int_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_int_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_int_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_int_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_int_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_int_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_ivec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_ivec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_ivec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_ivec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_ivec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_ivec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.selection#bool_vertex
-dEQP-GLES3.functional.shaders.operator.selection#bool_fragment
-dEQP-GLES3.functional.shaders.operator.selection#bvec2_vertex
-dEQP-GLES3.functional.shaders.operator.selection#bvec2_fragment
-dEQP-GLES3.functional.shaders.operator.selection#bvec3_vertex
-dEQP-GLES3.functional.shaders.operator.selection#bvec3_fragment
-dEQP-GLES3.functional.shaders.operator.selection#bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.selection#bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_float_uint_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_float_uint_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_float_uint_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_float_uint_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_float_uint_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_float_uint_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_bool_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_bool_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_bool_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_bool_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_bool_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_bool_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_vec4_ivec4_bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#lowp_vec4_ivec4_bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_vec4_ivec4_bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#mediump_vec4_ivec4_bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_vec4_ivec4_bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.no_side_effects#highp_vec4_ivec4_bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_vec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_vec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_float_uint_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_float_uint_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_float_uint_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_float_uint_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_float_uint_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_float_uint_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_bool_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_bool_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_bool_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_bool_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_bool_vec2_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_bool_vec2_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_vec4_ivec4_bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#lowp_vec4_ivec4_bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_vec4_ivec4_bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#mediump_vec4_ivec4_bvec4_fragment
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_vec4_ivec4_bvec4_vertex
-dEQP-GLES3.functional.shaders.operator.sequence.side_effects#highp_vec4_ivec4_bvec4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.const#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.uniform#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.add.dynamic#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.const#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.uniform#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.sub.dynamic#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x3_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x3_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x3_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat2x4_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat2x4_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat2x4_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x2_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x2_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x2_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat3x4_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat3x4_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat3x4_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.const#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x3_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x3_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x3_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x2_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x2_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x2_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.uniform#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x3_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x3_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x3_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x3_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x4_vec2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x4_vec2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x4_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat2x4_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x2_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_vec3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_vec3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat3x4_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x2_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4x3_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_vec4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_vec4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_vec4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.mul.dynamic#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.const#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.uniform#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.div.dynamic#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat2_mat2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat2_mat2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat2x3_mat2x3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat2x3_mat2x3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat2x4_mat2x4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat2x4_mat2x4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat3x2_mat3x2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat3x2_mat3x2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat3_mat3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat3_mat3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat3x4_mat3x4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat3x4_mat3x4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat4x2_mat4x2_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat4x2_mat4x2_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat4x3_mat4x3_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat4x3_mat4x3_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#lowp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#mediump_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat4_mat4_vertex
-dEQP-GLES3.functional.shaders.matrix.matrixcompmult.dynamic#highp_mat4_mat4_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.outerproduct.dynamic#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.transpose.dynamic#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.determinant.dynamic#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.inverse.dynamic#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.inverse.dynamic#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.inverse.dynamic#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.inverse.dynamic#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.inverse.dynamic#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.inverse.dynamic#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.unary_addition#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.negation#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.post_increment#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.post_increment#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.post_increment#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.post_increment#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.post_increment#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.post_increment#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.add_assign#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.sub_assign#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.mul_assign#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.mul_assign#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat2x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat2x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat2x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat2x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat3x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat3x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat3x4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat3x4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat4x2_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat4x2_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat4x3_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat4x3_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#lowp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#mediump_mat4_float_fragment
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat4_float_vertex
-dEQP-GLES3.functional.shaders.matrix.div_assign#highp_mat4_float_fragment
-dEQP-GLES3.functional.shaders.return#single_return_vertex
-dEQP-GLES3.functional.shaders.return#single_return_fragment
-dEQP-GLES3.functional.shaders.return#conditional_return_never_vertex
-dEQP-GLES3.functional.shaders.return#conditional_return_never_fragment
-dEQP-GLES3.functional.shaders.return#conditional_return_dynamic_vertex
-dEQP-GLES3.functional.shaders.return#conditional_return_dynamic_fragment
-dEQP-GLES3.functional.shaders.return#double_return_vertex
-dEQP-GLES3.functional.shaders.return#double_return_fragment
-dEQP-GLES3.functional.shaders.return#last_statement_in_main_vertex
-dEQP-GLES3.functional.shaders.return#last_statement_in_main_fragment
-dEQP-GLES3.functional.shaders.return#output_write_always_vertex
-dEQP-GLES3.functional.shaders.return#output_write_always_fragment
-dEQP-GLES3.functional.shaders.return#output_write_never_vertex
-dEQP-GLES3.functional.shaders.return#output_write_never_fragment
-dEQP-GLES3.functional.shaders.return#output_write_dynamic_vertex
-dEQP-GLES3.functional.shaders.return#output_write_dynamic_fragment
-dEQP-GLES3.functional.shaders.return#output_write_in_func_never_vertex
-dEQP-GLES3.functional.shaders.return#output_write_in_func_never_fragment
-dEQP-GLES3.functional.shaders.return#output_write_in_func_dynamic_vertex
-dEQP-GLES3.functional.shaders.return#output_write_in_func_dynamic_fragment
-dEQP-GLES3.functional.shaders.return#return_in_static_loop_always_vertex
-dEQP-GLES3.functional.shaders.return#return_in_static_loop_always_fragment
-dEQP-GLES3.functional.shaders.return#return_in_static_loop_never_vertex
-dEQP-GLES3.functional.shaders.return#return_in_static_loop_never_fragment
-dEQP-GLES3.functional.shaders.return#return_in_static_loop_dynamic_vertex
-dEQP-GLES3.functional.shaders.return#return_in_static_loop_dynamic_fragment
-dEQP-GLES3.functional.shaders.return#return_in_dynamic_loop_always_vertex
-dEQP-GLES3.functional.shaders.return#return_in_dynamic_loop_always_fragment
-dEQP-GLES3.functional.shaders.return#return_in_dynamic_loop_never_vertex
-dEQP-GLES3.functional.shaders.return#return_in_dynamic_loop_never_fragment
-dEQP-GLES3.functional.shaders.return#return_in_dynamic_loop_dynamic_vertex
-dEQP-GLES3.functional.shaders.return#return_in_dynamic_loop_dynamic_fragment
-dEQP-GLES3.functional.shaders.return#return_in_infinite_loop_vertex
-dEQP-GLES3.functional.shaders.return#return_in_infinite_loop_fragment
-dEQP-GLES3.functional.shaders.struct.local#basic_vertex
-dEQP-GLES3.functional.shaders.struct.local#basic_fragment
-dEQP-GLES3.functional.shaders.struct.local#nested_vertex
-dEQP-GLES3.functional.shaders.struct.local#nested_fragment
-dEQP-GLES3.functional.shaders.struct.local#array_member_vertex
-dEQP-GLES3.functional.shaders.struct.local#array_member_fragment
-dEQP-GLES3.functional.shaders.struct.local#parameter_vertex
-dEQP-GLES3.functional.shaders.struct.local#parameter_fragment
-dEQP-GLES3.functional.shaders.struct.local#parameter_nested_vertex
-dEQP-GLES3.functional.shaders.struct.local#parameter_nested_fragment
-dEQP-GLES3.functional.shaders.struct.local#return_vertex
-dEQP-GLES3.functional.shaders.struct.local#return_fragment
-dEQP-GLES3.functional.shaders.struct.local#return_nested_vertex
-dEQP-GLES3.functional.shaders.struct.local#return_nested_fragment
-dEQP-GLES3.functional.shaders.struct.local#conditional_assignment_vertex
-dEQP-GLES3.functional.shaders.struct.local#conditional_assignment_fragment
-dEQP-GLES3.functional.shaders.struct.local#loop_assignment_vertex
-dEQP-GLES3.functional.shaders.struct.local#loop_assignment_fragment
-dEQP-GLES3.functional.shaders.struct.local#dynamic_loop_assignment_vertex
-dEQP-GLES3.functional.shaders.struct.local#dynamic_loop_assignment_fragment
-dEQP-GLES3.functional.shaders.struct.local#nested_conditional_assignment_vertex
-dEQP-GLES3.functional.shaders.struct.local#nested_conditional_assignment_fragment
-dEQP-GLES3.functional.shaders.struct.local#nested_loop_assignment_vertex
-dEQP-GLES3.functional.shaders.struct.local#nested_loop_assignment_fragment
-dEQP-GLES3.functional.shaders.struct.local#nested_dynamic_loop_assignment_vertex
-dEQP-GLES3.functional.shaders.struct.local#nested_dynamic_loop_assignment_fragment
-dEQP-GLES3.functional.shaders.struct.uniform#basic_vertex
-dEQP-GLES3.functional.shaders.struct.uniform#basic_fragment
-dEQP-GLES3.functional.shaders.struct.uniform#nested_vertex
-dEQP-GLES3.functional.shaders.struct.uniform#nested_fragment
-dEQP-GLES3.functional.shaders.struct.uniform#array_member_vertex
-dEQP-GLES3.functional.shaders.struct.uniform#array_member_fragment
-dEQP-GLES3.functional.shaders.struct.uniform#array_member_dynamic_index_vertex
-dEQP-GLES3.functional.shaders.struct.uniform#struct_array_vertex
-dEQP-GLES3.functional.shaders.struct.uniform#struct_array_fragment
-dEQP-GLES3.functional.shaders.struct.uniform#sampler_vertex
-dEQP-GLES3.functional.shaders.struct.uniform#sampler_fragment
-dEQP-GLES3.functional.shaders.struct.uniform#equal_fragment
-dEQP-GLES3.functional.shaders.struct.uniform#not_equal_fragment
-dEQP-GLES3.functional.shaders.switch#basic_static_vertex
-dEQP-GLES3.functional.shaders.switch#basic_static_fragment
-dEQP-GLES3.functional.shaders.switch#basic_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#basic_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#basic_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#basic_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#const_expr_in_label_static_vertex
-dEQP-GLES3.functional.shaders.switch#const_expr_in_label_static_fragment
-dEQP-GLES3.functional.shaders.switch#const_expr_in_label_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#const_expr_in_label_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#const_expr_in_label_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#const_expr_in_label_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#default_label_static_vertex
-dEQP-GLES3.functional.shaders.switch#default_label_static_fragment
-dEQP-GLES3.functional.shaders.switch#default_label_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#default_label_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#default_label_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#default_label_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#default_not_last_static_vertex
-dEQP-GLES3.functional.shaders.switch#default_not_last_static_fragment
-dEQP-GLES3.functional.shaders.switch#default_not_last_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#default_not_last_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#default_not_last_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#default_not_last_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#no_default_label_static_vertex
-dEQP-GLES3.functional.shaders.switch#no_default_label_static_fragment
-dEQP-GLES3.functional.shaders.switch#no_default_label_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#no_default_label_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#no_default_label_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#no_default_label_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#fall_through_static_vertex
-dEQP-GLES3.functional.shaders.switch#fall_through_static_fragment
-dEQP-GLES3.functional.shaders.switch#fall_through_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#fall_through_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#fall_through_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#fall_through_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#fall_through_default_static_vertex
-dEQP-GLES3.functional.shaders.switch#fall_through_default_static_fragment
-dEQP-GLES3.functional.shaders.switch#fall_through_default_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#fall_through_default_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#fall_through_default_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#fall_through_default_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_static_vertex
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_static_fragment
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_2_static_vertex
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_2_static_fragment
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_2_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_2_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#conditional_fall_through_2_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#scope_static_vertex
-dEQP-GLES3.functional.shaders.switch#scope_static_fragment
-dEQP-GLES3.functional.shaders.switch#scope_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#scope_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#scope_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#scope_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_if_static_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_if_static_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_if_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_if_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_if_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_if_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_for_loop_static_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_for_loop_static_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_for_loop_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_for_loop_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_for_loop_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_for_loop_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_while_loop_static_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_while_loop_static_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_while_loop_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_while_loop_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_while_loop_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_while_loop_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_do_while_loop_static_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_do_while_loop_static_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_do_while_loop_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_do_while_loop_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_do_while_loop_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_do_while_loop_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#if_in_switch_static_vertex
-dEQP-GLES3.functional.shaders.switch#if_in_switch_static_fragment
-dEQP-GLES3.functional.shaders.switch#if_in_switch_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#if_in_switch_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#if_in_switch_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#if_in_switch_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#for_loop_in_switch_static_vertex
-dEQP-GLES3.functional.shaders.switch#for_loop_in_switch_static_fragment
-dEQP-GLES3.functional.shaders.switch#for_loop_in_switch_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#for_loop_in_switch_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#for_loop_in_switch_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#for_loop_in_switch_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#while_loop_in_switch_static_vertex
-dEQP-GLES3.functional.shaders.switch#while_loop_in_switch_static_fragment
-dEQP-GLES3.functional.shaders.switch#while_loop_in_switch_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#while_loop_in_switch_uniform_fragment
-dEQP-GLES3.functional.shaders.switch#while_loop_in_switch_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#while_loop_in_switch_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#do_while_loop_in_switch_static_vertex
-dEQP-GLES3.functional.shaders.switch#do_while_loop_in_switch_static_fragment
-dEQP-GLES3.functional.shaders.switch#do_while_loop_in_switch_uniform_vertex
-dEQP-GLES3.functional.shaders.switch#do_while_loop_in_switch_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#do_while_loop_in_switch_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_switch_static_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_switch_static_fragment
-dEQP-GLES3.functional.shaders.switch#switch_in_switch_dynamic_vertex
-dEQP-GLES3.functional.shaders.switch#switch_in_switch_dynamic_fragment
-dEQP-GLES3.functional.shaders.switch#empty_condition_vertex
-dEQP-GLES3.functional.shaders.switch#empty_condition_fragment
-dEQP-GLES3.functional.shaders.switch#condition_float_vertex
-dEQP-GLES3.functional.shaders.switch#condition_float_fragment
-dEQP-GLES3.functional.shaders.switch#condition_bool_vertex
-dEQP-GLES3.functional.shaders.switch#condition_bool_fragment
-dEQP-GLES3.functional.shaders.switch#condition_ivec2_vertex
-dEQP-GLES3.functional.shaders.switch#condition_ivec2_fragment
-dEQP-GLES3.functional.shaders.switch#condition_struct_vertex
-dEQP-GLES3.functional.shaders.switch#condition_struct_fragment
-dEQP-GLES3.functional.shaders.switch#duplicate_label_vertex
-dEQP-GLES3.functional.shaders.switch#duplicate_label_fragment
-dEQP-GLES3.functional.shaders.switch#float_label_vertex
-dEQP-GLES3.functional.shaders.switch#float_label_fragment
-dEQP-GLES3.functional.shaders.switch#non_const_int_label_vertex
-dEQP-GLES3.functional.shaders.switch#non_const_int_label_fragment
-dEQP-GLES3.functional.shaders.switch#statement_before_label_vertex
-dEQP-GLES3.functional.shaders.switch#statement_before_label_fragment
-dEQP-GLES3.functional.shaders.switch#statement_before_default_label_vertex
-dEQP-GLES3.functional.shaders.switch#statement_before_default_label_fragment
-dEQP-GLES3.functional.shaders.switch#no_statement_after_label_vertex
-dEQP-GLES3.functional.shaders.switch#no_statement_after_label_fragment
-dEQP-GLES3.functional.shaders.switch#no_statement_after_default_label_vertex
-dEQP-GLES3.functional.shaders.switch#no_statement_after_default_label_fragment
-dEQP-GLES3.functional.shaders.switch#case_in_if_vertex
-dEQP-GLES3.functional.shaders.switch#case_in_if_fragment
-dEQP-GLES3.functional.shaders.switch#default_in_if_vertex
-dEQP-GLES3.functional.shaders.switch#default_in_if_fragment
-dEQP-GLES3.functional.shaders.switch#case_in_for_loop_vertex
-dEQP-GLES3.functional.shaders.switch#case_in_for_loop_fragment
-dEQP-GLES3.functional.shaders.switch#default_in_for_loop_vertex
-dEQP-GLES3.functional.shaders.switch#default_in_for_loop_fragment
-dEQP-GLES3.functional.shaders.switch#case_in_while_loop_vertex
-dEQP-GLES3.functional.shaders.switch#case_in_while_loop_fragment
-dEQP-GLES3.functional.shaders.switch#default_in_while_loop_vertex
-dEQP-GLES3.functional.shaders.switch#default_in_while_loop_fragment
-dEQP-GLES3.functional.shaders.switch#case_in_do_while_loop_vertex
-dEQP-GLES3.functional.shaders.switch#case_in_do_while_loop_fragment
-dEQP-GLES3.functional.shaders.switch#default_in_do_while_loop_vertex
-dEQP-GLES3.functional.shaders.switch#default_in_do_while_loop_fragment
-dEQP-GLES3.functional.shaders.switch#missing_colon_vertex
-dEQP-GLES3.functional.shaders.switch#missing_colon_fragment
-dEQP-GLES3.functional.shaders.switch#missing_opening_brace_vertex
-dEQP-GLES3.functional.shaders.switch#missing_opening_brace_fragment
-dEQP-GLES3.functional.shaders.switch#missing_closing_brace_vertex
-dEQP-GLES3.functional.shaders.switch#missing_closing_brace_fragment
-dEQP-GLES3.functional.shaders.switch#double_case_vertex
-dEQP-GLES3.functional.shaders.switch#double_case_fragment
-dEQP-GLES3.functional.shaders.switch#double_default_1_vertex
-dEQP-GLES3.functional.shaders.switch#double_default_1_fragment
-dEQP-GLES3.functional.shaders.switch#double_default_2_vertex
-dEQP-GLES3.functional.shaders.switch#double_default_2_fragment
-dEQP-GLES3.functional.shaders.fragdepth.write#no_write
-dEQP-GLES3.functional.shaders.fragdepth.compare#no_write
-dEQP-GLES3.functional.shaders.fragdepth.compare#const
-dEQP-GLES3.functional.shaders.fragdepth.compare#uniform
-dEQP-GLES3.functional.shaders.fragdepth.compare#dynamic
-dEQP-GLES3.functional.shaders.fragdepth.compare#fragcoord_z
-dEQP-GLES3.functional.shaders.fragdepth.compare#uniform_conditional_write
-dEQP-GLES3.functional.shaders.fragdepth.compare#dynamic_conditional_write
-dEQP-GLES3.functional.shaders.fragdepth.compare#uniform_loop_write
-dEQP-GLES3.functional.shaders.fragdepth.compare#write_in_function
-dEQP-GLES3.functional.shaders.precision.float#highp_add_vertex
-dEQP-GLES3.functional.shaders.precision.float#highp_add_fragment
-dEQP-GLES3.functional.shaders.precision.float#highp_sub_vertex
-dEQP-GLES3.functional.shaders.precision.float#highp_sub_fragment
-dEQP-GLES3.functional.shaders.precision.float#highp_mul_vertex
-dEQP-GLES3.functional.shaders.precision.float#highp_mul_fragment
-dEQP-GLES3.functional.shaders.precision.float#highp_div_vertex
-dEQP-GLES3.functional.shaders.precision.float#highp_div_fragment
-dEQP-GLES3.functional.shaders.precision.float#mediump_add_vertex
-dEQP-GLES3.functional.shaders.precision.float#mediump_add_fragment
-dEQP-GLES3.functional.shaders.precision.float#mediump_sub_vertex
-dEQP-GLES3.functional.shaders.precision.float#mediump_sub_fragment
-dEQP-GLES3.functional.shaders.precision.float#mediump_mul_vertex
-dEQP-GLES3.functional.shaders.precision.float#mediump_mul_fragment
-dEQP-GLES3.functional.shaders.precision.float#mediump_div_vertex
-dEQP-GLES3.functional.shaders.precision.float#mediump_div_fragment
-dEQP-GLES3.functional.shaders.precision.int#highp_add_fragment
-dEQP-GLES3.functional.shaders.precision.int#highp_sub_fragment
-dEQP-GLES3.functional.shaders.precision.int#highp_mul_fragment
-dEQP-GLES3.functional.shaders.precision.int#highp_div_fragment
-dEQP-GLES3.functional.shaders.precision.int#mediump_add_vertex
-dEQP-GLES3.functional.shaders.precision.int#mediump_add_fragment
-dEQP-GLES3.functional.shaders.precision.int#mediump_sub_vertex
-dEQP-GLES3.functional.shaders.precision.int#mediump_sub_fragment
-dEQP-GLES3.functional.shaders.precision.int#mediump_mul_vertex
-dEQP-GLES3.functional.shaders.precision.int#mediump_mul_fragment
-dEQP-GLES3.functional.shaders.precision.int#mediump_div_vertex
-dEQP-GLES3.functional.shaders.precision.int#mediump_div_fragment
-dEQP-GLES3.functional.shaders.precision.int#lowp_add_vertex
-dEQP-GLES3.functional.shaders.precision.int#lowp_add_fragment
-dEQP-GLES3.functional.shaders.precision.int#lowp_sub_vertex
-dEQP-GLES3.functional.shaders.precision.int#lowp_sub_fragment
-dEQP-GLES3.functional.shaders.precision.int#lowp_mul_vertex
-dEQP-GLES3.functional.shaders.precision.int#lowp_mul_fragment
-dEQP-GLES3.functional.shaders.precision.int#lowp_div_vertex
-dEQP-GLES3.functional.shaders.precision.int#lowp_div_fragment
-dEQP-GLES3.functional.shaders.precision.uint#highp_add_fragment
-dEQP-GLES3.functional.shaders.precision.uint#highp_sub_fragment
-dEQP-GLES3.functional.shaders.precision.uint#highp_mul_fragment
-dEQP-GLES3.functional.shaders.precision.uint#highp_div_fragment
-dEQP-GLES3.functional.shaders.precision.uint#mediump_add_vertex
-dEQP-GLES3.functional.shaders.precision.uint#mediump_add_fragment
-dEQP-GLES3.functional.shaders.precision.uint#mediump_sub_vertex
-dEQP-GLES3.functional.shaders.precision.uint#mediump_sub_fragment
-dEQP-GLES3.functional.shaders.precision.uint#mediump_mul_vertex
-dEQP-GLES3.functional.shaders.precision.uint#mediump_mul_fragment
-dEQP-GLES3.functional.shaders.precision.uint#mediump_div_vertex
-dEQP-GLES3.functional.shaders.precision.uint#mediump_div_fragment
-dEQP-GLES3.functional.shaders.precision.uint#lowp_add_vertex
-dEQP-GLES3.functional.shaders.precision.uint#lowp_add_fragment
-dEQP-GLES3.functional.shaders.precision.uint#lowp_sub_vertex
-dEQP-GLES3.functional.shaders.precision.uint#lowp_sub_fragment
-dEQP-GLES3.functional.shaders.precision.uint#lowp_mul_vertex
-dEQP-GLES3.functional.shaders.precision.uint#lowp_mul_fragment
-dEQP-GLES3.functional.shaders.precision.uint#lowp_div_vertex
-dEQP-GLES3.functional.shaders.precision.uint#lowp_div_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#max_vertex_attribs_vertex
-dEQP-GLES3.functional.shaders.builtin_variable#max_vertex_attribs_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#max_vertex_uniform_vectors_vertex
-dEQP-GLES3.functional.shaders.builtin_variable#max_vertex_uniform_vectors_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#max_fragment_uniform_vectors_vertex
-dEQP-GLES3.functional.shaders.builtin_variable#max_fragment_uniform_vectors_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#max_texture_image_units_vertex
-dEQP-GLES3.functional.shaders.builtin_variable#max_texture_image_units_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#max_draw_buffers_vertex
-dEQP-GLES3.functional.shaders.builtin_variable#max_draw_buffers_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#depth_range_vertex
-dEQP-GLES3.functional.shaders.builtin_variable#depth_range_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#vertex_id
-dEQP-GLES3.functional.shaders.builtin_variable#fragcoord_xyz
-dEQP-GLES3.functional.shaders.builtin_variable#pointcoord
-dEQP-GLES3.functional.shaders.builtin_variable#frontfacing
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler2d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler2d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler2d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler2d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2d_bias_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2d_bias_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler2d_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler2d_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercube_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercube_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercube_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercube_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isamplercube_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#isamplercube_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usamplercube_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#usamplercube_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercube_bias_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercube_bias_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isamplercube_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usamplercube_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darray_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darray_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darray_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darray_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler2darray_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler2darray_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler2darray_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler2darray_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darray_bias_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darray_bias_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler2darray_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler2darray_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler3d_bias_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler3d_bias_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#isampler3d_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#usampler3d_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2dshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2dshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2dshadow_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercubeshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercubeshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#samplercubeshadow_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darrayshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec3_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec3_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec3_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec3_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler2d_vec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler2d_vec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler2d_vec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler2d_vec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec3_bias_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec3_bias_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler2d_vec3_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler2d_vec3_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec4_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec4_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler2d_vec4_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler2d_vec4_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler2d_vec4_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler2d_vec4_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec4_bias_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2d_vec4_bias_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler2d_vec4_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler2d_vec4_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler3d_bias_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler3d_bias_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#isampler3d_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#usampler3d_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2dshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2dshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureproj#sampler2dshadow_bias_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#isamplercube_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#isamplercube_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#usamplercube_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#usamplercube_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2darray_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2darray_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2darray_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2darray_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2dshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturelod#sampler2dshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec3_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec3_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec3_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec3_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec4_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec4_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2d_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2dshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojlod#sampler2dshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#samplercube_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#samplercube_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#samplercube_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#samplercube_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2darray_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2darray_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2darray_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2darray_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2dshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2dshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2darrayshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#sampler2darrayshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec3_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec3_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec3_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec3_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec4_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec4_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2d_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2dshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad#sampler2dshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#sampler2d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#sampler2d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#sampler2d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#sampler2d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#isampler2d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#isampler2d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#usampler2d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetch#usampler2d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#usampler2d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#usampler2d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texture_sampler3dshadow_vec4_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texture_sampler3dshadow_vec4_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_samplercube_vec4_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_samplercube_vec4_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_isamplercube_vec4_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_isamplercube_vec4_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_usamplercube_vec4_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_usamplercube_vec4_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_samplercube_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_samplercube_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_isamplercube_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_isamplercube_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_usamplercube_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_usamplercube_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_sampler2darrayshadow_vec4_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_sampler2darrayshadow_vec4_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_sampler2darrayshadow_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureproj_sampler2darrayshadow_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelod_samplercubeshadow_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelod_samplercubeshadow_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelod_sampler2darrayshadow_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelod_sampler2darrayshadow_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_isamplercube_vec3_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_isamplercube_vec3_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_usamplercube_vec3_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_usamplercube_vec3_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_isamplercube_vec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_isamplercube_vec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_usamplercube_vec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_usamplercube_vec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec2_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec2_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec3_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercube_vec3_ivec3_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darray_vec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darray_vec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darray_vec3_ivec3_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darray_vec3_ivec3_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercubeshadow_vec4_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercubeshadow_vec4_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercubeshadow_vec4_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_samplercubeshadow_vec4_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darrayshadow_vec4_ivec2_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darrayshadow_vec4_ivec2_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercube_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercube_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_isamplercube_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_isamplercube_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_usamplercube_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_usamplercube_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2dshadow_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2dshadow_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercubeshadow_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercubeshadow_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2darrayshadow_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2darrayshadow_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercube_ivec3_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercube_ivec3_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2dshadow_ivec2_int_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2dshadow_ivec2_int_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercubeshadow_ivec3_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_samplercubeshadow_ivec3_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2darrayshadow_ivec3_int_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texelfetch_sampler2darrayshadow_ivec3_int_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_samplercube_vec4_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_samplercube_vec4_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_samplercube_vec4_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_samplercube_vec4_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_samplercubeshadow_vec4_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_samplercubeshadow_vec4_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_sampler2darrayshadow_vec4_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_sampler2darrayshadow_vec4_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_sampler2darrayshadow_vec4_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojoffset_sampler2darrayshadow_vec4_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_samplercube_vec3_float_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_samplercube_vec3_float_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_samplercube_vec3_float_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_samplercube_vec3_float_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_samplercubeshadow_vec3_float_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_samplercubeshadow_vec3_float_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_sampler2darrayshadow_vec3_float_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_sampler2darrayshadow_vec3_float_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_sampler2darrayshadow_vec3_float_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturelodoffset_sampler2darrayshadow_vec3_float_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojlod_samplercube_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojlod_samplercube_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojlod_sampler2darray_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojlod_sampler2darray_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojlod_sampler2darrayshadow_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojlod_sampler2darrayshadow_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegrad_sampler2darray_vec3_vec3_vec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegrad_sampler2darray_vec3_vec3_vec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercube_vec3_vec3_vec3_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercube_vec3_vec3_vec3_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercube_vec3_vec3_vec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercube_vec3_vec3_vec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercubeshadow_vec4_vec3_vec3_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercubeshadow_vec4_vec3_vec3_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercubeshadow_vec4_vec3_vec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texturegradoffset_samplercubeshadow_vec4_vec3_vec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgrad_samplercube_vec4_vec3_vec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgrad_samplercube_vec4_vec3_vec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgrad_sampler2darray_vec4_vec2_vec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgrad_sampler2darray_vec4_vec2_vec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_samplercube_vec4_vec3_vec3_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_samplercube_vec4_vec3_vec3_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_samplercube_vec4_vec3_vec3_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_samplercube_vec4_vec3_vec3_ivec3_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_sampler2darray_vec4_vec2_vec2_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_sampler2darray_vec4_vec2_vec2_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_sampler2darray_vec4_vec2_vec2_ivec3_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureprojgradoffset_sampler2darray_vec4_vec2_vec2_ivec3_fragment
-dEQP-GLES3.functional.shaders.derivate.dfdx.constant#vec2
-dEQP-GLES3.functional.shaders.derivate.dfdx.constant#vec3
-dEQP-GLES3.functional.shaders.derivate.dfdx.constant#vec4
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#float_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4#float_mediump
-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.fastest.default#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4#float_mediump
-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.nicest.default#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4#float_mediump
-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.dfdy.constant#float
-dEQP-GLES3.functional.shaders.derivate.dfdy.constant#vec2
-dEQP-GLES3.functional.shaders.derivate.dfdy.constant#vec3
-dEQP-GLES3.functional.shaders.derivate.dfdy.constant#vec4
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.in_function#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.in_function#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_if#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_if#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_loop#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_loop#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_switch#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_switch#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_if#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_if#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_loop#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_loop#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_switch#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_switch#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.constant#float
-dEQP-GLES3.functional.shaders.derivate.fwidth.constant#vec2
-dEQP-GLES3.functional.shaders.derivate.fwidth.constant#vec3
-dEQP-GLES3.functional.shaders.derivate.fwidth.constant#vec4
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#float_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec2_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec4_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#vec4_mediump
-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_msaa4#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4#vec2_mediump
-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#vec2_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec4_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#vec4_mediump
-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_float#float_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec2_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec4_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#vec4_mediump
-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_float#float_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#float_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec2_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec4_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec4_mediump
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#int_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#int_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#ivec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#ivec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#ivec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#ivec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#ivec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.abs#ivec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#int_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#int_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#int_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#int_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#int_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#int_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.sign#ivec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floor#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.trunc#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.round#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.roundeven#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.ceil#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.fract#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstoint#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.floatbitstouint#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.intbitstofloat#int_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.intbitstofloat#int_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.intbitstofloat#ivec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.intbitstofloat#ivec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.intbitstofloat#ivec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.intbitstofloat#ivec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat#uint_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat#uint_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat#uvec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat#uvec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat#uvec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat#uvec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packhalf2x16_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packhalf2x16_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.add.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sub.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mul.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.div.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.radians.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.degrees.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acos.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sinh.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cosh.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asinh.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.pow.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.exp2.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log2.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sqrt.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inversesqrt.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.abs.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sign.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.floor.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.trunc.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.round.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.roundeven.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.fract.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mod.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.min.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.max.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.step.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.length.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.distance.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cross#lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cross#lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cross#mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cross#mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cross#highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cross#highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.normalize.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.reflect.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_vertex#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_vertex#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_vertex#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.lowp_fragment#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_vertex#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.outerproduct.mediump_fragment#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_vertex#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_vertex#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_vertex#mat4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_fragment#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_fragment#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.highp_fragment#mat3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.determinant.lowp_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.determinant.lowp_fragment#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.determinant.mediump_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inverse.lowp_vertex#mat2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.inverse.mediump_vertex#mat2
-dEQP-GLES3.functional.shaders.invariance.highp#common_subexpression_0
-dEQP-GLES3.functional.shaders.invariance.highp#subexpression_precision_lowp
-dEQP-GLES3.functional.shaders.invariance.highp#subexpression_precision_mediump
-dEQP-GLES3.functional.shaders.invariance.highp#subexpression_precision_highp
-dEQP-GLES3.functional.shaders.invariance.highp#loop_2
-dEQP-GLES3.functional.shaders.invariance.highp#loop_3
-dEQP-GLES3.functional.shaders.invariance.highp#loop_4
-dEQP-GLES3.functional.shaders.invariance.mediump#common_subexpression_0
-dEQP-GLES3.functional.shaders.invariance.mediump#subexpression_precision_lowp
-dEQP-GLES3.functional.shaders.invariance.mediump#subexpression_precision_mediump
-dEQP-GLES3.functional.shaders.invariance.mediump#subexpression_precision_highp
-dEQP-GLES3.functional.shaders.invariance.mediump#loop_2
-dEQP-GLES3.functional.shaders.invariance.mediump#loop_3
-dEQP-GLES3.functional.shaders.invariance.mediump#loop_4
-dEQP-GLES3.functional.shaders.invariance.lowp#common_subexpression_0
-dEQP-GLES3.functional.shaders.invariance.lowp#subexpression_precision_lowp
-dEQP-GLES3.functional.shaders.invariance.lowp#subexpression_precision_mediump
-dEQP-GLES3.functional.shaders.invariance.lowp#subexpression_precision_highp
-dEQP-GLES3.functional.shaders.invariance.lowp#loop_2
-dEQP-GLES3.functional.shaders.invariance.lowp#loop_3
-dEQP-GLES3.functional.shaders.invariance.lowp#loop_4
-dEQP-GLES3.functional.shaders.fragdata#valid_static_index
-dEQP-GLES3.functional.shaders.fragdata#valid_uniform_index
-dEQP-GLES3.functional.shaders.fragdata#valid_dynamic_index
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#bool_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#bool_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#cast_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.trivial#cast_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_vec_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_vec_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_ivec_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_ivec_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_mat_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#math_mat_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#bitwise_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#bitwise_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#logical_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#logical_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#compare_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#compare_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.operators#selection_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.operators#selection_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#struct_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#struct_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#nested_struct_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#nested_struct_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#array_size_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#array_size_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.other#switch_case_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.other#switch_case_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sin_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cos_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#pow_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#exp2_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#log2_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.exponential#sqrt_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#sign_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floor_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#ceil_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec3_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec3_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec4_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_vec4_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec3_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec3_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec4_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_vec4_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec3_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec3_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec4_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_vec4_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#length_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#dot_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#normalize_vec4_fragment
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#0
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#1
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#2
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#3
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#4
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#5
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#6
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#7
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#8
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#9
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#10
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#11
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#12
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#13
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#14
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#15
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#16
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#17
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#18
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#19
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#20
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#21
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#22
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#23
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#24
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#25
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#26
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#27
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#28
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#29
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#30
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#31
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#32
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#33
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#34
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#35
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#36
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#37
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#38
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#39
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#40
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#41
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#42
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#43
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#44
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#45
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#46
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#47
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#48
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#49
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#50
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#51
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#52
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#53
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#54
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#55
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#56
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#57
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#58
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#59
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#60
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#61
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#62
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#63
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#64
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#65
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#66
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#67
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#68
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#69
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#70
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#71
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#72
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#73
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#74
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#75
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#76
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#77
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#78
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#79
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#80
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#81
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#82
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#83
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#84
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#85
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#86
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#87
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#88
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#89
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#90
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#91
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#92
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#93
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#94
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#95
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#96
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#97
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#98
-dEQP-GLES3.functional.shaders.random.basic_expression.vertex#99
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#0
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#1
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#2
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#3
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#4
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#5
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#6
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#7
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#8
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#9
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#10
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#11
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#12
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#13
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#14
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#15
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#16
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#17
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#18
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#19
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#20
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#21
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#22
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#23
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#24
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#25
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#26
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#27
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#28
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#29
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#30
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#31
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#32
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#33
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#34
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#35
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#36
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#37
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#38
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#39
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#40
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#41
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#42
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#43
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#44
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#45
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#46
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#47
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#48
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#49
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#50
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#51
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#52
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#53
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#54
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#55
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#56
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#57
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#58
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#59
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#60
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#61
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#62
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#63
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#64
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#65
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#66
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#67
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#68
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#69
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#70
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#71
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#72
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#73
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#74
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#75
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#76
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#77
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#78
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#79
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#80
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#81
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#82
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#83
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#84
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#85
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#86
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#87
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#88
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#89
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#90
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#91
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#92
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#93
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#94
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#95
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#96
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#97
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#98
-dEQP-GLES3.functional.shaders.random.basic_expression.fragment#99
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#0
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#1
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#2
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#3
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#4
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#5
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#6
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#7
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#8
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#9
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#10
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#11
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#12
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#13
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#14
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#15
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#16
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#17
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#18
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#19
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#20
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#21
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#22
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#23
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#24
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#25
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#26
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#27
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#28
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#29
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#30
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#31
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#32
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#33
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#34
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#35
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#36
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#37
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#38
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#39
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#40
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#41
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#42
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#43
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#44
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#45
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#46
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#47
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#48
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#49
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#50
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#51
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#52
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#53
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#54
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#55
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#56
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#57
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#58
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#59
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#60
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#61
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#62
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#63
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#64
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#65
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#66
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#67
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#68
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#69
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#70
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#71
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#72
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#73
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#74
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#75
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#76
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#77
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#78
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#79
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#80
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#81
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#82
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#83
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#84
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#85
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#86
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#87
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#88
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#89
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#90
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#91
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#92
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#93
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#94
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#95
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#96
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#97
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#98
-dEQP-GLES3.functional.shaders.random.basic_expression.combined#99
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#0
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#1
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#2
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#3
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#4
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#5
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#6
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#7
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#8
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#9
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#10
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#11
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#12
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#13
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#14
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#15
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#16
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#17
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#18
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#19
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#20
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#21
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#22
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#23
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#24
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#25
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#26
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#27
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#28
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#29
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#30
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#31
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#32
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#33
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#34
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#35
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#36
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#37
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#38
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#39
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#40
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#41
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#42
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#43
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#44
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#45
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#46
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#47
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#48
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#49
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#50
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#51
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#52
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#53
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#54
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#55
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#56
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#57
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#58
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#59
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#60
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#61
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#62
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#63
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#64
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#65
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#66
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#67
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#68
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#69
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#70
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#71
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#72
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#73
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#74
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#75
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#76
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#77
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#78
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#79
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#80
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#81
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#82
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#83
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#84
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#85
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#86
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#87
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#88
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#89
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#90
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#91
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#92
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#93
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#94
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#95
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#96
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#97
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#98
-dEQP-GLES3.functional.shaders.random.scalar_conversion.vertex#99
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#0
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#1
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#2
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#3
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#4
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#5
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#6
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#7
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#8
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#9
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#10
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#11
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#12
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#13
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#14
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#15
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#16
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#17
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#18
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#19
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#20
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#21
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#22
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#23
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#24
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#25
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#26
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#27
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#28
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#29
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#30
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#31
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#32
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#33
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#34
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#35
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#36
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#37
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#38
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#39
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#40
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#41
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#42
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#43
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#44
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#45
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#46
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#47
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#48
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#49
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#50
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#51
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#52
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#53
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#54
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#55
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#56
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#57
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#58
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#59
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#60
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#61
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#62
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#63
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#64
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#65
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#66
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#67
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#68
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#69
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#70
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#71
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#73
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#74
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#75
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#76
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#77
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#78
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#79
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#80
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#81
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#82
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#83
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#84
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#85
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#86
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#87
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#88
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#89
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#90
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#91
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#92
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#93
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#94
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#95
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#96
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#97
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#98
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#99
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#0
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#1
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#2
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#3
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#4
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#5
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#6
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#7
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#8
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#9
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#10
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#11
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#12
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#13
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#14
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#15
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#16
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#17
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#18
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#19
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#20
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#21
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#22
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#23
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#24
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#25
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#26
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#27
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#28
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#29
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#30
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#31
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#32
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#33
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#34
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#35
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#36
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#37
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#38
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#39
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#40
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#41
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#42
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#43
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#44
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#45
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#46
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#47
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#48
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#49
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#50
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#51
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#52
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#53
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#54
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#55
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#56
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#57
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#58
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#59
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#60
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#61
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#62
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#63
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#64
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#65
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#66
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#67
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#68
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#69
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#70
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#71
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#73
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#74
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#75
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#76
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#77
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#78
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#79
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#80
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#81
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#82
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#83
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#84
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#85
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#86
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#87
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#88
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#89
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#90
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#91
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#92
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#93
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#94
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#95
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#96
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#97
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#98
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#99
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#0
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#1
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#2
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#3
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#4
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#5
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#6
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#7
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#8
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#9
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#10
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#11
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#12
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#13
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#14
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#15
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#16
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#17
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#18
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#19
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#20
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#21
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#22
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#23
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#24
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#25
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#26
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#27
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#28
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#29
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#30
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#31
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#32
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#33
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#34
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#35
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#36
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#37
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#38
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#39
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#40
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#41
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#42
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#43
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#44
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#45
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#46
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#47
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#48
-dEQP-GLES3.functional.shaders.random.swizzle.vertex#49
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#0
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#1
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#2
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#3
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#4
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#5
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#6
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#7
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#8
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#9
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#10
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#11
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#12
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#13
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#14
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#15
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#16
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#17
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#18
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#19
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#20
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#21
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#22
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#23
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#24
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#25
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#26
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#27
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#28
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#29
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#30
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#31
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#32
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#33
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#34
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#35
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#36
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#37
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#38
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#39
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#40
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#41
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#42
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#43
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#44
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#45
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#46
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#47
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#48
-dEQP-GLES3.functional.shaders.random.swizzle.fragment#49
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#0
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#1
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#2
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#3
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#4
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#5
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#6
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#7
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#8
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#9
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#10
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#11
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#12
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#13
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#14
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#15
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#16
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#17
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#18
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#19
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#20
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#21
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#22
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#23
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#24
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#25
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#26
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#27
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#28
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#29
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#30
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#31
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#32
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#33
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#34
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#35
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#36
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#37
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#38
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#39
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#40
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#42
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#43
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#44
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#45
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#46
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#47
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#48
-dEQP-GLES3.functional.shaders.random.comparison_ops.vertex#49
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#0
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#1
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#2
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#3
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#4
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#5
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#6
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#7
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#8
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#9
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#10
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#11
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#12
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#13
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#14
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#15
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#16
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#17
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#18
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#19
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#20
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#21
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#22
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#23
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#24
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#25
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#26
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#27
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#28
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#29
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#30
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#31
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#32
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#33
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#34
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#35
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#36
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#37
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#38
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#39
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#40
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#42
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#43
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#44
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#45
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#46
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#47
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#48
-dEQP-GLES3.functional.shaders.random.comparison_ops.fragment#49
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#0
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#1
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#2
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#3
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#4
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#5
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#6
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#7
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#8
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#9
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#10
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#11
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#12
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#13
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#14
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#15
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#16
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#17
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#18
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#19
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#20
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#21
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#22
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#23
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#24
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#25
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#26
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#27
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#28
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#29
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#30
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#31
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#32
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#33
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#34
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#35
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#36
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#37
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#38
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#39
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#40
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#41
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#42
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#43
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#45
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#46
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#47
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#48
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#49
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#50
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#51
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#52
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#53
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#54
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#55
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#56
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#57
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#58
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#59
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#60
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#61
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#62
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#63
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#64
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#65
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#66
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#67
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#68
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#69
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#70
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#71
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#72
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#73
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#74
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#75
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#76
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#77
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#78
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#79
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#80
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#81
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#82
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#83
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#84
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#85
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#86
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#87
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#88
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#89
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#90
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#91
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#92
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#93
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#94
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#95
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#96
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#97
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#98
-dEQP-GLES3.functional.shaders.random.conditionals.vertex#99
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#0
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#1
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#2
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#3
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#4
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#5
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#6
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#7
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#8
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#9
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#10
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#11
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#12
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#13
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#14
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#15
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#16
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#17
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#18
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#19
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#20
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#21
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#22
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#23
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#24
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#25
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#26
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#27
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#28
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#29
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#30
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#31
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#32
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#33
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#34
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#35
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#36
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#37
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#38
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#39
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#40
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#41
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#42
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#43
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#44
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#45
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#46
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#47
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#48
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#49
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#50
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#51
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#52
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#53
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#54
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#55
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#56
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#57
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#58
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#59
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#60
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#61
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#62
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#63
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#64
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#65
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#66
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#67
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#68
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#69
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#70
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#71
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#72
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#73
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#74
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#75
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#76
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#77
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#78
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#79
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#80
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#81
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#82
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#83
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#84
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#85
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#86
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#87
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#88
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#89
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#90
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#91
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#92
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#93
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#94
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#95
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#96
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#97
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#98
-dEQP-GLES3.functional.shaders.random.conditionals.fragment#99
-dEQP-GLES3.functional.shaders.random.conditionals.combined#0
-dEQP-GLES3.functional.shaders.random.conditionals.combined#1
-dEQP-GLES3.functional.shaders.random.conditionals.combined#2
-dEQP-GLES3.functional.shaders.random.conditionals.combined#3
-dEQP-GLES3.functional.shaders.random.conditionals.combined#4
-dEQP-GLES3.functional.shaders.random.conditionals.combined#5
-dEQP-GLES3.functional.shaders.random.conditionals.combined#6
-dEQP-GLES3.functional.shaders.random.conditionals.combined#7
-dEQP-GLES3.functional.shaders.random.conditionals.combined#8
-dEQP-GLES3.functional.shaders.random.conditionals.combined#9
-dEQP-GLES3.functional.shaders.random.conditionals.combined#10
-dEQP-GLES3.functional.shaders.random.conditionals.combined#11
-dEQP-GLES3.functional.shaders.random.conditionals.combined#12
-dEQP-GLES3.functional.shaders.random.conditionals.combined#13
-dEQP-GLES3.functional.shaders.random.conditionals.combined#14
-dEQP-GLES3.functional.shaders.random.conditionals.combined#15
-dEQP-GLES3.functional.shaders.random.conditionals.combined#16
-dEQP-GLES3.functional.shaders.random.conditionals.combined#17
-dEQP-GLES3.functional.shaders.random.conditionals.combined#18
-dEQP-GLES3.functional.shaders.random.conditionals.combined#19
-dEQP-GLES3.functional.shaders.random.conditionals.combined#20
-dEQP-GLES3.functional.shaders.random.conditionals.combined#21
-dEQP-GLES3.functional.shaders.random.conditionals.combined#22
-dEQP-GLES3.functional.shaders.random.conditionals.combined#23
-dEQP-GLES3.functional.shaders.random.conditionals.combined#24
-dEQP-GLES3.functional.shaders.random.conditionals.combined#25
-dEQP-GLES3.functional.shaders.random.conditionals.combined#26
-dEQP-GLES3.functional.shaders.random.conditionals.combined#27
-dEQP-GLES3.functional.shaders.random.conditionals.combined#28
-dEQP-GLES3.functional.shaders.random.conditionals.combined#29
-dEQP-GLES3.functional.shaders.random.conditionals.combined#30
-dEQP-GLES3.functional.shaders.random.conditionals.combined#31
-dEQP-GLES3.functional.shaders.random.conditionals.combined#32
-dEQP-GLES3.functional.shaders.random.conditionals.combined#33
-dEQP-GLES3.functional.shaders.random.conditionals.combined#34
-dEQP-GLES3.functional.shaders.random.conditionals.combined#35
-dEQP-GLES3.functional.shaders.random.conditionals.combined#36
-dEQP-GLES3.functional.shaders.random.conditionals.combined#37
-dEQP-GLES3.functional.shaders.random.conditionals.combined#38
-dEQP-GLES3.functional.shaders.random.conditionals.combined#39
-dEQP-GLES3.functional.shaders.random.conditionals.combined#40
-dEQP-GLES3.functional.shaders.random.conditionals.combined#41
-dEQP-GLES3.functional.shaders.random.conditionals.combined#42
-dEQP-GLES3.functional.shaders.random.conditionals.combined#43
-dEQP-GLES3.functional.shaders.random.conditionals.combined#44
-dEQP-GLES3.functional.shaders.random.conditionals.combined#45
-dEQP-GLES3.functional.shaders.random.conditionals.combined#46
-dEQP-GLES3.functional.shaders.random.conditionals.combined#47
-dEQP-GLES3.functional.shaders.random.conditionals.combined#48
-dEQP-GLES3.functional.shaders.random.conditionals.combined#49
-dEQP-GLES3.functional.shaders.random.conditionals.combined#50
-dEQP-GLES3.functional.shaders.random.conditionals.combined#51
-dEQP-GLES3.functional.shaders.random.conditionals.combined#52
-dEQP-GLES3.functional.shaders.random.conditionals.combined#53
-dEQP-GLES3.functional.shaders.random.conditionals.combined#54
-dEQP-GLES3.functional.shaders.random.conditionals.combined#55
-dEQP-GLES3.functional.shaders.random.conditionals.combined#56
-dEQP-GLES3.functional.shaders.random.conditionals.combined#57
-dEQP-GLES3.functional.shaders.random.conditionals.combined#58
-dEQP-GLES3.functional.shaders.random.conditionals.combined#59
-dEQP-GLES3.functional.shaders.random.conditionals.combined#60
-dEQP-GLES3.functional.shaders.random.conditionals.combined#61
-dEQP-GLES3.functional.shaders.random.conditionals.combined#62
-dEQP-GLES3.functional.shaders.random.conditionals.combined#63
-dEQP-GLES3.functional.shaders.random.conditionals.combined#64
-dEQP-GLES3.functional.shaders.random.conditionals.combined#65
-dEQP-GLES3.functional.shaders.random.conditionals.combined#66
-dEQP-GLES3.functional.shaders.random.conditionals.combined#67
-dEQP-GLES3.functional.shaders.random.conditionals.combined#68
-dEQP-GLES3.functional.shaders.random.conditionals.combined#69
-dEQP-GLES3.functional.shaders.random.conditionals.combined#70
-dEQP-GLES3.functional.shaders.random.conditionals.combined#71
-dEQP-GLES3.functional.shaders.random.conditionals.combined#72
-dEQP-GLES3.functional.shaders.random.conditionals.combined#73
-dEQP-GLES3.functional.shaders.random.conditionals.combined#74
-dEQP-GLES3.functional.shaders.random.conditionals.combined#75
-dEQP-GLES3.functional.shaders.random.conditionals.combined#76
-dEQP-GLES3.functional.shaders.random.conditionals.combined#77
-dEQP-GLES3.functional.shaders.random.conditionals.combined#78
-dEQP-GLES3.functional.shaders.random.conditionals.combined#79
-dEQP-GLES3.functional.shaders.random.conditionals.combined#80
-dEQP-GLES3.functional.shaders.random.conditionals.combined#81
-dEQP-GLES3.functional.shaders.random.conditionals.combined#82
-dEQP-GLES3.functional.shaders.random.conditionals.combined#83
-dEQP-GLES3.functional.shaders.random.conditionals.combined#84
-dEQP-GLES3.functional.shaders.random.conditionals.combined#85
-dEQP-GLES3.functional.shaders.random.conditionals.combined#86
-dEQP-GLES3.functional.shaders.random.conditionals.combined#87
-dEQP-GLES3.functional.shaders.random.conditionals.combined#88
-dEQP-GLES3.functional.shaders.random.conditionals.combined#89
-dEQP-GLES3.functional.shaders.random.conditionals.combined#90
-dEQP-GLES3.functional.shaders.random.conditionals.combined#91
-dEQP-GLES3.functional.shaders.random.conditionals.combined#92
-dEQP-GLES3.functional.shaders.random.conditionals.combined#93
-dEQP-GLES3.functional.shaders.random.conditionals.combined#94
-dEQP-GLES3.functional.shaders.random.conditionals.combined#95
-dEQP-GLES3.functional.shaders.random.conditionals.combined#96
-dEQP-GLES3.functional.shaders.random.conditionals.combined#97
-dEQP-GLES3.functional.shaders.random.conditionals.combined#98
-dEQP-GLES3.functional.shaders.random.conditionals.combined#99
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#0
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#1
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#2
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#4
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#5
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#6
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#7
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#8
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#9
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#12
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#13
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#14
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#16
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#17
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#18
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#19
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#20
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#21
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#22
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#23
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#24
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#25
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#26
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#27
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#28
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#29
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#30
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#31
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#32
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#33
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#34
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#35
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#36
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#38
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#39
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#41
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#42
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#43
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#44
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#45
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#46
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#47
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#48
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#50
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#51
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#52
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#53
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#54
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#55
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#56
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#57
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#58
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#59
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#60
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#61
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#62
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#63
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#64
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#65
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#66
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#67
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#68
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#69
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#70
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#71
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#72
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#73
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#74
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#75
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#76
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#77
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#78
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#79
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#80
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#81
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#82
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#84
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#85
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#86
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#87
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#88
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#90
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#91
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#92
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#93
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#95
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#96
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#97
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#98
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#99
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#0
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#1
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#2
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#4
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#5
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#6
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#7
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#8
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#9
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#11
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#12
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#13
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#14
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#16
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#17
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#18
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#19
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#20
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#21
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#22
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#23
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#24
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#25
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#26
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#27
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#28
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#29
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#30
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#31
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#32
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#33
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#34
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#35
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#36
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#38
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#39
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#41
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#42
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#43
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#44
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#45
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#46
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#47
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#48
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#50
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#51
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#52
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#53
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#54
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#55
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#56
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#57
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#58
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#59
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#60
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#61
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#62
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#63
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#64
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#65
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#66
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#67
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#68
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#69
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#70
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#71
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#72
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#73
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#74
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#75
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#76
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#77
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#78
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#79
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#80
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#81
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#82
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#84
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#85
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#86
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#87
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#88
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#90
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#91
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#92
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#93
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#95
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#96
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#97
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#98
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#99
-dEQP-GLES3.functional.shaders.random.exponential.vertex#0
-dEQP-GLES3.functional.shaders.random.exponential.vertex#1
-dEQP-GLES3.functional.shaders.random.exponential.vertex#2
-dEQP-GLES3.functional.shaders.random.exponential.vertex#3
-dEQP-GLES3.functional.shaders.random.exponential.vertex#4
-dEQP-GLES3.functional.shaders.random.exponential.vertex#5
-dEQP-GLES3.functional.shaders.random.exponential.vertex#6
-dEQP-GLES3.functional.shaders.random.exponential.vertex#7
-dEQP-GLES3.functional.shaders.random.exponential.vertex#8
-dEQP-GLES3.functional.shaders.random.exponential.vertex#9
-dEQP-GLES3.functional.shaders.random.exponential.vertex#10
-dEQP-GLES3.functional.shaders.random.exponential.vertex#11
-dEQP-GLES3.functional.shaders.random.exponential.vertex#12
-dEQP-GLES3.functional.shaders.random.exponential.vertex#13
-dEQP-GLES3.functional.shaders.random.exponential.vertex#14
-dEQP-GLES3.functional.shaders.random.exponential.vertex#15
-dEQP-GLES3.functional.shaders.random.exponential.vertex#16
-dEQP-GLES3.functional.shaders.random.exponential.vertex#17
-dEQP-GLES3.functional.shaders.random.exponential.vertex#18
-dEQP-GLES3.functional.shaders.random.exponential.vertex#19
-dEQP-GLES3.functional.shaders.random.exponential.vertex#20
-dEQP-GLES3.functional.shaders.random.exponential.vertex#21
-dEQP-GLES3.functional.shaders.random.exponential.vertex#22
-dEQP-GLES3.functional.shaders.random.exponential.vertex#23
-dEQP-GLES3.functional.shaders.random.exponential.vertex#25
-dEQP-GLES3.functional.shaders.random.exponential.vertex#26
-dEQP-GLES3.functional.shaders.random.exponential.vertex#27
-dEQP-GLES3.functional.shaders.random.exponential.vertex#28
-dEQP-GLES3.functional.shaders.random.exponential.vertex#29
-dEQP-GLES3.functional.shaders.random.exponential.vertex#30
-dEQP-GLES3.functional.shaders.random.exponential.vertex#31
-dEQP-GLES3.functional.shaders.random.exponential.vertex#33
-dEQP-GLES3.functional.shaders.random.exponential.vertex#34
-dEQP-GLES3.functional.shaders.random.exponential.vertex#35
-dEQP-GLES3.functional.shaders.random.exponential.vertex#36
-dEQP-GLES3.functional.shaders.random.exponential.vertex#37
-dEQP-GLES3.functional.shaders.random.exponential.vertex#39
-dEQP-GLES3.functional.shaders.random.exponential.vertex#40
-dEQP-GLES3.functional.shaders.random.exponential.vertex#41
-dEQP-GLES3.functional.shaders.random.exponential.vertex#42
-dEQP-GLES3.functional.shaders.random.exponential.vertex#43
-dEQP-GLES3.functional.shaders.random.exponential.vertex#44
-dEQP-GLES3.functional.shaders.random.exponential.vertex#45
-dEQP-GLES3.functional.shaders.random.exponential.vertex#47
-dEQP-GLES3.functional.shaders.random.exponential.vertex#48
-dEQP-GLES3.functional.shaders.random.exponential.vertex#49
-dEQP-GLES3.functional.shaders.random.exponential.vertex#50
-dEQP-GLES3.functional.shaders.random.exponential.vertex#52
-dEQP-GLES3.functional.shaders.random.exponential.vertex#53
-dEQP-GLES3.functional.shaders.random.exponential.vertex#54
-dEQP-GLES3.functional.shaders.random.exponential.vertex#55
-dEQP-GLES3.functional.shaders.random.exponential.vertex#56
-dEQP-GLES3.functional.shaders.random.exponential.vertex#57
-dEQP-GLES3.functional.shaders.random.exponential.vertex#58
-dEQP-GLES3.functional.shaders.random.exponential.vertex#59
-dEQP-GLES3.functional.shaders.random.exponential.vertex#60
-dEQP-GLES3.functional.shaders.random.exponential.vertex#61
-dEQP-GLES3.functional.shaders.random.exponential.vertex#62
-dEQP-GLES3.functional.shaders.random.exponential.vertex#63
-dEQP-GLES3.functional.shaders.random.exponential.vertex#65
-dEQP-GLES3.functional.shaders.random.exponential.vertex#66
-dEQP-GLES3.functional.shaders.random.exponential.vertex#67
-dEQP-GLES3.functional.shaders.random.exponential.vertex#68
-dEQP-GLES3.functional.shaders.random.exponential.vertex#69
-dEQP-GLES3.functional.shaders.random.exponential.vertex#71
-dEQP-GLES3.functional.shaders.random.exponential.vertex#72
-dEQP-GLES3.functional.shaders.random.exponential.vertex#73
-dEQP-GLES3.functional.shaders.random.exponential.vertex#74
-dEQP-GLES3.functional.shaders.random.exponential.vertex#75
-dEQP-GLES3.functional.shaders.random.exponential.vertex#76
-dEQP-GLES3.functional.shaders.random.exponential.vertex#77
-dEQP-GLES3.functional.shaders.random.exponential.vertex#78
-dEQP-GLES3.functional.shaders.random.exponential.vertex#80
-dEQP-GLES3.functional.shaders.random.exponential.vertex#81
-dEQP-GLES3.functional.shaders.random.exponential.vertex#82
-dEQP-GLES3.functional.shaders.random.exponential.vertex#83
-dEQP-GLES3.functional.shaders.random.exponential.vertex#84
-dEQP-GLES3.functional.shaders.random.exponential.vertex#85
-dEQP-GLES3.functional.shaders.random.exponential.vertex#86
-dEQP-GLES3.functional.shaders.random.exponential.vertex#87
-dEQP-GLES3.functional.shaders.random.exponential.vertex#88
-dEQP-GLES3.functional.shaders.random.exponential.vertex#89
-dEQP-GLES3.functional.shaders.random.exponential.vertex#90
-dEQP-GLES3.functional.shaders.random.exponential.vertex#91
-dEQP-GLES3.functional.shaders.random.exponential.vertex#92
-dEQP-GLES3.functional.shaders.random.exponential.vertex#93
-dEQP-GLES3.functional.shaders.random.exponential.vertex#94
-dEQP-GLES3.functional.shaders.random.exponential.vertex#95
-dEQP-GLES3.functional.shaders.random.exponential.vertex#96
-dEQP-GLES3.functional.shaders.random.exponential.vertex#97
-dEQP-GLES3.functional.shaders.random.exponential.vertex#98
-dEQP-GLES3.functional.shaders.random.exponential.vertex#99
-dEQP-GLES3.functional.shaders.random.exponential.fragment#0
-dEQP-GLES3.functional.shaders.random.exponential.fragment#2
-dEQP-GLES3.functional.shaders.random.exponential.fragment#3
-dEQP-GLES3.functional.shaders.random.exponential.fragment#4
-dEQP-GLES3.functional.shaders.random.exponential.fragment#5
-dEQP-GLES3.functional.shaders.random.exponential.fragment#6
-dEQP-GLES3.functional.shaders.random.exponential.fragment#7
-dEQP-GLES3.functional.shaders.random.exponential.fragment#8
-dEQP-GLES3.functional.shaders.random.exponential.fragment#9
-dEQP-GLES3.functional.shaders.random.exponential.fragment#10
-dEQP-GLES3.functional.shaders.random.exponential.fragment#12
-dEQP-GLES3.functional.shaders.random.exponential.fragment#13
-dEQP-GLES3.functional.shaders.random.exponential.fragment#14
-dEQP-GLES3.functional.shaders.random.exponential.fragment#15
-dEQP-GLES3.functional.shaders.random.exponential.fragment#16
-dEQP-GLES3.functional.shaders.random.exponential.fragment#17
-dEQP-GLES3.functional.shaders.random.exponential.fragment#18
-dEQP-GLES3.functional.shaders.random.exponential.fragment#19
-dEQP-GLES3.functional.shaders.random.exponential.fragment#20
-dEQP-GLES3.functional.shaders.random.exponential.fragment#21
-dEQP-GLES3.functional.shaders.random.exponential.fragment#22
-dEQP-GLES3.functional.shaders.random.exponential.fragment#23
-dEQP-GLES3.functional.shaders.random.exponential.fragment#25
-dEQP-GLES3.functional.shaders.random.exponential.fragment#26
-dEQP-GLES3.functional.shaders.random.exponential.fragment#27
-dEQP-GLES3.functional.shaders.random.exponential.fragment#28
-dEQP-GLES3.functional.shaders.random.exponential.fragment#29
-dEQP-GLES3.functional.shaders.random.exponential.fragment#30
-dEQP-GLES3.functional.shaders.random.exponential.fragment#31
-dEQP-GLES3.functional.shaders.random.exponential.fragment#33
-dEQP-GLES3.functional.shaders.random.exponential.fragment#34
-dEQP-GLES3.functional.shaders.random.exponential.fragment#35
-dEQP-GLES3.functional.shaders.random.exponential.fragment#36
-dEQP-GLES3.functional.shaders.random.exponential.fragment#37
-dEQP-GLES3.functional.shaders.random.exponential.fragment#38
-dEQP-GLES3.functional.shaders.random.exponential.fragment#39
-dEQP-GLES3.functional.shaders.random.exponential.fragment#40
-dEQP-GLES3.functional.shaders.random.exponential.fragment#41
-dEQP-GLES3.functional.shaders.random.exponential.fragment#42
-dEQP-GLES3.functional.shaders.random.exponential.fragment#43
-dEQP-GLES3.functional.shaders.random.exponential.fragment#44
-dEQP-GLES3.functional.shaders.random.exponential.fragment#45
-dEQP-GLES3.functional.shaders.random.exponential.fragment#46
-dEQP-GLES3.functional.shaders.random.exponential.fragment#48
-dEQP-GLES3.functional.shaders.random.exponential.fragment#49
-dEQP-GLES3.functional.shaders.random.exponential.fragment#50
-dEQP-GLES3.functional.shaders.random.exponential.fragment#52
-dEQP-GLES3.functional.shaders.random.exponential.fragment#53
-dEQP-GLES3.functional.shaders.random.exponential.fragment#54
-dEQP-GLES3.functional.shaders.random.exponential.fragment#55
-dEQP-GLES3.functional.shaders.random.exponential.fragment#56
-dEQP-GLES3.functional.shaders.random.exponential.fragment#57
-dEQP-GLES3.functional.shaders.random.exponential.fragment#58
-dEQP-GLES3.functional.shaders.random.exponential.fragment#59
-dEQP-GLES3.functional.shaders.random.exponential.fragment#60
-dEQP-GLES3.functional.shaders.random.exponential.fragment#61
-dEQP-GLES3.functional.shaders.random.exponential.fragment#62
-dEQP-GLES3.functional.shaders.random.exponential.fragment#63
-dEQP-GLES3.functional.shaders.random.exponential.fragment#65
-dEQP-GLES3.functional.shaders.random.exponential.fragment#66
-dEQP-GLES3.functional.shaders.random.exponential.fragment#67
-dEQP-GLES3.functional.shaders.random.exponential.fragment#68
-dEQP-GLES3.functional.shaders.random.exponential.fragment#69
-dEQP-GLES3.functional.shaders.random.exponential.fragment#71
-dEQP-GLES3.functional.shaders.random.exponential.fragment#72
-dEQP-GLES3.functional.shaders.random.exponential.fragment#73
-dEQP-GLES3.functional.shaders.random.exponential.fragment#74
-dEQP-GLES3.functional.shaders.random.exponential.fragment#75
-dEQP-GLES3.functional.shaders.random.exponential.fragment#76
-dEQP-GLES3.functional.shaders.random.exponential.fragment#77
-dEQP-GLES3.functional.shaders.random.exponential.fragment#78
-dEQP-GLES3.functional.shaders.random.exponential.fragment#80
-dEQP-GLES3.functional.shaders.random.exponential.fragment#81
-dEQP-GLES3.functional.shaders.random.exponential.fragment#82
-dEQP-GLES3.functional.shaders.random.exponential.fragment#83
-dEQP-GLES3.functional.shaders.random.exponential.fragment#84
-dEQP-GLES3.functional.shaders.random.exponential.fragment#85
-dEQP-GLES3.functional.shaders.random.exponential.fragment#86
-dEQP-GLES3.functional.shaders.random.exponential.fragment#87
-dEQP-GLES3.functional.shaders.random.exponential.fragment#89
-dEQP-GLES3.functional.shaders.random.exponential.fragment#90
-dEQP-GLES3.functional.shaders.random.exponential.fragment#91
-dEQP-GLES3.functional.shaders.random.exponential.fragment#92
-dEQP-GLES3.functional.shaders.random.exponential.fragment#93
-dEQP-GLES3.functional.shaders.random.exponential.fragment#94
-dEQP-GLES3.functional.shaders.random.exponential.fragment#95
-dEQP-GLES3.functional.shaders.random.exponential.fragment#96
-dEQP-GLES3.functional.shaders.random.exponential.fragment#97
-dEQP-GLES3.functional.shaders.random.exponential.fragment#98
-dEQP-GLES3.functional.shaders.random.exponential.fragment#99
-dEQP-GLES3.functional.shaders.random.texture.vertex#0
-dEQP-GLES3.functional.shaders.random.texture.vertex#1
-dEQP-GLES3.functional.shaders.random.texture.vertex#2
-dEQP-GLES3.functional.shaders.random.texture.vertex#3
-dEQP-GLES3.functional.shaders.random.texture.vertex#4
-dEQP-GLES3.functional.shaders.random.texture.vertex#5
-dEQP-GLES3.functional.shaders.random.texture.vertex#6
-dEQP-GLES3.functional.shaders.random.texture.vertex#7
-dEQP-GLES3.functional.shaders.random.texture.vertex#8
-dEQP-GLES3.functional.shaders.random.texture.vertex#9
-dEQP-GLES3.functional.shaders.random.texture.vertex#10
-dEQP-GLES3.functional.shaders.random.texture.vertex#11
-dEQP-GLES3.functional.shaders.random.texture.vertex#12
-dEQP-GLES3.functional.shaders.random.texture.vertex#13
-dEQP-GLES3.functional.shaders.random.texture.vertex#14
-dEQP-GLES3.functional.shaders.random.texture.vertex#15
-dEQP-GLES3.functional.shaders.random.texture.vertex#16
-dEQP-GLES3.functional.shaders.random.texture.vertex#17
-dEQP-GLES3.functional.shaders.random.texture.vertex#18
-dEQP-GLES3.functional.shaders.random.texture.vertex#19
-dEQP-GLES3.functional.shaders.random.texture.vertex#20
-dEQP-GLES3.functional.shaders.random.texture.vertex#21
-dEQP-GLES3.functional.shaders.random.texture.vertex#22
-dEQP-GLES3.functional.shaders.random.texture.vertex#23
-dEQP-GLES3.functional.shaders.random.texture.vertex#24
-dEQP-GLES3.functional.shaders.random.texture.vertex#25
-dEQP-GLES3.functional.shaders.random.texture.vertex#26
-dEQP-GLES3.functional.shaders.random.texture.vertex#27
-dEQP-GLES3.functional.shaders.random.texture.vertex#28
-dEQP-GLES3.functional.shaders.random.texture.vertex#29
-dEQP-GLES3.functional.shaders.random.texture.vertex#30
-dEQP-GLES3.functional.shaders.random.texture.vertex#31
-dEQP-GLES3.functional.shaders.random.texture.vertex#32
-dEQP-GLES3.functional.shaders.random.texture.vertex#33
-dEQP-GLES3.functional.shaders.random.texture.vertex#34
-dEQP-GLES3.functional.shaders.random.texture.vertex#35
-dEQP-GLES3.functional.shaders.random.texture.vertex#36
-dEQP-GLES3.functional.shaders.random.texture.vertex#37
-dEQP-GLES3.functional.shaders.random.texture.vertex#38
-dEQP-GLES3.functional.shaders.random.texture.vertex#39
-dEQP-GLES3.functional.shaders.random.texture.vertex#40
-dEQP-GLES3.functional.shaders.random.texture.vertex#41
-dEQP-GLES3.functional.shaders.random.texture.vertex#42
-dEQP-GLES3.functional.shaders.random.texture.vertex#43
-dEQP-GLES3.functional.shaders.random.texture.vertex#44
-dEQP-GLES3.functional.shaders.random.texture.vertex#45
-dEQP-GLES3.functional.shaders.random.texture.vertex#46
-dEQP-GLES3.functional.shaders.random.texture.vertex#47
-dEQP-GLES3.functional.shaders.random.texture.vertex#48
-dEQP-GLES3.functional.shaders.random.texture.vertex#49
-dEQP-GLES3.functional.shaders.random.texture.fragment#0
-dEQP-GLES3.functional.shaders.random.texture.fragment#1
-dEQP-GLES3.functional.shaders.random.texture.fragment#2
-dEQP-GLES3.functional.shaders.random.texture.fragment#3
-dEQP-GLES3.functional.shaders.random.texture.fragment#4
-dEQP-GLES3.functional.shaders.random.texture.fragment#5
-dEQP-GLES3.functional.shaders.random.texture.fragment#6
-dEQP-GLES3.functional.shaders.random.texture.fragment#7
-dEQP-GLES3.functional.shaders.random.texture.fragment#8
-dEQP-GLES3.functional.shaders.random.texture.fragment#9
-dEQP-GLES3.functional.shaders.random.texture.fragment#10
-dEQP-GLES3.functional.shaders.random.texture.fragment#11
-dEQP-GLES3.functional.shaders.random.texture.fragment#12
-dEQP-GLES3.functional.shaders.random.texture.fragment#13
-dEQP-GLES3.functional.shaders.random.texture.fragment#14
-dEQP-GLES3.functional.shaders.random.texture.fragment#15
-dEQP-GLES3.functional.shaders.random.texture.fragment#16
-dEQP-GLES3.functional.shaders.random.texture.fragment#17
-dEQP-GLES3.functional.shaders.random.texture.fragment#18
-dEQP-GLES3.functional.shaders.random.texture.fragment#19
-dEQP-GLES3.functional.shaders.random.texture.fragment#20
-dEQP-GLES3.functional.shaders.random.texture.fragment#21
-dEQP-GLES3.functional.shaders.random.texture.fragment#22
-dEQP-GLES3.functional.shaders.random.texture.fragment#23
-dEQP-GLES3.functional.shaders.random.texture.fragment#24
-dEQP-GLES3.functional.shaders.random.texture.fragment#25
-dEQP-GLES3.functional.shaders.random.texture.fragment#26
-dEQP-GLES3.functional.shaders.random.texture.fragment#27
-dEQP-GLES3.functional.shaders.random.texture.fragment#28
-dEQP-GLES3.functional.shaders.random.texture.fragment#29
-dEQP-GLES3.functional.shaders.random.texture.fragment#30
-dEQP-GLES3.functional.shaders.random.texture.fragment#31
-dEQP-GLES3.functional.shaders.random.texture.fragment#32
-dEQP-GLES3.functional.shaders.random.texture.fragment#33
-dEQP-GLES3.functional.shaders.random.texture.fragment#34
-dEQP-GLES3.functional.shaders.random.texture.fragment#35
-dEQP-GLES3.functional.shaders.random.texture.fragment#36
-dEQP-GLES3.functional.shaders.random.texture.fragment#37
-dEQP-GLES3.functional.shaders.random.texture.fragment#38
-dEQP-GLES3.functional.shaders.random.texture.fragment#39
-dEQP-GLES3.functional.shaders.random.texture.fragment#40
-dEQP-GLES3.functional.shaders.random.texture.fragment#41
-dEQP-GLES3.functional.shaders.random.texture.fragment#42
-dEQP-GLES3.functional.shaders.random.texture.fragment#43
-dEQP-GLES3.functional.shaders.random.texture.fragment#44
-dEQP-GLES3.functional.shaders.random.texture.fragment#45
-dEQP-GLES3.functional.shaders.random.texture.fragment#46
-dEQP-GLES3.functional.shaders.random.texture.fragment#47
-dEQP-GLES3.functional.shaders.random.texture.fragment#48
-dEQP-GLES3.functional.shaders.random.texture.fragment#49
-dEQP-GLES3.functional.shaders.random.texture.fragment#50
-dEQP-GLES3.functional.shaders.random.texture.fragment#51
-dEQP-GLES3.functional.shaders.random.texture.fragment#52
-dEQP-GLES3.functional.shaders.random.texture.fragment#53
-dEQP-GLES3.functional.shaders.random.texture.fragment#54
-dEQP-GLES3.functional.shaders.random.texture.fragment#55
-dEQP-GLES3.functional.shaders.random.texture.fragment#56
-dEQP-GLES3.functional.shaders.random.texture.fragment#57
-dEQP-GLES3.functional.shaders.random.texture.fragment#58
-dEQP-GLES3.functional.shaders.random.texture.fragment#59
-dEQP-GLES3.functional.shaders.random.texture.fragment#60
-dEQP-GLES3.functional.shaders.random.texture.fragment#61
-dEQP-GLES3.functional.shaders.random.texture.fragment#62
-dEQP-GLES3.functional.shaders.random.texture.fragment#63
-dEQP-GLES3.functional.shaders.random.texture.fragment#64
-dEQP-GLES3.functional.shaders.random.texture.fragment#65
-dEQP-GLES3.functional.shaders.random.texture.fragment#66
-dEQP-GLES3.functional.shaders.random.texture.fragment#67
-dEQP-GLES3.functional.shaders.random.texture.fragment#68
-dEQP-GLES3.functional.shaders.random.texture.fragment#69
-dEQP-GLES3.functional.shaders.random.texture.fragment#70
-dEQP-GLES3.functional.shaders.random.texture.fragment#71
-dEQP-GLES3.functional.shaders.random.texture.fragment#73
-dEQP-GLES3.functional.shaders.random.texture.fragment#74
-dEQP-GLES3.functional.shaders.random.texture.fragment#75
-dEQP-GLES3.functional.shaders.random.texture.fragment#76
-dEQP-GLES3.functional.shaders.random.texture.fragment#77
-dEQP-GLES3.functional.shaders.random.texture.fragment#78
-dEQP-GLES3.functional.shaders.random.texture.fragment#79
-dEQP-GLES3.functional.shaders.random.texture.fragment#80
-dEQP-GLES3.functional.shaders.random.texture.fragment#81
-dEQP-GLES3.functional.shaders.random.texture.fragment#82
-dEQP-GLES3.functional.shaders.random.texture.fragment#83
-dEQP-GLES3.functional.shaders.random.texture.fragment#84
-dEQP-GLES3.functional.shaders.random.texture.fragment#85
-dEQP-GLES3.functional.shaders.random.texture.fragment#86
-dEQP-GLES3.functional.shaders.random.texture.fragment#87
-dEQP-GLES3.functional.shaders.random.texture.fragment#88
-dEQP-GLES3.functional.shaders.random.texture.fragment#89
-dEQP-GLES3.functional.shaders.random.texture.fragment#90
-dEQP-GLES3.functional.shaders.random.texture.fragment#91
-dEQP-GLES3.functional.shaders.random.texture.fragment#92
-dEQP-GLES3.functional.shaders.random.texture.fragment#93
-dEQP-GLES3.functional.shaders.random.texture.fragment#94
-dEQP-GLES3.functional.shaders.random.texture.fragment#95
-dEQP-GLES3.functional.shaders.random.texture.fragment#96
-dEQP-GLES3.functional.shaders.random.texture.fragment#97
-dEQP-GLES3.functional.shaders.random.texture.fragment#98
-dEQP-GLES3.functional.shaders.random.texture.fragment#99
-dEQP-GLES3.functional.shaders.random.texture.fragment#100
-dEQP-GLES3.functional.shaders.random.texture.fragment#101
-dEQP-GLES3.functional.shaders.random.texture.fragment#102
-dEQP-GLES3.functional.shaders.random.texture.fragment#103
-dEQP-GLES3.functional.shaders.random.texture.fragment#104
-dEQP-GLES3.functional.shaders.random.texture.fragment#105
-dEQP-GLES3.functional.shaders.random.texture.fragment#106
-dEQP-GLES3.functional.shaders.random.texture.fragment#107
-dEQP-GLES3.functional.shaders.random.texture.fragment#108
-dEQP-GLES3.functional.shaders.random.texture.fragment#109
-dEQP-GLES3.functional.shaders.random.texture.fragment#110
-dEQP-GLES3.functional.shaders.random.texture.fragment#111
-dEQP-GLES3.functional.shaders.random.texture.fragment#112
-dEQP-GLES3.functional.shaders.random.texture.fragment#113
-dEQP-GLES3.functional.shaders.random.texture.fragment#114
-dEQP-GLES3.functional.shaders.random.texture.fragment#115
-dEQP-GLES3.functional.shaders.random.texture.fragment#116
-dEQP-GLES3.functional.shaders.random.texture.fragment#117
-dEQP-GLES3.functional.shaders.random.texture.fragment#118
-dEQP-GLES3.functional.shaders.random.texture.fragment#119
-dEQP-GLES3.functional.shaders.random.texture.fragment#120
-dEQP-GLES3.functional.shaders.random.texture.fragment#121
-dEQP-GLES3.functional.shaders.random.texture.fragment#122
-dEQP-GLES3.functional.shaders.random.texture.fragment#123
-dEQP-GLES3.functional.shaders.random.texture.fragment#124
-dEQP-GLES3.functional.shaders.random.texture.fragment#125
-dEQP-GLES3.functional.shaders.random.texture.fragment#126
-dEQP-GLES3.functional.shaders.random.texture.fragment#127
-dEQP-GLES3.functional.shaders.random.texture.fragment#128
-dEQP-GLES3.functional.shaders.random.texture.fragment#129
-dEQP-GLES3.functional.shaders.random.texture.fragment#130
-dEQP-GLES3.functional.shaders.random.texture.fragment#131
-dEQP-GLES3.functional.shaders.random.texture.fragment#132
-dEQP-GLES3.functional.shaders.random.texture.fragment#133
-dEQP-GLES3.functional.shaders.random.texture.fragment#134
-dEQP-GLES3.functional.shaders.random.texture.fragment#135
-dEQP-GLES3.functional.shaders.random.texture.fragment#136
-dEQP-GLES3.functional.shaders.random.texture.fragment#137
-dEQP-GLES3.functional.shaders.random.texture.fragment#138
-dEQP-GLES3.functional.shaders.random.texture.fragment#139
-dEQP-GLES3.functional.shaders.random.texture.fragment#140
-dEQP-GLES3.functional.shaders.random.texture.fragment#141
-dEQP-GLES3.functional.shaders.random.texture.fragment#142
-dEQP-GLES3.functional.shaders.random.texture.fragment#143
-dEQP-GLES3.functional.shaders.random.texture.fragment#144
-dEQP-GLES3.functional.shaders.random.texture.fragment#145
-dEQP-GLES3.functional.shaders.random.texture.fragment#146
-dEQP-GLES3.functional.shaders.random.texture.fragment#147
-dEQP-GLES3.functional.shaders.random.texture.fragment#148
-dEQP-GLES3.functional.shaders.random.texture.fragment#149
-dEQP-GLES3.functional.shaders.random.all_features.vertex#0
-dEQP-GLES3.functional.shaders.random.all_features.vertex#3
-dEQP-GLES3.functional.shaders.random.all_features.vertex#8
-dEQP-GLES3.functional.shaders.random.all_features.vertex#11
-dEQP-GLES3.functional.shaders.random.all_features.vertex#12
-dEQP-GLES3.functional.shaders.random.all_features.vertex#14
-dEQP-GLES3.functional.shaders.random.all_features.vertex#15
-dEQP-GLES3.functional.shaders.random.all_features.vertex#19
-dEQP-GLES3.functional.shaders.random.all_features.vertex#20
-dEQP-GLES3.functional.shaders.random.all_features.vertex#24
-dEQP-GLES3.functional.shaders.random.all_features.vertex#25
-dEQP-GLES3.functional.shaders.random.all_features.vertex#27
-dEQP-GLES3.functional.shaders.random.all_features.vertex#28
-dEQP-GLES3.functional.shaders.random.all_features.vertex#31
-dEQP-GLES3.functional.shaders.random.all_features.vertex#33
-dEQP-GLES3.functional.shaders.random.all_features.vertex#36
-dEQP-GLES3.functional.shaders.random.all_features.vertex#43
-dEQP-GLES3.functional.shaders.random.all_features.vertex#51
-dEQP-GLES3.functional.shaders.random.all_features.vertex#52
-dEQP-GLES3.functional.shaders.random.all_features.vertex#57
-dEQP-GLES3.functional.shaders.random.all_features.vertex#59
-dEQP-GLES3.functional.shaders.random.all_features.vertex#60
-dEQP-GLES3.functional.shaders.random.all_features.vertex#63
-dEQP-GLES3.functional.shaders.random.all_features.vertex#64
-dEQP-GLES3.functional.shaders.random.all_features.vertex#67
-dEQP-GLES3.functional.shaders.random.all_features.vertex#68
-dEQP-GLES3.functional.shaders.random.all_features.vertex#75
-dEQP-GLES3.functional.shaders.random.all_features.vertex#82
-dEQP-GLES3.functional.shaders.random.all_features.vertex#83
-dEQP-GLES3.functional.shaders.random.all_features.vertex#86
-dEQP-GLES3.functional.shaders.random.all_features.vertex#89
-dEQP-GLES3.functional.shaders.random.all_features.vertex#91
-dEQP-GLES3.functional.shaders.random.all_features.vertex#95
-dEQP-GLES3.functional.shaders.random.all_features.vertex#97
-dEQP-GLES3.functional.shaders.random.all_features.vertex#99
-dEQP-GLES3.functional.shaders.random.all_features.fragment#2
-dEQP-GLES3.functional.shaders.random.all_features.fragment#3
-dEQP-GLES3.functional.shaders.random.all_features.fragment#4
-dEQP-GLES3.functional.shaders.random.all_features.fragment#8
-dEQP-GLES3.functional.shaders.random.all_features.fragment#11
-dEQP-GLES3.functional.shaders.random.all_features.fragment#15
-dEQP-GLES3.functional.shaders.random.all_features.fragment#17
-dEQP-GLES3.functional.shaders.random.all_features.fragment#19
-dEQP-GLES3.functional.shaders.random.all_features.fragment#23
-dEQP-GLES3.functional.shaders.random.all_features.fragment#24
-dEQP-GLES3.functional.shaders.random.all_features.fragment#27
-dEQP-GLES3.functional.shaders.random.all_features.fragment#28
-dEQP-GLES3.functional.shaders.random.all_features.fragment#29
-dEQP-GLES3.functional.shaders.random.all_features.fragment#31
-dEQP-GLES3.functional.shaders.random.all_features.fragment#33
-dEQP-GLES3.functional.shaders.random.all_features.fragment#36
-dEQP-GLES3.functional.shaders.random.all_features.fragment#42
-dEQP-GLES3.functional.shaders.random.all_features.fragment#43
-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#57
-dEQP-GLES3.functional.shaders.random.all_features.fragment#59
-dEQP-GLES3.functional.shaders.random.all_features.fragment#60
-dEQP-GLES3.functional.shaders.random.all_features.fragment#67
-dEQP-GLES3.functional.shaders.random.all_features.fragment#68
-dEQP-GLES3.functional.shaders.random.all_features.fragment#74
-dEQP-GLES3.functional.shaders.random.all_features.fragment#75
-dEQP-GLES3.functional.shaders.random.all_features.fragment#83
-dEQP-GLES3.functional.shaders.random.all_features.fragment#84
-dEQP-GLES3.functional.shaders.random.all_features.fragment#85
-dEQP-GLES3.functional.shaders.random.all_features.fragment#91
-dEQP-GLES3.functional.shaders.random.all_features.fragment#97
-dEQP-GLES3.functional.shaders.random.all_features.fragment#98
-dEQP-GLES3.functional.shaders.random.all_features.fragment#99
-dEQP-GLES3.functional.texture.format.unsized#alpha_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#alpha_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#alpha_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#alpha_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#alpha_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#alpha_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#alpha_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#alpha_3d_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_3d_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#luminance_alpha_3d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_3d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgb_unsigned_byte_3d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_3d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_3d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_2d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_2d_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_cube_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_cube_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_2d_array_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_2d_array_npot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_3d_pot
-dEQP-GLES3.functional.texture.format.unsized#rgba_unsigned_byte_3d_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#srgb8_alpha8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#srgb8_alpha8_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb10_a2_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb10_a2_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb10_a2ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb10_a2ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba4_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba4_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb5_a1_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb5_a1_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgba8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb565_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb565_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r11f_g11f_b10f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r11f_g11f_b10f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#srgb8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#srgb8_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb9_e5_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rgb9_e5_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d#rg8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r8_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d#r8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d#r8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d#depth_component32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d#depth_component32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d#depth_component24_pot
-dEQP-GLES3.functional.texture.format.sized.2d#depth_component24_npot
-dEQP-GLES3.functional.texture.format.sized.2d#depth_component16_pot
-dEQP-GLES3.functional.texture.format.sized.2d#depth_component16_npot
-dEQP-GLES3.functional.texture.format.sized.2d#depth32f_stencil8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#depth32f_stencil8_npot
-dEQP-GLES3.functional.texture.format.sized.2d#depth24_stencil8_pot
-dEQP-GLES3.functional.texture.format.sized.2d#depth24_stencil8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba32f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba32f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba32i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba32i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba32ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba32ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba16f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba16f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba16i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba16i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba16ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba16ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#srgb8_alpha8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#srgb8_alpha8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb10_a2_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb10_a2_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb10_a2ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb10_a2ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba4_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba4_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb5_a1_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb5_a1_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgba8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb565_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb565_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r11f_g11f_b10f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r11f_g11f_b10f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb32f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb32f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb32i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb32i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb32ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb32ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb16f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb16f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb16i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb16i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb16ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb16ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb8ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#srgb8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#srgb8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb9_e5_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rgb9_e5_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg32f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg32f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg32i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg32i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg32ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg32ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg16f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg16f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg16i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg16i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg16ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg16ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.cube#rg8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r32f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r32f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r32i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r32i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r32ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r32ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r16f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r16f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r16i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r16i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r16ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r16ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r8i_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r8i_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r8ui_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r8ui_npot
-dEQP-GLES3.functional.texture.format.sized.cube#r8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.cube#r8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.cube#depth_component32f_pot
-dEQP-GLES3.functional.texture.format.sized.cube#depth_component32f_npot
-dEQP-GLES3.functional.texture.format.sized.cube#depth_component24_pot
-dEQP-GLES3.functional.texture.format.sized.cube#depth_component24_npot
-dEQP-GLES3.functional.texture.format.sized.cube#depth_component16_pot
-dEQP-GLES3.functional.texture.format.sized.cube#depth_component16_npot
-dEQP-GLES3.functional.texture.format.sized.cube#depth32f_stencil8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#depth32f_stencil8_npot
-dEQP-GLES3.functional.texture.format.sized.cube#depth24_stencil8_pot
-dEQP-GLES3.functional.texture.format.sized.cube#depth24_stencil8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#srgb8_alpha8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#srgb8_alpha8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb10_a2_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb10_a2_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb10_a2ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb10_a2ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba4_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba4_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb5_a1_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb5_a1_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgba8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb565_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb565_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r11f_g11f_b10f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r11f_g11f_b10f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#srgb8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#srgb8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb9_e5_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rgb9_e5_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#rg8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r32i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r32i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r32ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r32ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r16f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r16f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r16i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r16i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r16ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r16ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8i_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8i_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8ui_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8ui_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#r8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth_component32f_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth_component32f_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth_component24_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth_component24_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth_component16_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth_component16_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth32f_stencil8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth32f_stencil8_npot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth24_stencil8_pot
-dEQP-GLES3.functional.texture.format.sized.2d_array#depth24_stencil8_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba32f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba32f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba32i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba32i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba32ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba32ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba16f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba16f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba16i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba16i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba16ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba16ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#srgb8_alpha8_pot
-dEQP-GLES3.functional.texture.format.sized.3d#srgb8_alpha8_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb10_a2_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb10_a2_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb10_a2ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb10_a2ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba4_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba4_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb5_a1_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb5_a1_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgba8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb565_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb565_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r11f_g11f_b10f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r11f_g11f_b10f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb32f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb32f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb32i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb32i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb32ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb32ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb16f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb16f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb16i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb16i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb16ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb16ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb8ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#srgb8_pot
-dEQP-GLES3.functional.texture.format.sized.3d#srgb8_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb9_e5_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rgb9_e5_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg32f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg32f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg32i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg32i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg32ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg32ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg16f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg16f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg16i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg16i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg16ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg16ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.3d#rg8_snorm_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r32f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r32f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r32i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r32i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r32ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r32ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r16f_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r16f_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r16i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r16i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r16ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r16ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r8_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r8_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r8i_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r8i_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r8ui_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r8ui_npot
-dEQP-GLES3.functional.texture.format.sized.3d#r8_snorm_pot
-dEQP-GLES3.functional.texture.format.sized.3d#r8_snorm_npot
-dEQP-GLES3.functional.texture.format.compressed#etc1_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#etc1_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#etc1_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#etc1_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_r11_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_r11_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_r11_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_r11_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_r11_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_r11_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_r11_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_r11_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_rg11_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_rg11_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_rg11_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_rg11_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_rg11_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_rg11_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_rg11_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#eac_signed_rg11_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_punchthrough_alpha1_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_punchthrough_alpha1_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_punchthrough_alpha1_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_rgb8_punchthrough_alpha1_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_punchthrough_alpha1_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_punchthrough_alpha1_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_punchthrough_alpha1_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_srgb8_punchthrough_alpha1_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_rgba8_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_rgba8_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_rgba8_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_rgba8_cube_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_srgb8_alpha8_2d_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_srgb8_alpha8_cube_pot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_srgb8_alpha8_2d_npot
-dEQP-GLES3.functional.texture.format.compressed#etc2_eac_srgb8_alpha8_cube_npot
-dEQP-GLES3.functional.texture.size.2d#64x64_l8
-dEQP-GLES3.functional.texture.size.2d#64x64_l8_mipmap
-dEQP-GLES3.functional.texture.size.2d#64x64_rgba4444
-dEQP-GLES3.functional.texture.size.2d#64x64_rgba4444_mipmap
-dEQP-GLES3.functional.texture.size.2d#64x64_rgb888
-dEQP-GLES3.functional.texture.size.2d#64x64_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.2d#64x64_rgba8888
-dEQP-GLES3.functional.texture.size.2d#64x64_rgba8888_mipmap
-dEQP-GLES3.functional.texture.size.2d#65x63_l8
-dEQP-GLES3.functional.texture.size.2d#65x63_rgba4444
-dEQP-GLES3.functional.texture.size.2d#65x63_rgb888
-dEQP-GLES3.functional.texture.size.2d#65x63_rgba8888
-dEQP-GLES3.functional.texture.size.2d#512x512_l8
-dEQP-GLES3.functional.texture.size.2d#512x512_l8_mipmap
-dEQP-GLES3.functional.texture.size.2d#512x512_rgba4444
-dEQP-GLES3.functional.texture.size.2d#512x512_rgba4444_mipmap
-dEQP-GLES3.functional.texture.size.2d#512x512_rgb888
-dEQP-GLES3.functional.texture.size.2d#512x512_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.2d#512x512_rgba8888
-dEQP-GLES3.functional.texture.size.2d#512x512_rgba8888_mipmap
-dEQP-GLES3.functional.texture.size.2d#1024x1024_l8
-dEQP-GLES3.functional.texture.size.2d#1024x1024_l8_mipmap
-dEQP-GLES3.functional.texture.size.2d#1024x1024_rgba4444
-dEQP-GLES3.functional.texture.size.2d#1024x1024_rgba4444_mipmap
-dEQP-GLES3.functional.texture.size.2d#1024x1024_rgb888
-dEQP-GLES3.functional.texture.size.2d#1024x1024_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.2d#1024x1024_rgba8888
-dEQP-GLES3.functional.texture.size.2d#1024x1024_rgba8888_mipmap
-dEQP-GLES3.functional.texture.size.2d#2048x2048_l8
-dEQP-GLES3.functional.texture.size.2d#2048x2048_l8_mipmap
-dEQP-GLES3.functional.texture.size.2d#2048x2048_rgba4444
-dEQP-GLES3.functional.texture.size.2d#2048x2048_rgba4444_mipmap
-dEQP-GLES3.functional.texture.size.2d#2048x2048_rgb888
-dEQP-GLES3.functional.texture.size.2d#2048x2048_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.2d#2048x2048_rgba8888
-dEQP-GLES3.functional.texture.size.2d#2048x2048_rgba8888_mipmap
-dEQP-GLES3.functional.texture.size.cube#15x15_l8
-dEQP-GLES3.functional.texture.size.cube#15x15_rgba4444
-dEQP-GLES3.functional.texture.size.cube#15x15_rgb888
-dEQP-GLES3.functional.texture.size.cube#15x15_rgba8888
-dEQP-GLES3.functional.texture.size.cube#16x16_l8
-dEQP-GLES3.functional.texture.size.cube#16x16_l8_mipmap
-dEQP-GLES3.functional.texture.size.cube#16x16_rgba4444
-dEQP-GLES3.functional.texture.size.cube#16x16_rgba4444_mipmap
-dEQP-GLES3.functional.texture.size.cube#16x16_rgb888
-dEQP-GLES3.functional.texture.size.cube#16x16_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.cube#16x16_rgba8888
-dEQP-GLES3.functional.texture.size.cube#16x16_rgba8888_mipmap
-dEQP-GLES3.functional.texture.size.cube#64x64_l8
-dEQP-GLES3.functional.texture.size.cube#64x64_l8_mipmap
-dEQP-GLES3.functional.texture.size.cube#64x64_rgba4444
-dEQP-GLES3.functional.texture.size.cube#64x64_rgba4444_mipmap
-dEQP-GLES3.functional.texture.size.cube#64x64_rgb888
-dEQP-GLES3.functional.texture.size.cube#64x64_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.cube#64x64_rgba8888
-dEQP-GLES3.functional.texture.size.cube#64x64_rgba8888_mipmap
-dEQP-GLES3.functional.texture.size.cube#128x128_l8
-dEQP-GLES3.functional.texture.size.cube#128x128_l8_mipmap
-dEQP-GLES3.functional.texture.size.cube#128x128_rgba4444
-dEQP-GLES3.functional.texture.size.cube#128x128_rgba4444_mipmap
-dEQP-GLES3.functional.texture.size.cube#128x128_rgb888
-dEQP-GLES3.functional.texture.size.cube#128x128_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.cube#128x128_rgba8888
-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_mipmap
-dEQP-GLES3.functional.texture.size.cube#256x256_rgb888
-dEQP-GLES3.functional.texture.size.cube#256x256_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.cube#256x256_rgba8888
-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_mipmap
-dEQP-GLES3.functional.texture.size.cube#512x512_rgb888
-dEQP-GLES3.functional.texture.size.cube#512x512_rgb888_mipmap
-dEQP-GLES3.functional.texture.size.cube#512x512_rgba8888
-dEQP-GLES3.functional.texture.size.cube#512x512_rgba8888_mipmap
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.rgba8#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc1#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_r11#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_r11#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_rg11#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.eac_signed_rg11#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_rgb8_punchthrough_alpha1#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_srgb8_punchthrough_alpha1#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_rgba8#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_clamp_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_clamp_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_repeat_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_repeat_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_mirror_nearest_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_mirror_linear_pot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#clamp_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#repeat_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_clamp_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_clamp_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_repeat_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_repeat_linear_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_mirror_nearest_npot
-dEQP-GLES3.functional.texture.wrap.etc2_eac_srgb8_alpha8#mirror_mirror_linear_npot
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_4x4_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x4_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_5x5_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x5_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_6x6_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x5_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x6_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x5_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x6_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x8_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_10x10_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x10_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_clamp_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_clamp_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_repeat_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_repeat_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_mirror_nearest_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_mirror_linear_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#clamp_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#repeat_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_clamp_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_clamp_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_repeat_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_repeat_linear_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_mirror_nearest_not_divisible
-dEQP-GLES3.functional.texture.wrap.astc_12x12_srgb#mirror_mirror_linear_not_divisible
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba16f_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba16f_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba16f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba16f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba16f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba16f_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#r11f_g11f_b10f_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#r11f_g11f_b10f_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#r11f_g11f_b10f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#r11f_g11f_b10f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#r11f_g11f_b10f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#r11f_g11f_b10f_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb9_e5_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb9_e5_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb9_e5_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb9_e5_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb9_e5_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb9_e5_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_snorm_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_snorm_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_snorm_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_snorm_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_snorm_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba8_snorm_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb565_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb565_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb565_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb565_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb565_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb565_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba4_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba4_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba4_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba4_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba4_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgba4_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb5_a1_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb5_a1_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb5_a1_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb5_a1_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb5_a1_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb5_a1_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#srgb8_alpha8_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#srgb8_alpha8_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#srgb8_alpha8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#srgb8_alpha8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#srgb8_alpha8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#srgb8_alpha8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb10_a2_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb10_a2_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb10_a2_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb10_a2_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb10_a2_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#rgb10_a2_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#etc1_rgb8_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#etc1_rgb8_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#etc1_rgb8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#etc1_rgb8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.formats#etc1_rgb8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.formats#etc1_rgb8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#4x8_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#4x8_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#4x8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#4x8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#4x8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#4x8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#32x64_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#32x64_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#32x64_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#32x64_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#32x64_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#32x64_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#128x128_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#128x128_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#128x128_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#128x128_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#128x128_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#128x128_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#3x7_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#3x7_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#3x7_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#3x7_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#3x7_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#3x7_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#31x55_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#31x55_linear
-dEQP-GLES3.functional.texture.filtering.2d.sizes#127x99_nearest
-dEQP-GLES3.functional.texture.filtering.2d.sizes#127x99_linear
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.2d.combinations#nearest_nearest_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_linear_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba16f_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba16f_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba16f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba16f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba16f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba16f_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#r11f_g11f_b10f_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#r11f_g11f_b10f_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#r11f_g11f_b10f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#r11f_g11f_b10f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#r11f_g11f_b10f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#r11f_g11f_b10f_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb9_e5_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb9_e5_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb9_e5_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb9_e5_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb9_e5_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb9_e5_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_snorm_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_snorm_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_snorm_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_snorm_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_snorm_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba8_snorm_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb565_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb565_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb565_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb565_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb565_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb565_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba4_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba4_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba4_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba4_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba4_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgba4_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb5_a1_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb5_a1_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb5_a1_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb5_a1_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb5_a1_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb5_a1_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#srgb8_alpha8_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#srgb8_alpha8_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#srgb8_alpha8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#srgb8_alpha8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#srgb8_alpha8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#srgb8_alpha8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb10_a2_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb10_a2_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb10_a2_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb10_a2_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb10_a2_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#rgb10_a2_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#etc1_rgb8_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#etc1_rgb8_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#etc1_rgb8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#etc1_rgb8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.formats#etc1_rgb8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.formats#etc1_rgb8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#8x8_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#8x8_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#8x8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#8x8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#8x8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#8x8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#64x64_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#64x64_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#64x64_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#64x64_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#64x64_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#64x64_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#128x128_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#128x128_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#128x128_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#128x128_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#128x128_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#128x128_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#7x7_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#7x7_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#7x7_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#7x7_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#7x7_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#7x7_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.cube.sizes#63x63_nearest
-dEQP-GLES3.functional.texture.filtering.cube.sizes#63x63_linear
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.cube.combinations#nearest_nearest_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.cube.combinations#linear_linear_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.cube.no_edges_visible#nearest
-dEQP-GLES3.functional.texture.filtering.cube.no_edges_visible#linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba16f_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba16f_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba16f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba16f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba16f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba16f_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#r11f_g11f_b10f_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#r11f_g11f_b10f_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#r11f_g11f_b10f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#r11f_g11f_b10f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#r11f_g11f_b10f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#r11f_g11f_b10f_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb9_e5_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb9_e5_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb9_e5_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb9_e5_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb9_e5_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb9_e5_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_snorm_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_snorm_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_snorm_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_snorm_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_snorm_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba8_snorm_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb565_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb565_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb565_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb565_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb565_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb565_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba4_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba4_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba4_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba4_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba4_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgba4_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb5_a1_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb5_a1_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb5_a1_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb5_a1_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb5_a1_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb5_a1_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#srgb8_alpha8_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#srgb8_alpha8_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#srgb8_alpha8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#srgb8_alpha8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#srgb8_alpha8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#srgb8_alpha8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb10_a2_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb10_a2_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb10_a2_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb10_a2_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb10_a2_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.formats#rgb10_a2_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#4x8x8_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#4x8x8_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#4x8x8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#4x8x8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#4x8x8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#4x8x8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#32x64x16_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#32x64x16_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#32x64x16_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#32x64x16_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#32x64x16_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#32x64x16_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#128x32x64_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#128x32x64_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#128x32x64_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#128x32x64_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#128x32x64_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#128x32x64_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#3x7x5_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#3x7x5_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#3x7x5_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#3x7x5_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#3x7x5_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#3x7x5_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#63x63x63_nearest
-dEQP-GLES3.functional.texture.filtering.2d_array.sizes#63x63x63_linear
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_nearest_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_linear_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_linear_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_linear_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba16f_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba16f_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba16f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba16f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba16f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#r11f_g11f_b10f_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#r11f_g11f_b10f_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#r11f_g11f_b10f_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#r11f_g11f_b10f_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#r11f_g11f_b10f_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#r11f_g11f_b10f_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb9_e5_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb9_e5_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb9_e5_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb9_e5_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb9_e5_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb9_e5_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_snorm_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_snorm_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_snorm_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_snorm_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_snorm_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba8_snorm_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb565_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb565_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb565_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb565_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb565_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb565_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba4_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba4_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba4_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba4_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba4_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgba4_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb5_a1_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb5_a1_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb5_a1_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb5_a1_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb5_a1_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb5_a1_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#srgb8_alpha8_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#srgb8_alpha8_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#srgb8_alpha8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#srgb8_alpha8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#srgb8_alpha8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#srgb8_alpha8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb10_a2_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb10_a2_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb10_a2_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb10_a2_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb10_a2_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.formats#rgb10_a2_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#4x8x8_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#4x8x8_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#4x8x8_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#4x8x8_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#4x8x8_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#4x8x8_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#32x64x16_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#32x64x16_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#32x64x16_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#32x64x16_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#32x64x16_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#32x64x16_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#128x32x64_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#128x32x64_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#128x32x64_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#128x32x64_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#128x32x64_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#128x32x64_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#3x7x5_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#3x7x5_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#3x7x5_nearest_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#3x7x5_linear_mipmap_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#3x7x5_nearest_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#3x7x5_linear_mipmap_linear
-dEQP-GLES3.functional.texture.filtering.3d.sizes#63x63x63_nearest
-dEQP-GLES3.functional.texture.filtering.3d.sizes#63x63x63_linear
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_clamp_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_repeat_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_nearest_mirror_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#nearest_linear_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_nearest_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_clamp_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_repeat_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_clamp_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_repeat_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_mirror_repeat
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_linear_mirror_mirror_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_clamp_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_repeat_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_nearest_mirror_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_clamp_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_repeat_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_nearest_mirror_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_clamp_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_repeat_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#nearest_linear_mirror_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_clamp_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_repeat_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.2d.basic#linear_linear_mirror_non_square
-dEQP-GLES3.functional.texture.mipmap.2d.affine#nearest_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.affine#nearest_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.affine#nearest_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.affine#linear_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.affine#linear_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.affine#linear_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.affine#nearest_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.affine#nearest_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.affine#nearest_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.affine#linear_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.affine#linear_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.affine#linear_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.bias#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.2d.bias#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.2d.bias#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.2d.bias#linear_linear
-dEQP-GLES3.functional.texture.mipmap.2d.generate#a8_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#a8_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#a8_npot_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#a8_npot_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#a8_non_square_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#a8_non_square_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#l8_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#l8_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#l8_npot_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#l8_npot_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#l8_non_square_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#l8_non_square_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb565_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb565_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb565_npot_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb565_npot_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb565_non_square_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb565_non_square_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb888_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb888_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb888_npot_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb888_npot_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb888_non_square_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgb888_non_square_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba4444_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba4444_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba4444_npot_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba4444_npot_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba4444_non_square_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba4444_non_square_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba5551_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba5551_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba5551_npot_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba5551_npot_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba5551_non_square_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba5551_non_square_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba8888_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba8888_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba8888_npot_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba8888_npot_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba8888_non_square_fastest
-dEQP-GLES3.functional.texture.mipmap.2d.generate#rgba8888_non_square_nicest
-dEQP-GLES3.functional.texture.mipmap.2d.min_lod#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.2d.min_lod#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.2d.min_lod#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.2d.min_lod#linear_linear
-dEQP-GLES3.functional.texture.mipmap.2d.max_lod#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.2d.max_lod#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.2d.max_lod#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.2d.max_lod#linear_linear
-dEQP-GLES3.functional.texture.mipmap.cube.basic#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.cube.basic#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.cube.basic#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.cube.basic#linear_linear
-dEQP-GLES3.functional.texture.mipmap.cube.projected#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.cube.bias#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.cube.bias#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.cube.generate#a8_fastest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#a8_nicest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#l8_fastest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#l8_nicest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgb565_fastest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgb565_nicest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgb888_fastest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgb888_nicest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgba4444_fastest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgba4444_nicest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgba5551_fastest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgba5551_nicest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgba8888_fastest
-dEQP-GLES3.functional.texture.mipmap.cube.generate#rgba8888_nicest
-dEQP-GLES3.functional.texture.mipmap.cube.min_lod#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.cube.min_lod#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.cube.min_lod#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.cube.min_lod#linear_linear
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_nearest_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_nearest_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_nearest_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_nearest_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_nearest_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_nearest_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_linear_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_linear_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.basic#nearest_linear_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_linear_clamp_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_linear_repeat_npot
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.basic#linear_linear_mirror_npot
-dEQP-GLES3.functional.texture.mipmap.3d.affine#nearest_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.affine#nearest_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.affine#nearest_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.affine#linear_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.affine#linear_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.affine#linear_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.affine#nearest_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.affine#nearest_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.affine#nearest_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.affine#linear_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.affine#linear_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.affine#linear_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.projected#nearest_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.projected#nearest_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.projected#nearest_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.projected#linear_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.projected#linear_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.projected#linear_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.projected#nearest_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.projected#nearest_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.projected#nearest_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.projected#linear_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.3d.projected#linear_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.3d.projected#linear_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.3d.bias#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.3d.bias#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.3d.bias#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.3d.bias#linear_linear
-dEQP-GLES3.functional.texture.mipmap.3d.min_lod#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.3d.min_lod#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.3d.min_lod#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.3d.min_lod#linear_linear
-dEQP-GLES3.functional.texture.mipmap.3d.max_lod#nearest_nearest
-dEQP-GLES3.functional.texture.mipmap.3d.max_lod#linear_nearest
-dEQP-GLES3.functional.texture.mipmap.3d.max_lod#nearest_linear
-dEQP-GLES3.functional.texture.mipmap.3d.max_lod#linear_linear
-dEQP-GLES3.functional.texture.swizzle.single_channel#r_green
-dEQP-GLES3.functional.texture.swizzle.single_channel#r_blue
-dEQP-GLES3.functional.texture.swizzle.single_channel#r_alpha
-dEQP-GLES3.functional.texture.swizzle.single_channel#r_zero
-dEQP-GLES3.functional.texture.swizzle.single_channel#r_one
-dEQP-GLES3.functional.texture.swizzle.single_channel#g_red
-dEQP-GLES3.functional.texture.swizzle.single_channel#g_blue
-dEQP-GLES3.functional.texture.swizzle.single_channel#g_alpha
-dEQP-GLES3.functional.texture.swizzle.single_channel#g_zero
-dEQP-GLES3.functional.texture.swizzle.single_channel#g_one
-dEQP-GLES3.functional.texture.swizzle.single_channel#b_red
-dEQP-GLES3.functional.texture.swizzle.single_channel#b_green
-dEQP-GLES3.functional.texture.swizzle.single_channel#b_alpha
-dEQP-GLES3.functional.texture.swizzle.single_channel#b_zero
-dEQP-GLES3.functional.texture.swizzle.single_channel#b_one
-dEQP-GLES3.functional.texture.swizzle.single_channel#a_red
-dEQP-GLES3.functional.texture.swizzle.single_channel#a_green
-dEQP-GLES3.functional.texture.swizzle.single_channel#a_blue
-dEQP-GLES3.functional.texture.swizzle.single_channel#a_zero
-dEQP-GLES3.functional.texture.swizzle.single_channel#a_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_all_red
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_all_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_all_blue
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_all_alpha
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_all_zero
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_all_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_bgra
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_abgr
-dEQP-GLES3.functional.texture.swizzle.multi_channel#alpha_one_one_red_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_all_red
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_all_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_all_blue
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_all_alpha
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_all_zero
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_all_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_bgra
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_abgr
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_one_one_red_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_all_red
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_all_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_all_blue
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_all_alpha
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_all_zero
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_all_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_bgra
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_abgr
-dEQP-GLES3.functional.texture.swizzle.multi_channel#luminance_alpha_one_one_red_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_all_red
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_all_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_all_blue
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_all_alpha
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_all_zero
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_all_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_bgra
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_abgr
-dEQP-GLES3.functional.texture.swizzle.multi_channel#red_one_one_red_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_all_red
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_all_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_all_blue
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_all_alpha
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_all_zero
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_all_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_bgra
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_abgr
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rg_one_one_red_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_all_red
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_all_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_all_blue
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_all_alpha
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_all_zero
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_all_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_bgra
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_abgr
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgb_one_one_red_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_all_red
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_all_green
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_all_blue
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_all_alpha
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_all_zero
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_all_one
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_bgra
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_abgr
-dEQP-GLES3.functional.texture.swizzle.multi_channel#rgba_one_one_red_green
-dEQP-GLES3.functional.texture.shadow.2d.nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.nearest_mipmap_linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d.linear_mipmap_linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.nearest_mipmap_linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.cube.linear_mipmap_linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_nearest#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.nearest_mipmap_linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#less_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#less_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#less_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#greater_or_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#greater_or_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#greater_or_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#less_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#less_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#less_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#greater_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#greater_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#greater_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#not_equal_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#not_equal_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#not_equal_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#always_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#always_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#always_depth24_stencil8
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#never_depth_component16
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#never_depth_component32f
-dEQP-GLES3.functional.texture.shadow.2d_array.linear_mipmap_linear#never_depth24_stencil8
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba32f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba32f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba32i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba32i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba16f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba16f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba16i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba16i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#srgb8_alpha8_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#srgb8_alpha8_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb10_a2_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb10_a2_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb10_a2ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb10_a2ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba4_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba4_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb5_a1_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb5_a1_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgba8_snorm_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb565_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb565_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r11f_g11f_b10f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r11f_g11f_b10f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb32f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb32f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb32i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb32i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb16f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb16f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb16i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb16i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8_snorm_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#srgb8_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#srgb8_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb9_e5_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rgb9_e5_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg32f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg32f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg32i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg32i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg16f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg16f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg16i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg16i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#rg8_snorm_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r32f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r32f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r32i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r32i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r16f_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r16f_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r16i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r16i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8i_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8i_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_teximage2d#r8_snorm_cube
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_0
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_1
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_2
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_3
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_4
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_5
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_6
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_7
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_8
-dEQP-GLES3.functional.texture.specification.random_teximage2d#2d_9
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_0
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_1
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_2
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_3
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_4
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_5
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_6
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_7
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_8
-dEQP-GLES3.functional.texture.specification.random_teximage2d#cube_9
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_r8_4_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_r8_63_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_r8_63_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_r8_63_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_r8_63_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba4_51_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba4_51_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba4_51_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba4_51_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgb8_39_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgb8_39_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgb8_39_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgb8_39_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba8_47_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba8_47_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba8_47_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#2d_rgba8_47_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_r8_4_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_r8_63_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_r8_63_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_r8_63_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_r8_63_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba4_51_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba4_51_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba4_51_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba4_51_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgb8_39_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgb8_39_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgb8_39_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgb8_39_8
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba8_47_1
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba8_47_2
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba8_47_4
-dEQP-GLES3.functional.texture.specification.teximage2d_align#cube_rgba8_47_8
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgb8_alignment
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgb8_row_length
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgb8_skip_rows
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgb8_skip_pixels
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#r8_complex1
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#r8_complex2
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#r8_complex3
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#r8_complex4
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgba8_complex1
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgba8_complex2
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgba8_complex3
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgba8_complex4
-dEQP-GLES3.functional.texture.specification.teximage2d_unpack_params#rgba32f_complex
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba32f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba32f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba32i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba32i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba32ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba32ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba16f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba16f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba16i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba16i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba16ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba16ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#srgb8_alpha8_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#srgb8_alpha8_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb10_a2_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb10_a2_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb10_a2ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb10_a2ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba4_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba4_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb5_a1_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb5_a1_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8_snorm_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgba8_snorm_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb565_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb565_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r11f_g11f_b10f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r11f_g11f_b10f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb32f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb32f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb32i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb32i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb32ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb32ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb16f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb16f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb16i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb16i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb16ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb16ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_snorm_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_snorm_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#srgb8_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#srgb8_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb9_e5_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb9_e5_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg32f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg32f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg32i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg32i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg32ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg32ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg16f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg16f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg16i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg16i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg16ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg16ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8_snorm_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rg8_snorm_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r32f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r32f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r32i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r32i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r32ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r32ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r16f_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r16f_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r16i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r16i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r16ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r16ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8i_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8i_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8ui_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8ui_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8_snorm_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#r8_snorm_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_offset_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_offset_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_alignment_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_alignment_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_row_length_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_row_length_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_skip_rows_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_skip_rows_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_skip_pixels_2d
-dEQP-GLES3.functional.texture.specification.teximage2d_pbo#rgb8_skip_pixels_cube
-dEQP-GLES3.functional.texture.specification.teximage2d_depth#depth_component32f
-dEQP-GLES3.functional.texture.specification.teximage2d_depth#depth_component24
-dEQP-GLES3.functional.texture.specification.teximage2d_depth#depth_component16
-dEQP-GLES3.functional.texture.specification.teximage2d_depth#depth32f_stencil8
-dEQP-GLES3.functional.texture.specification.teximage2d_depth#depth24_stencil8
-dEQP-GLES3.functional.texture.specification.teximage2d_depth_pbo#depth_component32f
-dEQP-GLES3.functional.texture.specification.teximage2d_depth_pbo#depth_component24
-dEQP-GLES3.functional.texture.specification.teximage2d_depth_pbo#depth_component16
-dEQP-GLES3.functional.texture.specification.teximage2d_depth_pbo#depth32f_stencil8
-dEQP-GLES3.functional.texture.specification.teximage2d_depth_pbo#depth24_stencil8
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba32f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba32f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba32i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba32i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba16f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba16f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba16i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba16i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#srgb8_alpha8_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#srgb8_alpha8_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb10_a2_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb10_a2_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb10_a2ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb10_a2ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba4_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba4_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb5_a1_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb5_a1_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgba8_snorm_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb565_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb565_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r11f_g11f_b10f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r11f_g11f_b10f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb32f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb32f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb32i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb32i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb16f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb16f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb16i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb16i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8_snorm_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#srgb8_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#srgb8_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb9_e5_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rgb9_e5_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg32f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg32f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg32i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg32i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg16f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg16f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg16i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg16i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#rg8_snorm_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r32f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r32f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r32i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r32i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r32ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r32ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r16f_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r16f_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r16i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r16i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r16ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r16ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8i_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8i_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8ui_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8ui_cube
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8_snorm_2d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage2d#r8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#alpha_unsigned_byte_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#alpha_unsigned_byte_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#luminance_unsigned_byte_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#luminance_unsigned_byte_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#luminance_alpha_unsigned_byte_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#luminance_alpha_unsigned_byte_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgb_unsigned_short_5_6_5_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgb_unsigned_short_5_6_5_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgb_unsigned_byte_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgb_unsigned_byte_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgba_unsigned_short_4_4_4_4_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgba_unsigned_short_4_4_4_4_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgba_unsigned_short_5_5_5_1_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgba_unsigned_short_5_5_5_1_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgba_unsigned_byte_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_empty_tex#rgba_unsigned_byte_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_1_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_1_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_1_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_1_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_63_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_63_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_63_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_r8_63_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba4_51_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba4_51_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba4_51_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba4_51_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgb8_39_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgb8_39_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgb8_39_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgb8_39_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba8_47_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba8_47_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba8_47_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#2d_rgba8_47_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_1_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_1_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_1_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_1_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_63_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_63_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_63_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_r8_63_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba4_51_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba4_51_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba4_51_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba4_51_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgb8_39_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgb8_39_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgb8_39_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgb8_39_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba8_47_1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba8_47_2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba8_47_4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_align#cube_rgba8_47_8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgb8_alignment
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgb8_row_length
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgb8_skip_rows
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgb8_skip_pixels
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#r8_complex1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#r8_complex2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#r8_complex3
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#r8_complex4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgba8_complex1
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgba8_complex2
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgba8_complex3
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgba8_complex4
-dEQP-GLES3.functional.texture.specification.texsubimage2d_unpack_params#rgba32f_complex
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba32f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba32f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba32i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba32i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba32ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba32ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba16f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba16f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba16i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba16i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba16ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba16ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#srgb8_alpha8_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#srgb8_alpha8_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb10_a2_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb10_a2_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb10_a2ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb10_a2ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba4_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba4_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb5_a1_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb5_a1_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8_snorm_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgba8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb565_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb565_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r11f_g11f_b10f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r11f_g11f_b10f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb32f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb32f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb32i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb32i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb32ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb32ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb16f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb16f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb16i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb16i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb16ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb16ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_snorm_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#srgb8_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#srgb8_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb9_e5_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb9_e5_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg32f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg32f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg32i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg32i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg32ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg32ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg16f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg16f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg16i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg16i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg16ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg16ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8_snorm_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rg8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r32f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r32f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r32i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r32i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r32ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r32ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r16f_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r16f_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r16i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r16i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r16ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r16ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8i_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8i_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8ui_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8ui_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8_snorm_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#r8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_offset_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_offset_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_alignment_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_alignment_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_row_length_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_row_length_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_skip_rows_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_skip_rows_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_skip_pixels_2d
-dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo#rgb8_skip_pixels_cube
-dEQP-GLES3.functional.texture.specification.texsubimage2d_depth#depth_component32f
-dEQP-GLES3.functional.texture.specification.texsubimage2d_depth#depth_component24
-dEQP-GLES3.functional.texture.specification.texsubimage2d_depth#depth_component16
-dEQP-GLES3.functional.texture.specification.texsubimage2d_depth#depth32f_stencil8
-dEQP-GLES3.functional.texture.specification.texsubimage2d_depth#depth24_stencil8
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#2d_alpha
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#2d_luminance
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#2d_luminance_alpha
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#2d_rgb
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#2d_rgba
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#cube_alpha
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#cube_luminance
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#cube_luminance_alpha
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#cube_rgb
-dEQP-GLES3.functional.texture.specification.basic_copyteximage2d#cube_rgba
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#2d_alpha
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#2d_luminance
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#2d_luminance_alpha
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#2d_rgb
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#2d_rgba
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#cube_alpha
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#cube_luminance
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#cube_luminance_alpha
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#cube_rgb
-dEQP-GLES3.functional.texture.specification.basic_copytexsubimage2d#cube_rgba
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba32f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba32i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba32ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba16f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba16i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba16ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba8_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba8i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba8ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#srgb8_alpha8_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb10_a2_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb10_a2ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba4_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba4_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb5_a1_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb8_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb565_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb565_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r11f_g11f_b10f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb32f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb32i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb32ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb16f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb16i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb16ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb8i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb8ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#srgb8_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb9_e5_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg32f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg32i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg32ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg16f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg16i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg16ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg8_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg8i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg8ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r32f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r32i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r32ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r16f_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r16i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r16ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r8_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r8i_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r8ui_2d_array
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgb8_image_height
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgb8_row_length
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgb8_skip_images
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgb8_skip_rows
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgb8_skip_pixels
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#r8_complex1
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#r8_complex2
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#r8_complex3
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#r8_complex4
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgba8_complex1
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgba8_complex2
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgba8_complex3
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgba8_complex4
-dEQP-GLES3.functional.texture.specification.teximage3d_unpack_params#rgba32f_complex
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba32f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba32f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba32i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba32i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba32ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba32ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba16f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba16f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba16i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba16i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba16ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba16ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#srgb8_alpha8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#srgb8_alpha8_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb10_a2_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb10_a2_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb10_a2ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb10_a2ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba4_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba4_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb5_a1_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb5_a1_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgba8_snorm_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb565_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb565_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r11f_g11f_b10f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r11f_g11f_b10f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb32f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb32f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb32i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb32i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb32ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb32ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb16f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb16f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb16i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb16i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb16ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb16ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_snorm_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#srgb8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#srgb8_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb9_e5_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb9_e5_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg32f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg32f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg32i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg32i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg32ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg32ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg16f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg16f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg16i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg16i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg16ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg16ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rg8_snorm_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r32f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r32f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r32i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r32i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r32ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r32ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r16f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r16f_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r16i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r16i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r16ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r16ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8i_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8i_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8ui_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8ui_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#r8_snorm_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_offset_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_offset_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_alignment_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_alignment_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_image_height_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_image_height_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_row_length_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_row_length_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_skip_images_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_skip_images_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_skip_rows_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_skip_rows_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_skip_pixels_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_pbo#rgb8_skip_pixels_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_depth#depth_component32f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth#depth_component24_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth#depth_component16_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth#depth32f_stencil8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth#depth24_stencil8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth_pbo#depth_component32f_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth_pbo#depth_component24_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth_pbo#depth32f_stencil8_2d_array
-dEQP-GLES3.functional.texture.specification.teximage3d_depth_pbo#depth24_stencil8_2d_array
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba32f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba32i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba32ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba16f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba16i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba16ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba8_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba8i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba8ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#srgb8_alpha8_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb10_a2_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb10_a2ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba4_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb5_a1_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgba8_snorm_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb8_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb565_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r11f_g11f_b10f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb32f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb32i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb32ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb16f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb16i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb16ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb8_snorm_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb8i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb8ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#srgb8_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rgb9_e5_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg32f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg32i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg32ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg16f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg16i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg16ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg8_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg8i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg8ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#rg8_snorm_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r32f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r32i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r32ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r16f_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r16i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r16ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r8_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r8i_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r8ui_3d
-dEQP-GLES3.functional.texture.specification.basic_texsubimage3d#r8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgb8_image_height
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgb8_row_length
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgb8_skip_images
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgb8_skip_rows
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgb8_skip_pixels
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#r8_complex1
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#r8_complex2
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#r8_complex3
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#r8_complex4
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgba8_complex1
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgba8_complex2
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgba8_complex3
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgba8_complex4
-dEQP-GLES3.functional.texture.specification.texsubimage3d_unpack_params#rgba32f_complex
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba32f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba32f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba32i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba32i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba32ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba32ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba16f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba16f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba16i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba16i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba16ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba16ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#srgb8_alpha8_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#srgb8_alpha8_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb10_a2_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb10_a2_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb10_a2ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb10_a2ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba4_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba4_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb5_a1_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb5_a1_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgba8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb565_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb565_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r11f_g11f_b10f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r11f_g11f_b10f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb32f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb32f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb32i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb32i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb32ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb32ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb16f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb16f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb16i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb16i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb16ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb16ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#srgb8_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#srgb8_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb9_e5_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb9_e5_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg32f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg32f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg32i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg32i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg32ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg32ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg16f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg16f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg16i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg16i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg16ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg16ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rg8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r32f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r32f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r32i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r32i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r32ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r32ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r16f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r16f_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r16i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r16i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r16ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r16ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8i_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8i_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8ui_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8ui_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#r8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_offset_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_offset_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_image_height_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_image_height_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_row_length_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_row_length_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_images_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_images_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_rows_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_rows_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_pixels_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_pixels_3d
-dEQP-GLES3.functional.texture.specification.texsubimage3d_depth#depth_component32f_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_depth#depth_component24_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_depth#depth_component16_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_depth#depth32f_stencil8_2d_array
-dEQP-GLES3.functional.texture.specification.texsubimage3d_depth#depth24_stencil8_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba32f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba32i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba32ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba16f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba16i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba16ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#srgb8_alpha8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb10_a2_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb10_a2ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba4_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba4_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb5_a1_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb5_a1_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb565_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb565_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r11f_g11f_b10f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb32f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb32i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb32ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb16f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb16i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb16ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb8i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb8ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#srgb8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb9_e5_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg32f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg32f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg32i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg32i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg32ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg16f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg16i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg16ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg8i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg8ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r32f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r32f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r32i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r32ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r32ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r16f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r16i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r16ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r16ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8i_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8ui_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8_snorm_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth_component32f_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth_component24_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth_component16_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth32f_stencil8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth24_stencil8_cube
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#2d_1x1_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#2d_2x2_2_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#2d_64x32_7_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#2d_32x64_4_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#2d_57x63_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#2d_57x63_2_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#cube_1x1_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#cube_2x2_2_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#cube_57x57_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#cube_57x57_2_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#cube_57x57_6_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#cube_64x64_4_levels
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#cube_64x64_7_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba32i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba16ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb10_a2ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba4_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba4_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb5_a1_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb565_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r11f_g11f_b10f_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb32ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb9_e5_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg16f_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg16ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r32ui_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r16f_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#2d_array_1x1x1_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#2d_array_2x2x2_2_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#2d_array_64x32x3_7_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#2d_array_32x64x3_4_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#2d_array_57x63x5_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#2d_array_57x63x5_2_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#3d_1x1x1_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#3d_2x2x2_2_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#3d_64x32x16_7_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#3d_32x64x16_4_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#3d_32x16x64_4_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#3d_57x63x11_1_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.size#3d_57x63x11_2_levels
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#nearest_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d.filtering#linear_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d.wrap#clamp_clamp
-dEQP-GLES3.functional.texture.vertex.2d.wrap#clamp_repeat
-dEQP-GLES3.functional.texture.vertex.2d.wrap#clamp_mirror
-dEQP-GLES3.functional.texture.vertex.2d.wrap#repeat_clamp
-dEQP-GLES3.functional.texture.vertex.2d.wrap#repeat_repeat
-dEQP-GLES3.functional.texture.vertex.2d.wrap#repeat_mirror
-dEQP-GLES3.functional.texture.vertex.2d.wrap#mirror_clamp
-dEQP-GLES3.functional.texture.vertex.2d.wrap#mirror_repeat
-dEQP-GLES3.functional.texture.vertex.2d.wrap#mirror_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#nearest_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.cube.filtering#linear_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.cube.wrap#clamp_clamp
-dEQP-GLES3.functional.texture.vertex.cube.wrap#clamp_repeat
-dEQP-GLES3.functional.texture.vertex.cube.wrap#clamp_mirror
-dEQP-GLES3.functional.texture.vertex.cube.wrap#repeat_clamp
-dEQP-GLES3.functional.texture.vertex.cube.wrap#repeat_repeat
-dEQP-GLES3.functional.texture.vertex.cube.wrap#repeat_mirror
-dEQP-GLES3.functional.texture.vertex.cube.wrap#mirror_clamp
-dEQP-GLES3.functional.texture.vertex.cube.wrap#mirror_repeat
-dEQP-GLES3.functional.texture.vertex.cube.wrap#mirror_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#nearest_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.filtering#linear_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#clamp_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#clamp_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#clamp_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#repeat_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#repeat_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#repeat_mirror
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#mirror_clamp
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#mirror_repeat
-dEQP-GLES3.functional.texture.vertex.2d_array.wrap#mirror_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_nearest_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_nearest_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_nearest_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_nearest_linear_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_nearest_linear_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_nearest_linear_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#nearest_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_linear_nearest_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_linear_nearest_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_linear_nearest_mirror
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_linear_linear_clamp
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_linear_linear_repeat
-dEQP-GLES3.functional.texture.vertex.3d.filtering#linear_mipmap_linear_linear_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_clamp_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_clamp_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_clamp_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_repeat_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_repeat_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_repeat_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_mirror_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_mirror_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#clamp_mirror_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_clamp_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_clamp_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_clamp_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_repeat_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_repeat_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_repeat_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_mirror_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_mirror_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#repeat_mirror_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_clamp_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_clamp_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_clamp_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_repeat_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_repeat_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_repeat_mirror
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_mirror_clamp
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_mirror_repeat
-dEQP-GLES3.functional.texture.vertex.3d.wrap#mirror_mirror_mirror
-dEQP-GLES3.functional.texture.units.2_units.only_2d#0
-dEQP-GLES3.functional.texture.units.2_units.only_2d#1
-dEQP-GLES3.functional.texture.units.2_units.only_2d#2
-dEQP-GLES3.functional.texture.units.2_units.only_2d#3
-dEQP-GLES3.functional.texture.units.2_units.only_2d#4
-dEQP-GLES3.functional.texture.units.2_units.only_2d#5
-dEQP-GLES3.functional.texture.units.2_units.only_2d#6
-dEQP-GLES3.functional.texture.units.2_units.only_2d#7
-dEQP-GLES3.functional.texture.units.2_units.only_2d#8
-dEQP-GLES3.functional.texture.units.2_units.only_2d#9
-dEQP-GLES3.functional.texture.units.2_units.only_cube#0
-dEQP-GLES3.functional.texture.units.2_units.only_cube#1
-dEQP-GLES3.functional.texture.units.2_units.only_cube#2
-dEQP-GLES3.functional.texture.units.2_units.only_cube#3
-dEQP-GLES3.functional.texture.units.2_units.only_cube#4
-dEQP-GLES3.functional.texture.units.2_units.only_cube#5
-dEQP-GLES3.functional.texture.units.2_units.only_cube#6
-dEQP-GLES3.functional.texture.units.2_units.only_cube#7
-dEQP-GLES3.functional.texture.units.2_units.only_cube#8
-dEQP-GLES3.functional.texture.units.2_units.only_cube#9
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#0
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#1
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#2
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#3
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#4
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#5
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#6
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#7
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#8
-dEQP-GLES3.functional.texture.units.2_units.only_2d_array#9
-dEQP-GLES3.functional.texture.units.2_units.only_3d#0
-dEQP-GLES3.functional.texture.units.2_units.only_3d#1
-dEQP-GLES3.functional.texture.units.2_units.only_3d#2
-dEQP-GLES3.functional.texture.units.2_units.only_3d#3
-dEQP-GLES3.functional.texture.units.2_units.only_3d#4
-dEQP-GLES3.functional.texture.units.2_units.only_3d#5
-dEQP-GLES3.functional.texture.units.2_units.only_3d#6
-dEQP-GLES3.functional.texture.units.2_units.only_3d#7
-dEQP-GLES3.functional.texture.units.2_units.only_3d#8
-dEQP-GLES3.functional.texture.units.2_units.only_3d#9
-dEQP-GLES3.functional.texture.units.2_units.mixed#0
-dEQP-GLES3.functional.texture.units.2_units.mixed#1
-dEQP-GLES3.functional.texture.units.2_units.mixed#2
-dEQP-GLES3.functional.texture.units.2_units.mixed#3
-dEQP-GLES3.functional.texture.units.2_units.mixed#4
-dEQP-GLES3.functional.texture.units.2_units.mixed#5
-dEQP-GLES3.functional.texture.units.2_units.mixed#6
-dEQP-GLES3.functional.texture.units.2_units.mixed#7
-dEQP-GLES3.functional.texture.units.2_units.mixed#8
-dEQP-GLES3.functional.texture.units.2_units.mixed#9
-dEQP-GLES3.functional.texture.units.4_units.only_2d#0
-dEQP-GLES3.functional.texture.units.4_units.only_2d#1
-dEQP-GLES3.functional.texture.units.4_units.only_2d#2
-dEQP-GLES3.functional.texture.units.4_units.only_2d#3
-dEQP-GLES3.functional.texture.units.4_units.only_2d#4
-dEQP-GLES3.functional.texture.units.4_units.only_2d#5
-dEQP-GLES3.functional.texture.units.4_units.only_2d#6
-dEQP-GLES3.functional.texture.units.4_units.only_2d#7
-dEQP-GLES3.functional.texture.units.4_units.only_2d#8
-dEQP-GLES3.functional.texture.units.4_units.only_2d#9
-dEQP-GLES3.functional.texture.units.4_units.only_cube#0
-dEQP-GLES3.functional.texture.units.4_units.only_cube#1
-dEQP-GLES3.functional.texture.units.4_units.only_cube#2
-dEQP-GLES3.functional.texture.units.4_units.only_cube#3
-dEQP-GLES3.functional.texture.units.4_units.only_cube#4
-dEQP-GLES3.functional.texture.units.4_units.only_cube#5
-dEQP-GLES3.functional.texture.units.4_units.only_cube#6
-dEQP-GLES3.functional.texture.units.4_units.only_cube#7
-dEQP-GLES3.functional.texture.units.4_units.only_cube#8
-dEQP-GLES3.functional.texture.units.4_units.only_cube#9
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#0
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#1
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#2
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#3
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#4
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#5
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#6
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#7
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#8
-dEQP-GLES3.functional.texture.units.4_units.only_2d_array#9
-dEQP-GLES3.functional.texture.units.4_units.only_3d#0
-dEQP-GLES3.functional.texture.units.4_units.only_3d#1
-dEQP-GLES3.functional.texture.units.4_units.only_3d#2
-dEQP-GLES3.functional.texture.units.4_units.only_3d#3
-dEQP-GLES3.functional.texture.units.4_units.only_3d#4
-dEQP-GLES3.functional.texture.units.4_units.only_3d#5
-dEQP-GLES3.functional.texture.units.4_units.only_3d#6
-dEQP-GLES3.functional.texture.units.4_units.only_3d#7
-dEQP-GLES3.functional.texture.units.4_units.only_3d#8
-dEQP-GLES3.functional.texture.units.4_units.only_3d#9
-dEQP-GLES3.functional.texture.units.4_units.mixed#0
-dEQP-GLES3.functional.texture.units.4_units.mixed#1
-dEQP-GLES3.functional.texture.units.4_units.mixed#2
-dEQP-GLES3.functional.texture.units.4_units.mixed#3
-dEQP-GLES3.functional.texture.units.4_units.mixed#4
-dEQP-GLES3.functional.texture.units.4_units.mixed#5
-dEQP-GLES3.functional.texture.units.4_units.mixed#6
-dEQP-GLES3.functional.texture.units.4_units.mixed#7
-dEQP-GLES3.functional.texture.units.4_units.mixed#8
-dEQP-GLES3.functional.texture.units.4_units.mixed#9
-dEQP-GLES3.functional.texture.units.8_units.only_2d#0
-dEQP-GLES3.functional.texture.units.8_units.only_2d#1
-dEQP-GLES3.functional.texture.units.8_units.only_2d#2
-dEQP-GLES3.functional.texture.units.8_units.only_2d#3
-dEQP-GLES3.functional.texture.units.8_units.only_2d#4
-dEQP-GLES3.functional.texture.units.8_units.only_2d#5
-dEQP-GLES3.functional.texture.units.8_units.only_2d#6
-dEQP-GLES3.functional.texture.units.8_units.only_2d#7
-dEQP-GLES3.functional.texture.units.8_units.only_2d#8
-dEQP-GLES3.functional.texture.units.8_units.only_2d#9
-dEQP-GLES3.functional.texture.units.8_units.only_cube#0
-dEQP-GLES3.functional.texture.units.8_units.only_cube#1
-dEQP-GLES3.functional.texture.units.8_units.only_cube#2
-dEQP-GLES3.functional.texture.units.8_units.only_cube#3
-dEQP-GLES3.functional.texture.units.8_units.only_cube#4
-dEQP-GLES3.functional.texture.units.8_units.only_cube#5
-dEQP-GLES3.functional.texture.units.8_units.only_cube#6
-dEQP-GLES3.functional.texture.units.8_units.only_cube#7
-dEQP-GLES3.functional.texture.units.8_units.only_cube#8
-dEQP-GLES3.functional.texture.units.8_units.only_cube#9
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#0
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#1
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#2
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#3
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#4
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#5
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#6
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#7
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#8
-dEQP-GLES3.functional.texture.units.8_units.only_2d_array#9
-dEQP-GLES3.functional.texture.units.8_units.only_3d#0
-dEQP-GLES3.functional.texture.units.8_units.only_3d#1
-dEQP-GLES3.functional.texture.units.8_units.only_3d#2
-dEQP-GLES3.functional.texture.units.8_units.only_3d#3
-dEQP-GLES3.functional.texture.units.8_units.only_3d#4
-dEQP-GLES3.functional.texture.units.8_units.only_3d#5
-dEQP-GLES3.functional.texture.units.8_units.only_3d#6
-dEQP-GLES3.functional.texture.units.8_units.only_3d#7
-dEQP-GLES3.functional.texture.units.8_units.only_3d#8
-dEQP-GLES3.functional.texture.units.8_units.only_3d#9
-dEQP-GLES3.functional.texture.units.8_units.mixed#0
-dEQP-GLES3.functional.texture.units.8_units.mixed#1
-dEQP-GLES3.functional.texture.units.8_units.mixed#2
-dEQP-GLES3.functional.texture.units.8_units.mixed#3
-dEQP-GLES3.functional.texture.units.8_units.mixed#4
-dEQP-GLES3.functional.texture.units.8_units.mixed#5
-dEQP-GLES3.functional.texture.units.8_units.mixed#6
-dEQP-GLES3.functional.texture.units.8_units.mixed#7
-dEQP-GLES3.functional.texture.units.8_units.mixed#8
-dEQP-GLES3.functional.texture.units.8_units.mixed#9
-dEQP-GLES3.functional.texture.units.all_units.only_2d#0
-dEQP-GLES3.functional.texture.units.all_units.only_2d#1
-dEQP-GLES3.functional.texture.units.all_units.only_cube#0
-dEQP-GLES3.functional.texture.units.all_units.only_2d_array#0
-dEQP-GLES3.functional.texture.units.all_units.only_2d_array#1
-dEQP-GLES3.functional.texture.units.all_units.only_3d#0
-dEQP-GLES3.functional.texture.units.all_units.only_3d#1
-dEQP-GLES3.functional.texture.units.all_units.mixed#0
-dEQP-GLES3.functional.texture.units.all_units.mixed#8
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#4x4
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#5x4
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#5x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#6x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#6x6
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#8x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#8x6
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#8x8
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x6
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x8
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x10
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#12x10
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#12x12
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_ldr#12x12_srgb
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#4x4
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#5x4
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#5x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#6x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#6x6
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#8x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#8x6
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#8x8
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#10x5
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#10x6
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#10x8
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#10x10
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#12x10
-dEQP-GLES3.functional.texture.compressed.astc.void_extent_hdr#12x12
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#4x4
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#5x4
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#5x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#6x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#6x6
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#8x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#8x6
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#8x8
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x6
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x8
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x10
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#12x10
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#12x12
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_grid#12x12_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#4x4
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#5x4
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#5x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#6x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#6x6
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#8x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#8x6
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#8x8
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x5
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x6
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x8
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x10
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#12x10
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#12x12
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.weight_ise#12x12_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#4x4
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#5x4
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#5x5
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#6x5
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#6x6
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#8x5
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#8x6
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#8x8
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x5
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x6
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x8
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x10
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#12x10
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#12x12
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.partition_pattern_index#12x12_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#4x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#5x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#5x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#6x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#6x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#8x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#8x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#8x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#12x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#12x12
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_ldr#12x12_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#4x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#5x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#5x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#6x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#6x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#8x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#8x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#8x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#10x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#10x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#10x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#10x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#12x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_not_15#12x12
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#4x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#5x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#5x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#6x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#6x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#8x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#8x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#8x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#10x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#10x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#10x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#10x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#12x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_value_hdr_cem_15#12x12
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#4x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#5x4
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#5x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#6x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#6x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#8x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#8x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#8x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x5
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x6
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x8
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#12x10
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#12x12
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.endpoint_ise#12x12_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#4x4
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#5x4
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#5x5
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#6x5
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#6x6
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#8x5
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#8x6
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#8x8
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x5
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x6
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x8
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x10
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#12x10
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#12x12
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.color_component_selector#12x12_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#4x4
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#5x4
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#5x5
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#6x5
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#6x6
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#8x5
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#8x6
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#8x8
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x5
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x6
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x8
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x10
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#12x10
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#12x12
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#4x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#5x4_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#5x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#6x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#6x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#8x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#8x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#8x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x5_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x6_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x8_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#10x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#12x10_srgb
-dEQP-GLES3.functional.texture.compressed.astc.block_size_remainder#12x12_srgb
-dEQP-GLES3.functional.fragment_ops.depth#cmp_always
-dEQP-GLES3.functional.fragment_ops.depth#cmp_never
-dEQP-GLES3.functional.fragment_ops.depth#cmp_equal
-dEQP-GLES3.functional.fragment_ops.depth#cmp_not_equal
-dEQP-GLES3.functional.fragment_ops.depth#cmp_less_than
-dEQP-GLES3.functional.fragment_ops.depth#cmp_less_or_equal
-dEQP-GLES3.functional.fragment_ops.depth#cmp_greater_than
-dEQP-GLES3.functional.fragment_ops.depth#cmp_greater_or_equal
-dEQP-GLES3.functional.fragment_ops.stencil#clear
-dEQP-GLES3.functional.fragment_ops.stencil#incr_stencil_fail
-dEQP-GLES3.functional.fragment_ops.stencil#decr_stencil_fail
-dEQP-GLES3.functional.fragment_ops.stencil#cmp_equal
-dEQP-GLES3.functional.fragment_ops.stencil#cmp_less_than
-dEQP-GLES3.functional.fragment_ops.stencil#cmp_less_or_equal
-dEQP-GLES3.functional.fragment_ops.stencil#cmp_greater_than
-dEQP-GLES3.functional.fragment_ops.stencil#cmp_greater_or_equal
-dEQP-GLES3.functional.fragment_ops.stencil#cmp_mask_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_never_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_always_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_less_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_lequal_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_equal_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_gequal_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_greater_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#stencil_notequal_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_never
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_always
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_less
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_lequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_equal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_gequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_greater
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_depth_notequal
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs#no_stencil_no_depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#keep_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#zero_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#replace_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#invert_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#incr_wrap_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_keep_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_zero_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_replace_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_invert_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_incr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_keep
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_zero
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_replace
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_incr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_decr
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_invert
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_incr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops#decr_wrap_decr_wrap_decr_wrap
-dEQP-GLES3.functional.fragment_ops.depth_stencil.write_mask#depth
-dEQP-GLES3.functional.fragment_ops.depth_stencil.write_mask#stencil
-dEQP-GLES3.functional.fragment_ops.depth_stencil.write_mask#both
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#0
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#1
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#2
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#3
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#4
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#6
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#7
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#8
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#9
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#10
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#12
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#13
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#14
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#15
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#16
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#17
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#18
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#19
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#21
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#22
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#23
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#add_src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#subtract_src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.src#src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst#src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#add_add
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#add_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#add_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#add_min
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#add_max
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#subtract_add
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#subtract_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#subtract_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#subtract_min
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#subtract_max
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#reverse_subtract_add
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#reverse_subtract_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#reverse_subtract_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#reverse_subtract_min
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#reverse_subtract_max
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#min_add
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#min_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#min_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#min_min
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#min_max
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#max_add
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#max_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#max_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#max_min
-dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_equation_alpha_equation#max_max
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#add_src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#subtract_src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func#reverse_subtract_src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.src#src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#zero_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_src_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_dst_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_color_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#one_minus_constant_alpha_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_zero
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_one
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_src_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_dst_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_src_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_dst_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_constant_color
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_one_minus_constant_alpha
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_func_alpha_func.dst#src_alpha_saturate_src_alpha_saturate
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#add_add
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#add_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#add_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#add_min
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#add_max
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#subtract_add
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#subtract_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#subtract_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#subtract_min
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#subtract_max
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#reverse_subtract_add
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#reverse_subtract_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#reverse_subtract_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#reverse_subtract_min
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#reverse_subtract_max
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#min_add
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#min_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#min_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#min_min
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#min_max
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#max_add
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#max_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#max_reverse_subtract
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#max_min
-dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.rgb_equation_alpha_equation#max_max
-dEQP-GLES3.functional.fragment_ops.random#0
-dEQP-GLES3.functional.fragment_ops.random#1
-dEQP-GLES3.functional.fragment_ops.random#2
-dEQP-GLES3.functional.fragment_ops.random#3
-dEQP-GLES3.functional.fragment_ops.random#4
-dEQP-GLES3.functional.fragment_ops.random#5
-dEQP-GLES3.functional.fragment_ops.random#6
-dEQP-GLES3.functional.fragment_ops.random#7
-dEQP-GLES3.functional.fragment_ops.random#8
-dEQP-GLES3.functional.fragment_ops.random#9
-dEQP-GLES3.functional.fragment_ops.random#10
-dEQP-GLES3.functional.fragment_ops.random#11
-dEQP-GLES3.functional.fragment_ops.random#12
-dEQP-GLES3.functional.fragment_ops.random#13
-dEQP-GLES3.functional.fragment_ops.random#14
-dEQP-GLES3.functional.fragment_ops.random#15
-dEQP-GLES3.functional.fragment_ops.random#16
-dEQP-GLES3.functional.fragment_ops.random#17
-dEQP-GLES3.functional.fragment_ops.random#18
-dEQP-GLES3.functional.fragment_ops.random#20
-dEQP-GLES3.functional.fragment_ops.random#21
-dEQP-GLES3.functional.fragment_ops.random#23
-dEQP-GLES3.functional.fragment_ops.random#24
-dEQP-GLES3.functional.fragment_ops.random#25
-dEQP-GLES3.functional.fragment_ops.random#26
-dEQP-GLES3.functional.fragment_ops.random#28
-dEQP-GLES3.functional.fragment_ops.random#29
-dEQP-GLES3.functional.fragment_ops.random#30
-dEQP-GLES3.functional.fragment_ops.random#31
-dEQP-GLES3.functional.fragment_ops.random#32
-dEQP-GLES3.functional.fragment_ops.random#33
-dEQP-GLES3.functional.fragment_ops.random#34
-dEQP-GLES3.functional.fragment_ops.random#35
-dEQP-GLES3.functional.fragment_ops.random#36
-dEQP-GLES3.functional.fragment_ops.random#37
-dEQP-GLES3.functional.fragment_ops.random#38
-dEQP-GLES3.functional.fragment_ops.random#39
-dEQP-GLES3.functional.fragment_ops.random#40
-dEQP-GLES3.functional.fragment_ops.random#41
-dEQP-GLES3.functional.fragment_ops.random#42
-dEQP-GLES3.functional.fragment_ops.random#43
-dEQP-GLES3.functional.fragment_ops.random#44
-dEQP-GLES3.functional.fragment_ops.random#45
-dEQP-GLES3.functional.fragment_ops.random#46
-dEQP-GLES3.functional.fragment_ops.random#47
-dEQP-GLES3.functional.fragment_ops.random#49
-dEQP-GLES3.functional.fragment_ops.random#50
-dEQP-GLES3.functional.fragment_ops.random#51
-dEQP-GLES3.functional.fragment_ops.random#52
-dEQP-GLES3.functional.fragment_ops.random#53
-dEQP-GLES3.functional.fragment_ops.random#54
-dEQP-GLES3.functional.fragment_ops.random#55
-dEQP-GLES3.functional.fragment_ops.random#56
-dEQP-GLES3.functional.fragment_ops.random#57
-dEQP-GLES3.functional.fragment_ops.random#58
-dEQP-GLES3.functional.fragment_ops.random#60
-dEQP-GLES3.functional.fragment_ops.random#62
-dEQP-GLES3.functional.fragment_ops.random#63
-dEQP-GLES3.functional.fragment_ops.random#64
-dEQP-GLES3.functional.fragment_ops.random#65
-dEQP-GLES3.functional.fragment_ops.random#66
-dEQP-GLES3.functional.fragment_ops.random#67
-dEQP-GLES3.functional.fragment_ops.random#68
-dEQP-GLES3.functional.fragment_ops.random#69
-dEQP-GLES3.functional.fragment_ops.random#70
-dEQP-GLES3.functional.fragment_ops.random#71
-dEQP-GLES3.functional.fragment_ops.random#72
-dEQP-GLES3.functional.fragment_ops.random#73
-dEQP-GLES3.functional.fragment_ops.random#75
-dEQP-GLES3.functional.fragment_ops.random#76
-dEQP-GLES3.functional.fragment_ops.random#77
-dEQP-GLES3.functional.fragment_ops.random#78
-dEQP-GLES3.functional.fragment_ops.random#79
-dEQP-GLES3.functional.fragment_ops.random#80
-dEQP-GLES3.functional.fragment_ops.random#81
-dEQP-GLES3.functional.fragment_ops.random#82
-dEQP-GLES3.functional.fragment_ops.random#83
-dEQP-GLES3.functional.fragment_ops.random#84
-dEQP-GLES3.functional.fragment_ops.random#85
-dEQP-GLES3.functional.fragment_ops.random#86
-dEQP-GLES3.functional.fragment_ops.random#87
-dEQP-GLES3.functional.fragment_ops.random#88
-dEQP-GLES3.functional.fragment_ops.random#89
-dEQP-GLES3.functional.fragment_ops.random#90
-dEQP-GLES3.functional.fragment_ops.random#91
-dEQP-GLES3.functional.fragment_ops.random#92
-dEQP-GLES3.functional.fragment_ops.random#93
-dEQP-GLES3.functional.fragment_ops.random#94
-dEQP-GLES3.functional.fragment_ops.random#95
-dEQP-GLES3.functional.fragment_ops.random#96
-dEQP-GLES3.functional.fragment_ops.random#97
-dEQP-GLES3.functional.fragment_ops.random#98
-dEQP-GLES3.functional.fragment_ops.random#99
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#0
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#1
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#2
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#3
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#4
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#5
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#6
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#8
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#9
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#10
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#11
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#12
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#13
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#14
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#15
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#16
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#17
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#18
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#19
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#21
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#22
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#23
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#24
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#26
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#28
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#29
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#30
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#31
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#32
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#33
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#34
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#35
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#36
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#37
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#38
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#39
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#41
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#42
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#43
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#45
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#46
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#47
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#48
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#49
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#50
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#51
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#52
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#53
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#55
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#56
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#57
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#58
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#59
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#60
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#61
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#62
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#63
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#64
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#65
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#66
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#67
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#68
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#69
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#70
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#71
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#72
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#74
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#75
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#76
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#77
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#79
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#81
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#83
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#85
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#86
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#87
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#88
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#89
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#90
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#91
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#92
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#93
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#94
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#95
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#96
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#97
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#98
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#99
-dEQP-GLES3.functional.fragment_ops.scissor#contained_quads
-dEQP-GLES3.functional.fragment_ops.scissor#partial_quads
-dEQP-GLES3.functional.fragment_ops.scissor#contained_tri
-dEQP-GLES3.functional.fragment_ops.scissor#enclosing_tri
-dEQP-GLES3.functional.fragment_ops.scissor#partial_tri
-dEQP-GLES3.functional.fragment_ops.scissor#outside_render_tri
-dEQP-GLES3.functional.fragment_ops.scissor#partial_lines
-dEQP-GLES3.functional.fragment_ops.scissor#contained_line
-dEQP-GLES3.functional.fragment_ops.scissor#partial_line
-dEQP-GLES3.functional.fragment_ops.scissor#outside_render_line
-dEQP-GLES3.functional.fragment_ops.scissor#contained_point
-dEQP-GLES3.functional.fragment_ops.scissor#partial_points
-dEQP-GLES3.functional.fragment_ops.scissor#outside_point
-dEQP-GLES3.functional.fragment_ops.scissor#outside_render_point
-dEQP-GLES3.functional.fragment_ops.scissor#clear_depth
-dEQP-GLES3.functional.fragment_ops.scissor#clear_stencil
-dEQP-GLES3.functional.fragment_ops.scissor#clear_color
-dEQP-GLES3.functional.fragment_ops.scissor#clear_fixed_buffer
-dEQP-GLES3.functional.fragment_ops.scissor#clear_int_buffer
-dEQP-GLES3.functional.fragment_ops.scissor#clear_uint_buffer
-dEQP-GLES3.functional.fragment_ops.scissor#clear_depth_buffer
-dEQP-GLES3.functional.fragment_ops.scissor#clear_stencil_buffer
-dEQP-GLES3.functional.fragment_ops.scissor#clear_depth_stencil_buffer
-dEQP-GLES3.functional.fbo.api#valid_tex2d_attachments
-dEQP-GLES3.functional.fbo.api#valid_texcube_attachments
-dEQP-GLES3.functional.fbo.api#valid_rbo_attachments
-dEQP-GLES3.functional.fbo.api#attach_to_default_fbo
-dEQP-GLES3.functional.fbo.api#invalid_tex2d_attachments
-dEQP-GLES3.functional.fbo.api#invalid_texcube_attachments
-dEQP-GLES3.functional.fbo.api#invalid_rbo_attachments
-dEQP-GLES3.functional.fbo.api#attach_names
-dEQP-GLES3.functional.fbo.api#attachment_query_tex2d
-dEQP-GLES3.functional.fbo.api#delete_tex_2d_attached_to_bound_fbo
-dEQP-GLES3.functional.fbo.api#delete_tex_cube_attached_to_bound_fbo
-dEQP-GLES3.functional.fbo.api#delete_rbo_attached_to_bound_fbo
-dEQP-GLES3.functional.fbo.api#delete_tex_2d_attached_to_not_bound_fbo
-dEQP-GLES3.functional.fbo.api#delete_tex_cube_attached_to_not_bound_fbo
-dEQP-GLES3.functional.fbo.api#delete_rbo_attached_to_not_bound_fbo
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth_component_unsigned_short
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth_component_unsigned_int
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb_unsigned_short_5_6_5
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb_unsigned_int_10f_11f_11f_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba_unsigned_short_4_4_4_4
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba_unsigned_short_5_5_5_1
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb10
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba4
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb5_a1
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb10_a2
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth_component16
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth_component24
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth_component32
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r16f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r32f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg16f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg32f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r8i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r16i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r32i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg8i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg16i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg32i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth_stencil_unsigned_int_24_8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba32f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba16f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth24_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#srgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#srgb_alpha_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#srgb8_alpha8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth_component32f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#depth32f_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#stencil_index8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb565
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba32i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba16i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgba8i
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rgb10_a2ui
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#depth_component_unsigned_short
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#depth_component_unsigned_int
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#red_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#red_float
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#red_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgb_unsigned_short_5_6_5
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgb_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgb_unsigned_int_10f_11f_11f_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgba_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgba_unsigned_short_4_4_4_4
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgba_unsigned_short_5_5_5_1
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgba_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rgb10
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#depth_component32
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rg_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rg_float
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#rg_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#depth24_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#srgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#srgb_alpha_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#depth32f_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#stencil_index8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#red_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#red_float
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#red_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgb_unsigned_short_5_6_5
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgb_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgb_unsigned_int_10f_11f_11f_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgba_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgba_unsigned_short_4_4_4_4
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgba_unsigned_short_5_5_5_1
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgba_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rgb10
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth_component16
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth_component24
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth_component32
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rg_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rg_float
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#rg_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth24_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#srgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#srgb_alpha_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth_component32f
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth32f_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth_component_unsigned_short
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth_component_unsigned_int
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#red_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb_unsigned_short_5_6_5
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb_unsigned_int_10f_11f_11f_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba_unsigned_short_4_4_4_4
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba_unsigned_short_5_5_5_1
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba4
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb5_a1
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb10_a2
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth_component16
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth_component24
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth_component32
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth_stencil_unsigned_int_24_8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth24_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#srgb_alpha_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#srgb8_alpha8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth_component32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#depth32f_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#stencil_index8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb565
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgba8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb10_a2ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth_component_unsigned_short
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth_component_unsigned_int
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#red_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#red_float
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#red_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb_unsigned_short_5_6_5
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb_unsigned_int_10f_11f_11f_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba_unsigned_short_4_4_4_4
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba_unsigned_short_5_5_5_1
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb10
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba4
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb5_a1
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb10_a2
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth_component16
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth_component24
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth_component32
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg_float
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rg32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth_stencil_unsigned_int_24_8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth24_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#srgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#srgb_alpha_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#srgb8_alpha8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth_component32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#depth32f_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb565
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgba8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil#rgb10_a2ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth_component_unsigned_short
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth_component_unsigned_int
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#red_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#red_float
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#red_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb_unsigned_short_5_6_5
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb_unsigned_int_10f_11f_11f_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba_unsigned_short_4_4_4_4
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba_unsigned_short_5_5_5_1
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba_unsigned_int_2_10_10_10_rev
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb10
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba4
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb5_a1
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb10_a2
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth_component16
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth_component24
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth_component32
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg_float
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rg32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth_stencil_unsigned_int_24_8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb16f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth24_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#srgb_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#srgb_alpha_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#srgb8_alpha8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth_component32f
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#depth32f_stencil8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb565
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgba8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#rgb10_a2ui
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_none_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_rbo_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#none_tex_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_none_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_rbo_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#rbo_tex_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_none_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_rbo_tex_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_none_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_none_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_none_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_rbo_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_rbo_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_rbo_tex
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_tex_none
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_tex_rbo
-dEQP-GLES3.functional.fbo.completeness.attachment_combinations#tex_tex_tex_tex
-dEQP-GLES3.functional.fbo.completeness.layer#2darr_1_0
-dEQP-GLES3.functional.fbo.completeness.layer#2darr_1_3
-dEQP-GLES3.functional.fbo.completeness.layer#2darr_4_3
-dEQP-GLES3.functional.fbo.completeness.layer#2darr_4_15
-dEQP-GLES3.functional.fbo.completeness.layer#3d_1_0
-dEQP-GLES3.functional.fbo.completeness.layer#3d_1_15
-dEQP-GLES3.functional.fbo.completeness.layer#3d_4_15
-dEQP-GLES3.functional.fbo.completeness.layer#3d_64_15
-dEQP-GLES3.functional.fbo.completeness.samples#rbo0_none_none
-dEQP-GLES3.functional.fbo.completeness.samples#rbo1_none_none
-dEQP-GLES3.functional.fbo.completeness.samples#rbo2_none_none
-dEQP-GLES3.functional.fbo.completeness.samples#rbo0_tex_none
-dEQP-GLES3.functional.fbo.completeness.samples#rbo2_rbo1_none
-dEQP-GLES3.functional.fbo.completeness.samples#rbo2_rbo2_none
-dEQP-GLES3.functional.fbo.completeness.samples#rbo0_rbo0_tex
-dEQP-GLES3.functional.fbo.completeness.samples#rbo1_rbo2_rbo0
-dEQP-GLES3.functional.fbo.completeness.samples#rbo2_rbo2_rbo0
-dEQP-GLES3.functional.fbo.completeness.samples#rbo1_rbo1_rbo1
-dEQP-GLES3.functional.fbo.completeness.samples#rbo1_rbo2_rbo4
-dEQP-GLES3.functional.fbo.render.stencil_clear#tex2d_rgba8_stencil_rbo_depth32f_stencil8
-dEQP-GLES3.functional.fbo.render.stencil_clear#tex2d_rgba8_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.stencil_clear#tex2d_rgba8_stencil_rbo_stencil_index8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba16f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba16f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba16f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba16f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb16f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb16f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_srgb8_alpha8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_srgb8_alpha8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_srgb8_alpha8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_srgb8_alpha8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_srgb8_alpha8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_srgb8_alpha8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb10_a2
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb10_a2_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb10_a2_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb10_a2
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb10_a2_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb10_a2_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba4
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba4_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgba4_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba4
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba4_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgba4_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb5_a1
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb5_a1_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb5_a1_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb5_a1
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb5_a1_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb5_a1_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb565
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb565_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rgb565_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb565
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb565_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rgb565_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r11f_g11f_b10f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r11f_g11f_b10f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r11f_g11f_b10f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r11f_g11f_b10f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rg8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rg8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rg8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rg8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rg8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rg8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r8_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba32f
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba32f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba32i
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba32i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba32ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba32ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba16f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_tex2d_depth_component32f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_rbo_depth_component32f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_tex2d_depth_component24
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_rbo_depth_component24
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_tex2d_depth_component16
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_rbo_depth_component16
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_stencil_tex2d_depth32f_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_stencil_rbo_depth32f_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_stencil_tex2d_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16f_stencil_rbo_stencil_index8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16i
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba16i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba16ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba16ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgb16f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_tex2d_depth_component32f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_rbo_depth_component32f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_tex2d_depth_component24
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_rbo_depth_component24
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_tex2d_depth_component16
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_rbo_depth_component16
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_stencil_tex2d_depth32f_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_stencil_rbo_depth32f_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_stencil_tex2d_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8_stencil_rbo_stencil_index8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8i
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba8i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba8ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba8ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_srgb8_alpha8
-dEQP-GLES3.functional.fbo.render.resize#rbo_srgb8_alpha8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgb10_a2
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgb10_a2
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgb10_a2ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgb10_a2ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgba4
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgba4
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgb5_a1
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgb5_a1
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgb8
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgb8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rgb565
-dEQP-GLES3.functional.fbo.render.resize#rbo_rgb565
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.render.resize#rbo_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg32f
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg32f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg32i
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg32i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg32ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg32ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg16f
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg16f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg16i
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg16i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg16ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg16ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg8
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg8i
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg8i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_rg8ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_rg8ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r32f
-dEQP-GLES3.functional.fbo.render.resize#rbo_r32f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r32i
-dEQP-GLES3.functional.fbo.render.resize#rbo_r32i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r32ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_r32ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r16f
-dEQP-GLES3.functional.fbo.render.resize#rbo_r16f
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r16i
-dEQP-GLES3.functional.fbo.render.resize#rbo_r16i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r16ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_r16ui
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r8
-dEQP-GLES3.functional.fbo.render.resize#rbo_r8
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r8i
-dEQP-GLES3.functional.fbo.render.resize#rbo_r8i
-dEQP-GLES3.functional.fbo.render.resize#tex2d_r8ui
-dEQP-GLES3.functional.fbo.render.resize#rbo_r8ui
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba32f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba32f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba32i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba32i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba32ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba32ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba16i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba16i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba16ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba16ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgb16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba8i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba8i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba8ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba8ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_srgb8_alpha8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_srgb8_alpha8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgb10_a2_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgb10_a2_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgb10_a2ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgb10_a2ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgba4_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgba4_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgb5_a1_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgb5_a1_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgb8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgb8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rgb565_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rgb565_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r11f_g11f_b10f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r11f_g11f_b10f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg32f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg32f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg32i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg32i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg32ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg32ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg16i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg16i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg16ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg16ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg8i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg8i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_rg8ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_rg8ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r32f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r32f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r32i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r32i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r32ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r32ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r16i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r16i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r16ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r16ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r8i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r8i_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#tex2d_r8ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_color#rbo_r8ui_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_tex2d_depth_component32f
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_rbo_depth_component32f
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_tex2d_depth_component24
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_rbo_depth_component24
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_tex2d_depth_component16
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_rbo_depth_component16
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_stencil_tex2d_depth32f_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_stencil_rbo_depth32f_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_stencil_tex2d_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.recreate_depth_stencil#tex2d_rgba8_stencil_rbo_stencil_index8
-dEQP-GLES3.functional.fbo.color.clear#rgba32i
-dEQP-GLES3.functional.fbo.color.clear#rgba32ui
-dEQP-GLES3.functional.fbo.color.clear#rgba16i
-dEQP-GLES3.functional.fbo.color.clear#rgba16ui
-dEQP-GLES3.functional.fbo.color.clear#rgba8
-dEQP-GLES3.functional.fbo.color.clear#rgba8i
-dEQP-GLES3.functional.fbo.color.clear#rgba8ui
-dEQP-GLES3.functional.fbo.color.clear#srgb8_alpha8
-dEQP-GLES3.functional.fbo.color.clear#rgb10_a2
-dEQP-GLES3.functional.fbo.color.clear#rgb10_a2ui
-dEQP-GLES3.functional.fbo.color.clear#rgba4
-dEQP-GLES3.functional.fbo.color.clear#rgb5_a1
-dEQP-GLES3.functional.fbo.color.clear#rgb8
-dEQP-GLES3.functional.fbo.color.clear#rgb565
-dEQP-GLES3.functional.fbo.color.clear#rg32i
-dEQP-GLES3.functional.fbo.color.clear#rg32ui
-dEQP-GLES3.functional.fbo.color.clear#rg16i
-dEQP-GLES3.functional.fbo.color.clear#rg16ui
-dEQP-GLES3.functional.fbo.color.clear#rg8
-dEQP-GLES3.functional.fbo.color.clear#rg8i
-dEQP-GLES3.functional.fbo.color.clear#rg8ui
-dEQP-GLES3.functional.fbo.color.clear#r32i
-dEQP-GLES3.functional.fbo.color.clear#r32ui
-dEQP-GLES3.functional.fbo.color.clear#r16i
-dEQP-GLES3.functional.fbo.color.clear#r16ui
-dEQP-GLES3.functional.fbo.color.clear#r8
-dEQP-GLES3.functional.fbo.color.clear#r8i
-dEQP-GLES3.functional.fbo.color.clear#r8ui
-dEQP-GLES3.functional.fbo.color.clear#rgba32f
-dEQP-GLES3.functional.fbo.color.clear#rgba16f
-dEQP-GLES3.functional.fbo.color.clear#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.color.clear#rg32f
-dEQP-GLES3.functional.fbo.color.clear#rg16f
-dEQP-GLES3.functional.fbo.color.clear#r32f
-dEQP-GLES3.functional.fbo.color.clear#r16f
-dEQP-GLES3.functional.fbo.color.tex2d#rgba32i
-dEQP-GLES3.functional.fbo.color.tex2d#rgba32ui
-dEQP-GLES3.functional.fbo.color.tex2d#rgba16i
-dEQP-GLES3.functional.fbo.color.tex2d#rgba16ui
-dEQP-GLES3.functional.fbo.color.tex2d#rgba8
-dEQP-GLES3.functional.fbo.color.tex2d#rgba8i
-dEQP-GLES3.functional.fbo.color.tex2d#rgba8ui
-dEQP-GLES3.functional.fbo.color.tex2d#srgb8_alpha8
-dEQP-GLES3.functional.fbo.color.tex2d#rgb10_a2
-dEQP-GLES3.functional.fbo.color.tex2d#rgb10_a2ui
-dEQP-GLES3.functional.fbo.color.tex2d#rgba4
-dEQP-GLES3.functional.fbo.color.tex2d#rgb5_a1
-dEQP-GLES3.functional.fbo.color.tex2d#rgb8
-dEQP-GLES3.functional.fbo.color.tex2d#rgb565
-dEQP-GLES3.functional.fbo.color.tex2d#rg32i
-dEQP-GLES3.functional.fbo.color.tex2d#rg32ui
-dEQP-GLES3.functional.fbo.color.tex2d#rg16i
-dEQP-GLES3.functional.fbo.color.tex2d#rg16ui
-dEQP-GLES3.functional.fbo.color.tex2d#rg8
-dEQP-GLES3.functional.fbo.color.tex2d#rg8i
-dEQP-GLES3.functional.fbo.color.tex2d#rg8ui
-dEQP-GLES3.functional.fbo.color.tex2d#r32i
-dEQP-GLES3.functional.fbo.color.tex2d#r32ui
-dEQP-GLES3.functional.fbo.color.tex2d#r16i
-dEQP-GLES3.functional.fbo.color.tex2d#r16ui
-dEQP-GLES3.functional.fbo.color.tex2d#r8
-dEQP-GLES3.functional.fbo.color.tex2d#r8i
-dEQP-GLES3.functional.fbo.color.tex2d#r8ui
-dEQP-GLES3.functional.fbo.color.tex2d#rgba32f
-dEQP-GLES3.functional.fbo.color.tex2d#rgba16f
-dEQP-GLES3.functional.fbo.color.tex2d#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.color.tex2d#rg32f
-dEQP-GLES3.functional.fbo.color.tex2d#rg16f
-dEQP-GLES3.functional.fbo.color.tex2d#r32f
-dEQP-GLES3.functional.fbo.color.tex2d#r16f
-dEQP-GLES3.functional.fbo.color.tex2d#rgb16f
-dEQP-GLES3.functional.fbo.color.texcube#rgba32i
-dEQP-GLES3.functional.fbo.color.texcube#rgba32ui
-dEQP-GLES3.functional.fbo.color.texcube#rgba16i
-dEQP-GLES3.functional.fbo.color.texcube#rgba16ui
-dEQP-GLES3.functional.fbo.color.texcube#rgba8
-dEQP-GLES3.functional.fbo.color.texcube#rgba8i
-dEQP-GLES3.functional.fbo.color.texcube#rgba8ui
-dEQP-GLES3.functional.fbo.color.texcube#srgb8_alpha8
-dEQP-GLES3.functional.fbo.color.texcube#rgb10_a2
-dEQP-GLES3.functional.fbo.color.texcube#rgb10_a2ui
-dEQP-GLES3.functional.fbo.color.texcube#rgba4
-dEQP-GLES3.functional.fbo.color.texcube#rgb5_a1
-dEQP-GLES3.functional.fbo.color.texcube#rgb8
-dEQP-GLES3.functional.fbo.color.texcube#rgb565
-dEQP-GLES3.functional.fbo.color.texcube#rg32i
-dEQP-GLES3.functional.fbo.color.texcube#rg32ui
-dEQP-GLES3.functional.fbo.color.texcube#rg16i
-dEQP-GLES3.functional.fbo.color.texcube#rg16ui
-dEQP-GLES3.functional.fbo.color.texcube#rg8
-dEQP-GLES3.functional.fbo.color.texcube#rg8i
-dEQP-GLES3.functional.fbo.color.texcube#rg8ui
-dEQP-GLES3.functional.fbo.color.texcube#r32i
-dEQP-GLES3.functional.fbo.color.texcube#r32ui
-dEQP-GLES3.functional.fbo.color.texcube#r16i
-dEQP-GLES3.functional.fbo.color.texcube#r16ui
-dEQP-GLES3.functional.fbo.color.texcube#r8
-dEQP-GLES3.functional.fbo.color.texcube#r8i
-dEQP-GLES3.functional.fbo.color.texcube#r8ui
-dEQP-GLES3.functional.fbo.color.texcube#rgba32f
-dEQP-GLES3.functional.fbo.color.texcube#rgba16f
-dEQP-GLES3.functional.fbo.color.texcube#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.color.texcube#rg32f
-dEQP-GLES3.functional.fbo.color.texcube#rg16f
-dEQP-GLES3.functional.fbo.color.texcube#r32f
-dEQP-GLES3.functional.fbo.color.texcube#r16f
-dEQP-GLES3.functional.fbo.color.texcube#rgb16f
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba32i
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba32ui
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba16i
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba16ui
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba8
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba8i
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba8ui
-dEQP-GLES3.functional.fbo.color.tex2darray#srgb8_alpha8
-dEQP-GLES3.functional.fbo.color.tex2darray#rgb10_a2
-dEQP-GLES3.functional.fbo.color.tex2darray#rgb10_a2ui
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba4
-dEQP-GLES3.functional.fbo.color.tex2darray#rgb5_a1
-dEQP-GLES3.functional.fbo.color.tex2darray#rgb8
-dEQP-GLES3.functional.fbo.color.tex2darray#rgb565
-dEQP-GLES3.functional.fbo.color.tex2darray#rg32i
-dEQP-GLES3.functional.fbo.color.tex2darray#rg32ui
-dEQP-GLES3.functional.fbo.color.tex2darray#rg16i
-dEQP-GLES3.functional.fbo.color.tex2darray#rg16ui
-dEQP-GLES3.functional.fbo.color.tex2darray#rg8
-dEQP-GLES3.functional.fbo.color.tex2darray#rg8i
-dEQP-GLES3.functional.fbo.color.tex2darray#rg8ui
-dEQP-GLES3.functional.fbo.color.tex2darray#r32i
-dEQP-GLES3.functional.fbo.color.tex2darray#r32ui
-dEQP-GLES3.functional.fbo.color.tex2darray#r16i
-dEQP-GLES3.functional.fbo.color.tex2darray#r16ui
-dEQP-GLES3.functional.fbo.color.tex2darray#r8
-dEQP-GLES3.functional.fbo.color.tex2darray#r8i
-dEQP-GLES3.functional.fbo.color.tex2darray#r8ui
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba32f
-dEQP-GLES3.functional.fbo.color.tex2darray#rgba16f
-dEQP-GLES3.functional.fbo.color.tex2darray#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.color.tex2darray#rg32f
-dEQP-GLES3.functional.fbo.color.tex2darray#rg16f
-dEQP-GLES3.functional.fbo.color.tex2darray#r32f
-dEQP-GLES3.functional.fbo.color.tex2darray#r16f
-dEQP-GLES3.functional.fbo.color.tex2darray#rgb16f
-dEQP-GLES3.functional.fbo.color.tex3d#rgba32i
-dEQP-GLES3.functional.fbo.color.tex3d#rgba32ui
-dEQP-GLES3.functional.fbo.color.tex3d#rgba16i
-dEQP-GLES3.functional.fbo.color.tex3d#rgba16ui
-dEQP-GLES3.functional.fbo.color.tex3d#rgba8
-dEQP-GLES3.functional.fbo.color.tex3d#rgba8i
-dEQP-GLES3.functional.fbo.color.tex3d#rgba8ui
-dEQP-GLES3.functional.fbo.color.tex3d#srgb8_alpha8
-dEQP-GLES3.functional.fbo.color.tex3d#rgb10_a2
-dEQP-GLES3.functional.fbo.color.tex3d#rgb10_a2ui
-dEQP-GLES3.functional.fbo.color.tex3d#rgba4
-dEQP-GLES3.functional.fbo.color.tex3d#rgb5_a1
-dEQP-GLES3.functional.fbo.color.tex3d#rgb8
-dEQP-GLES3.functional.fbo.color.tex3d#rgb565
-dEQP-GLES3.functional.fbo.color.tex3d#rg32i
-dEQP-GLES3.functional.fbo.color.tex3d#rg32ui
-dEQP-GLES3.functional.fbo.color.tex3d#rg16i
-dEQP-GLES3.functional.fbo.color.tex3d#rg16ui
-dEQP-GLES3.functional.fbo.color.tex3d#rg8
-dEQP-GLES3.functional.fbo.color.tex3d#rg8i
-dEQP-GLES3.functional.fbo.color.tex3d#rg8ui
-dEQP-GLES3.functional.fbo.color.tex3d#r32i
-dEQP-GLES3.functional.fbo.color.tex3d#r32ui
-dEQP-GLES3.functional.fbo.color.tex3d#r16i
-dEQP-GLES3.functional.fbo.color.tex3d#r16ui
-dEQP-GLES3.functional.fbo.color.tex3d#r8
-dEQP-GLES3.functional.fbo.color.tex3d#r8i
-dEQP-GLES3.functional.fbo.color.tex3d#r8ui
-dEQP-GLES3.functional.fbo.color.tex3d#rgba32f
-dEQP-GLES3.functional.fbo.color.tex3d#rgba16f
-dEQP-GLES3.functional.fbo.color.tex3d#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.color.tex3d#rg32f
-dEQP-GLES3.functional.fbo.color.tex3d#rg16f
-dEQP-GLES3.functional.fbo.color.tex3d#r32f
-dEQP-GLES3.functional.fbo.color.tex3d#r16f
-dEQP-GLES3.functional.fbo.color.tex3d#rgb16f
-dEQP-GLES3.functional.fbo.color.blend#rgba8_src_over
-dEQP-GLES3.functional.fbo.color.blend#srgb8_alpha8_src_over
-dEQP-GLES3.functional.fbo.color.blend#rgb10_a2_src_over
-dEQP-GLES3.functional.fbo.color.blend#rgba4_src_over
-dEQP-GLES3.functional.fbo.color.blend#rgb5_a1_src_over
-dEQP-GLES3.functional.fbo.color.blend#rgb8_src_over
-dEQP-GLES3.functional.fbo.color.blend#rgb565_src_over
-dEQP-GLES3.functional.fbo.color.blend#rg8_src_over
-dEQP-GLES3.functional.fbo.color.blend#r8_src_over
-dEQP-GLES3.functional.fbo.color.blend#rgba16f_src_over
-dEQP-GLES3.functional.fbo.color.blend#r11f_g11f_b10f_src_over
-dEQP-GLES3.functional.fbo.depth.basic#depth_component32f
-dEQP-GLES3.functional.fbo.depth.basic#depth_component24
-dEQP-GLES3.functional.fbo.depth.basic#depth_component16
-dEQP-GLES3.functional.fbo.depth.basic#depth32f_stencil8
-dEQP-GLES3.functional.fbo.depth.basic#depth24_stencil8
-dEQP-GLES3.functional.fbo.depth.depth_write_clamp#depth_component32f
-dEQP-GLES3.functional.fbo.depth.depth_write_clamp#depth_component24
-dEQP-GLES3.functional.fbo.depth.depth_write_clamp#depth_component16
-dEQP-GLES3.functional.fbo.depth.depth_write_clamp#depth32f_stencil8
-dEQP-GLES3.functional.fbo.depth.depth_write_clamp#depth24_stencil8
-dEQP-GLES3.functional.fbo.depth.depth_test_clamp#depth_component32f
-dEQP-GLES3.functional.fbo.depth.depth_test_clamp#depth_component24
-dEQP-GLES3.functional.fbo.depth.depth_test_clamp#depth_component16
-dEQP-GLES3.functional.fbo.depth.depth_test_clamp#depth32f_stencil8
-dEQP-GLES3.functional.fbo.depth.depth_test_clamp#depth24_stencil8
-dEQP-GLES3.functional.fbo.stencil.basic#depth32f_stencil8
-dEQP-GLES3.functional.fbo.stencil.basic#depth32f_stencil8_depth
-dEQP-GLES3.functional.fbo.stencil.basic#depth24_stencil8
-dEQP-GLES3.functional.fbo.stencil.basic#depth24_stencil8_depth
-dEQP-GLES3.functional.fbo.stencil.basic#stencil_index8
-dEQP-GLES3.functional.fbo.stencil.attach#depth_only
-dEQP-GLES3.functional.fbo.stencil.attach#stencil_only
-dEQP-GLES3.functional.fbo.stencil.attach#depth_stencil_separate
-dEQP-GLES3.functional.fbo.stencil.attach#depth_stencil_attachment
-dEQP-GLES3.functional.fbo.blit.rect#basic_nearest
-dEQP-GLES3.functional.fbo.blit.rect#basic_linear
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_dst_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_dst_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_dst_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_dst_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_dst_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_dst_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_dst_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#basic_reverse_src_dst_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#scale_nearest
-dEQP-GLES3.functional.fbo.blit.rect#scale_linear
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_dst_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_dst_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_dst_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_dst_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_dst_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_dst_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_dst_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#scale_reverse_src_dst_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#nearest_consistency_mag_reverse_dst_y
-dEQP-GLES3.functional.fbo.blit.rect#nearest_consistency_mag_reverse_src_dst_y
-dEQP-GLES3.functional.fbo.blit.rect#nearest_consistency_min_reverse_src_y
-dEQP-GLES3.functional.fbo.blit.rect#nearest_consistency_min_reverse_dst_y
-dEQP-GLES3.functional.fbo.blit.rect#nearest_consistency_min_reverse_src_dst_y
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba8ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#srgb8_alpha8_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgb10_a2ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba4_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb5_a1_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb8_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgb565_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg32ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg16ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg8_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#rg8ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#r32i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r32ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#r16i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r16ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#r8_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_rgba32i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_rgba16i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_rgba8i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_rg32i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_rg16i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_rg8i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_r32i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_r16i
-dEQP-GLES3.functional.fbo.blit.conversion#r8i_to_r8i
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_rgba32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_rgba16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_rgba8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_rgb10_a2ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_rg32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_rg16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_rg8ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_r32ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_r16ui
-dEQP-GLES3.functional.fbo.blit.conversion#r8ui_to_r8ui
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba32f_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rgba16f_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#r11f_g11f_b10f_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg32f_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#rg16f_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#r32f_to_r16f
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgba8
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgb10_a2
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgba4
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgb5_a1
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgb8
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgb565
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rg8
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_r8
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgba32f
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rgba16f
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rg32f
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_rg16f
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_r32f
-dEQP-GLES3.functional.fbo.blit.conversion#r16f_to_r16f
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth_component32f_basic
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth_component32f_scale
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth_component24_basic
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth_component24_scale
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth_component16_basic
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth_component16_scale
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth32f_stencil8_basic
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth32f_stencil8_scale
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth32f_stencil8_depth_only
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth32f_stencil8_stencil_only
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth24_stencil8_basic
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth24_stencil8_scale
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth24_stencil8_depth_only
-dEQP-GLES3.functional.fbo.blit.depth_stencil#depth24_stencil8_stencil_only
-dEQP-GLES3.functional.fbo.blit.depth_stencil#stencil_index8_basic
-dEQP-GLES3.functional.fbo.blit.depth_stencil#stencil_index8_scale
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb5_a1
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgba8
-dEQP-GLES3.functional.fbo.msaa.2_samples#srgb8_alpha8
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgb10_a2
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgba4
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgb5_a1
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgb8
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgb565
-dEQP-GLES3.functional.fbo.msaa.2_samples#rg8
-dEQP-GLES3.functional.fbo.msaa.2_samples#r8
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgba32f
-dEQP-GLES3.functional.fbo.msaa.2_samples#rgba16f
-dEQP-GLES3.functional.fbo.msaa.2_samples#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.msaa.2_samples#rg32f
-dEQP-GLES3.functional.fbo.msaa.2_samples#rg16f
-dEQP-GLES3.functional.fbo.msaa.2_samples#r32f
-dEQP-GLES3.functional.fbo.msaa.2_samples#r16f
-dEQP-GLES3.functional.fbo.msaa.2_samples#depth_component32f
-dEQP-GLES3.functional.fbo.msaa.2_samples#depth_component24
-dEQP-GLES3.functional.fbo.msaa.2_samples#depth_component16
-dEQP-GLES3.functional.fbo.msaa.2_samples#depth32f_stencil8
-dEQP-GLES3.functional.fbo.msaa.2_samples#depth24_stencil8
-dEQP-GLES3.functional.fbo.msaa.2_samples#stencil_index8
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgba8
-dEQP-GLES3.functional.fbo.msaa.4_samples#srgb8_alpha8
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgb10_a2
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgba4
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgb5_a1
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgb8
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgb565
-dEQP-GLES3.functional.fbo.msaa.4_samples#rg8
-dEQP-GLES3.functional.fbo.msaa.4_samples#r8
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgba32f
-dEQP-GLES3.functional.fbo.msaa.4_samples#rgba16f
-dEQP-GLES3.functional.fbo.msaa.4_samples#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.msaa.4_samples#rg32f
-dEQP-GLES3.functional.fbo.msaa.4_samples#rg16f
-dEQP-GLES3.functional.fbo.msaa.4_samples#r32f
-dEQP-GLES3.functional.fbo.msaa.4_samples#r16f
-dEQP-GLES3.functional.fbo.msaa.4_samples#depth_component32f
-dEQP-GLES3.functional.fbo.msaa.4_samples#depth_component24
-dEQP-GLES3.functional.fbo.msaa.4_samples#depth_component16
-dEQP-GLES3.functional.fbo.msaa.4_samples#depth32f_stencil8
-dEQP-GLES3.functional.fbo.msaa.4_samples#depth24_stencil8
-dEQP-GLES3.functional.fbo.msaa.4_samples#stencil_index8
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgba8
-dEQP-GLES3.functional.fbo.msaa.8_samples#srgb8_alpha8
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgb10_a2
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgba4
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgb5_a1
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgb8
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgb565
-dEQP-GLES3.functional.fbo.msaa.8_samples#rg8
-dEQP-GLES3.functional.fbo.msaa.8_samples#r8
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgba32f
-dEQP-GLES3.functional.fbo.msaa.8_samples#rgba16f
-dEQP-GLES3.functional.fbo.msaa.8_samples#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.msaa.8_samples#rg32f
-dEQP-GLES3.functional.fbo.msaa.8_samples#rg16f
-dEQP-GLES3.functional.fbo.msaa.8_samples#r32f
-dEQP-GLES3.functional.fbo.msaa.8_samples#r16f
-dEQP-GLES3.functional.fbo.msaa.8_samples#depth_component32f
-dEQP-GLES3.functional.fbo.msaa.8_samples#depth_component24
-dEQP-GLES3.functional.fbo.msaa.8_samples#depth_component16
-dEQP-GLES3.functional.fbo.msaa.8_samples#depth32f_stencil8
-dEQP-GLES3.functional.fbo.msaa.8_samples#depth24_stencil8
-dEQP-GLES3.functional.fbo.msaa.8_samples#stencil_index8
-dEQP-GLES3.functional.fbo.invalidate.default#render_none
-dEQP-GLES3.functional.fbo.invalidate.default#render_color
-dEQP-GLES3.functional.fbo.invalidate.default#render_depth
-dEQP-GLES3.functional.fbo.invalidate.default#render_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#render_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#render_all
-dEQP-GLES3.functional.fbo.invalidate.default#bind_color
-dEQP-GLES3.functional.fbo.invalidate.default#bind_depth
-dEQP-GLES3.functional.fbo.invalidate.default#bind_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#bind_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#bind_all
-dEQP-GLES3.functional.fbo.invalidate.default#sub_render_color
-dEQP-GLES3.functional.fbo.invalidate.default#sub_render_depth
-dEQP-GLES3.functional.fbo.invalidate.default#sub_render_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#sub_render_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#sub_render_all
-dEQP-GLES3.functional.fbo.invalidate.default#sub_bind_color
-dEQP-GLES3.functional.fbo.invalidate.default#sub_bind_depth
-dEQP-GLES3.functional.fbo.invalidate.default#sub_bind_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#sub_bind_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.default#sub_bind_all
-dEQP-GLES3.functional.fbo.invalidate.default#draw_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.default#draw_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.default#read_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.default#read_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.whole#render_none
-dEQP-GLES3.functional.fbo.invalidate.whole#render_color
-dEQP-GLES3.functional.fbo.invalidate.whole#render_depth
-dEQP-GLES3.functional.fbo.invalidate.whole#render_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#render_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#render_all
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_read_color
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_read_depth
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_read_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_read_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_read_color_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_blit_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_blit_msaa_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#render_none
-dEQP-GLES3.functional.fbo.invalidate.sub#render_color
-dEQP-GLES3.functional.fbo.invalidate.sub#render_depth
-dEQP-GLES3.functional.fbo.invalidate.sub#render_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#render_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#render_all
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_read_color
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_read_depth
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_read_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_read_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_read_color_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_depth
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_msaa_depth
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_msaa_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.format#rgba32i
-dEQP-GLES3.functional.fbo.invalidate.format#rgba32ui
-dEQP-GLES3.functional.fbo.invalidate.format#rgba16i
-dEQP-GLES3.functional.fbo.invalidate.format#rgba16ui
-dEQP-GLES3.functional.fbo.invalidate.format#rgba8
-dEQP-GLES3.functional.fbo.invalidate.format#rgba8i
-dEQP-GLES3.functional.fbo.invalidate.format#rgba8ui
-dEQP-GLES3.functional.fbo.invalidate.format#srgb8_alpha8
-dEQP-GLES3.functional.fbo.invalidate.format#rgb10_a2
-dEQP-GLES3.functional.fbo.invalidate.format#rgb10_a2ui
-dEQP-GLES3.functional.fbo.invalidate.format#rgba4
-dEQP-GLES3.functional.fbo.invalidate.format#rgb5_a1
-dEQP-GLES3.functional.fbo.invalidate.format#rgb8
-dEQP-GLES3.functional.fbo.invalidate.format#rgb565
-dEQP-GLES3.functional.fbo.invalidate.format#rg32i
-dEQP-GLES3.functional.fbo.invalidate.format#rg32ui
-dEQP-GLES3.functional.fbo.invalidate.format#rg16i
-dEQP-GLES3.functional.fbo.invalidate.format#rg16ui
-dEQP-GLES3.functional.fbo.invalidate.format#rg8
-dEQP-GLES3.functional.fbo.invalidate.format#rg8i
-dEQP-GLES3.functional.fbo.invalidate.format#rg8ui
-dEQP-GLES3.functional.fbo.invalidate.format#r32i
-dEQP-GLES3.functional.fbo.invalidate.format#r32ui
-dEQP-GLES3.functional.fbo.invalidate.format#r16i
-dEQP-GLES3.functional.fbo.invalidate.format#r16ui
-dEQP-GLES3.functional.fbo.invalidate.format#r8
-dEQP-GLES3.functional.fbo.invalidate.format#r8i
-dEQP-GLES3.functional.fbo.invalidate.format#r8ui
-dEQP-GLES3.functional.fbo.invalidate.format#rgba32f
-dEQP-GLES3.functional.fbo.invalidate.format#rgba16f
-dEQP-GLES3.functional.fbo.invalidate.format#r11f_g11f_b10f
-dEQP-GLES3.functional.fbo.invalidate.format#rg32f
-dEQP-GLES3.functional.fbo.invalidate.format#rg16f
-dEQP-GLES3.functional.fbo.invalidate.format#r32f
-dEQP-GLES3.functional.fbo.invalidate.format#r16f
-dEQP-GLES3.functional.fbo.invalidate.format#depth_component32f
-dEQP-GLES3.functional.fbo.invalidate.format#depth_component24
-dEQP-GLES3.functional.fbo.invalidate.format#depth_component16
-dEQP-GLES3.functional.fbo.invalidate.format#depth32f_stencil8
-dEQP-GLES3.functional.fbo.invalidate.format#depth24_stencil8
-dEQP-GLES3.functional.fbo.invalidate.format#stencil_index8
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_read_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_read_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_read_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_draw_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_draw_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#framebuffer_draw_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_read_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_read_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_read_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_draw_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_draw_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#read_framebuffer_draw_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_read_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_read_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_read_framebuffer_all
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_draw_framebuffer_color
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_draw_framebuffer_depth_stencil
-dEQP-GLES3.functional.fbo.invalidate.target#draw_framebuffer_draw_framebuffer_all
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride8_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride17_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride8_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride17_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride12_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride17_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride12_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride17_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride16_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride17_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride16_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride17_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#user_ptr_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride8_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride8_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride12_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride12_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride16_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride16_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.float#buffer_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride4_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride17_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride4_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride17_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride6_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride17_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride6_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride17_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride8_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride17_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride8_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride17_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#user_ptr_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride4_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride4_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride6_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride6_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride8_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride8_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.short#buffer_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride2_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride17_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride2_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride17_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride3_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride17_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride3_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride17_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride4_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride17_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride4_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride17_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#user_ptr_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride2_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride17_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride2_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride17_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride3_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride17_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride3_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride17_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride4_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride17_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride4_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride17_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.byte#buffer_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride8_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride17_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride8_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride17_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride12_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride17_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride12_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride17_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride16_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride17_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride16_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride17_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#user_ptr_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride8_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride32_components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride8_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride32_components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride12_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride32_components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride12_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride32_components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride16_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride16_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.fixed#buffer_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#user_ptr_stride16_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#user_ptr_stride17_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#user_ptr_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#user_ptr_stride16_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#user_ptr_stride17_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#user_ptr_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#buffer_stride16_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#buffer_stride32_components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#buffer_stride16_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.strides.int2_10_10_10#buffer_stride32_components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.float#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.float#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.float#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.float#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.float#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.float#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.short#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.short#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.short#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.short#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.short#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.short#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.byte#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.byte#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.byte#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.byte#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.byte#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.byte#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_short#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_short#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_short#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_short#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_short#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_short#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_byte#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_byte#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_byte#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_byte#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_byte#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_byte#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.fixed#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.fixed#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.fixed#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.fixed#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.fixed#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.fixed#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_int#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_int#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_int#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_int#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_int#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.unsigned_int#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.half#components2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.half#components2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.half#components3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.half#components3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.half#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.half#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.usigned_int2_10_10_10#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.usigned_int2_10_10_10#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10#components4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10#components4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.float#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components2_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components3_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.short#components4_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components2_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components3_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.byte#components4_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components2_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components3_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_short#components4_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components2_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components3_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_byte#components4_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.fixed#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_uvec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_uvec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_uvec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_uvec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components2_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components3_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_uvec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int#components4_uvec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_ivec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_ivec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_ivec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_ivec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components2_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components3_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_ivec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int#components4_ivec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components2_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components2_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components3_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components3_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components2_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components2_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components3_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components3_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components2_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components2_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components3_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components3_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.half#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.usigned_int2_10_10_10#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.usigned_int2_10_10_10#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.usigned_int2_10_10_10#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.usigned_int2_10_10_10#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.usigned_int2_10_10_10#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.usigned_int2_10_10_10#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int2_10_10_10#components4_vec2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int2_10_10_10#components4_vec2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int2_10_10_10#components4_vec3_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int2_10_10_10#components4_vec3_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int2_10_10_10#components4_vec4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.int2_10_10_10#components4_vec4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_draw#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_draw#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_draw#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_copy#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_copy#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_copy#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.static_read#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.stream_read#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride8_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_float_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride8_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_float_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride8_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_fixed_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride8_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_fixed_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride4_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_short_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride4_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_short_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride2_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride17_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_byte_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride0_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride2_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride17_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.usages.dynamic_read#stride32_byte_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset4_stride8_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset4_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset4_stride8_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset4_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset32_stride8_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset32_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset32_stride8_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.float#offset32_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset1_stride2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset1_stride17_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset1_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset1_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset1_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset1_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset4_stride2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset4_stride17_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset4_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset4_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset4_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset4_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset17_stride2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset17_stride17_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset17_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset17_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset17_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset17_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset32_stride2_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset32_stride17_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset32_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset32_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset32_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.byte#offset32_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset4_stride4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset4_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset4_stride4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset4_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset32_stride4_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset32_stride32_quads1
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset32_stride4_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.offset.int2_10_10_10#offset32_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first6_offset16_stride8_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first24_offset16_stride8_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first6_offset16_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first24_offset16_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first6_offset16_stride8_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first24_offset16_stride8_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first6_offset16_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.float#first24_offset16_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset1_stride2_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset1_stride2_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset1_stride17_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset1_stride17_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset1_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset1_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset1_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset1_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset1_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset1_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset1_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset1_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset16_stride2_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset16_stride2_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset16_stride17_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset16_stride17_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset16_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset16_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset16_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset16_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset16_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset16_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset16_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset16_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset17_stride2_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset17_stride2_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset17_stride17_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset17_stride17_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset17_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset17_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset17_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset17_stride2_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset17_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset17_stride17_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first6_offset17_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.byte#first24_offset17_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first6_offset16_stride8_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first24_offset16_stride8_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first6_offset16_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first24_offset16_stride32_quads5
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first6_offset16_stride8_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first24_offset16_stride8_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first6_offset16_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.single_attribute.first.int2_10_10_10#first24_offset16_stride32_quads256
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.attribute_count#2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.attribute_count#3
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.attribute_count#4
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.attribute_count#5
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.attribute_count#6
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.attribute_count#7
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.attribute_count#8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.storage#3_user_ptr_user_ptr_buffer
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.storage#3_user_ptr_buffer_user_ptr
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.storage#3_user_ptr_buffer_buffer
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.storage#3_buffer_user_ptr_user_ptr
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.storage#3_buffer_user_ptr_buffer
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.storage#3_buffer_buffer_user_ptr
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.storage#3_buffer_buffer_buffer
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_0_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_0_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_0_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_0_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_8_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_8_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_8_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_8_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_17_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_17_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_17_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_17_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_32_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_32_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_32_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_0_float2_32_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_0_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_0_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_0_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_0_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_8_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_8_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_8_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_8_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_17_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_17_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_17_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_17_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_32_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_32_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_32_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_8_float2_32_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_0_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_0_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_0_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_0_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_8_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_8_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_8_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_8_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_17_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_17_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_17_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_17_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_32_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_32_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_32_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_17_float2_32_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_0_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_0_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_0_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_0_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_8_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_8_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_8_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_8_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_17_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_17_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_17_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_17_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_32_float2_0
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_32_float2_8
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_32_float2_17
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.stride#3_float2_32_float2_32_float2_32
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_fixed2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_fixed2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_fixed2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_fixed2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_fixed2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_fixed2_vec2_unsigned_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_fixed2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_fixed2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_fixed2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_fixed2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_fixed2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_byte2_vec2_unsigned_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_fixed2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_fixed2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_fixed2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_fixed2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_fixed2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_short2_vec2_unsigned_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_fixed2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_fixed2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_fixed2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_fixed2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_fixed2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_byte2_vec2_unsigned_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_fixed2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_fixed2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_fixed2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_fixed2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_fixed2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_byte2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_byte2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_byte2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_byte2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_byte2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_short2_vec2_fixed2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_short2_vec2_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_short2_vec2_short2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2
-dEQP-GLES3.functional.vertex_arrays.multiple_attributes.input_types#3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_short2_vec2
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_float_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_float_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_float_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_vec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_vec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_vec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_int_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_int_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_int_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bool_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bool_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bool_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#bvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#lowp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#mediump_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#highp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_lowp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_mediump_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#row_major_highp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_lowp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_mediump_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.shared#column_major_highp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bool_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bool_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#bvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#row_major_highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.packed#column_major_highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_float_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_float_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_float_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_float_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_float_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_vec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_vec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_vec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_int_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_int_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_int_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_int_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_int_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bool_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bool_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bool_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#bvec4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#lowp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#mediump_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#highp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_lowp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_mediump_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#row_major_highp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_lowp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_mediump_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_type.std140#column_major_highp_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#float_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#float_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#float_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#vec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#int_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#int_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#int_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bool_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bool_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bool_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#bvec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#row_major_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.shared#column_major_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.packed#float_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#float_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#int_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#int_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bool_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bool_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#bvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#row_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.packed#column_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#float_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#float_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#float_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#vec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#int_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#int_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#int_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#ivec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#uvec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bool_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bool_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bool_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#bvec4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat2x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat3x4_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4x2_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#row_major_mat4x3_both
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.single_basic_array.std140#column_major_mat4x3_both
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#shared_vertex
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#shared_fragment
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#shared_both
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#shared_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#shared_instance_array_fragment
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#shared_instance_array_both
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#packed_vertex
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#packed_fragment
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#packed_instance_array_fragment
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#std140_vertex
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#std140_fragment
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#std140_both
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#std140_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#std140_instance_array_fragment
-dEQP-GLES3.functional.ubo.single_struct.per_block_buffer#std140_instance_array_both
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#shared_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#shared_instance_array_fragment
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#shared_instance_array_both
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#packed_instance_array_fragment
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#std140_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#std140_instance_array_fragment
-dEQP-GLES3.functional.ubo.single_struct.single_buffer#std140_instance_array_both
-dEQP-GLES3.functional.ubo.single_nested_struct.per_block_buffer#packed_vertex
-dEQP-GLES3.functional.ubo.single_nested_struct.per_block_buffer#packed_fragment
-dEQP-GLES3.functional.ubo.single_nested_struct.per_block_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_nested_struct.per_block_buffer#std140_vertex
-dEQP-GLES3.functional.ubo.single_nested_struct.per_block_buffer#std140_fragment
-dEQP-GLES3.functional.ubo.single_nested_struct.per_block_buffer#std140_both
-dEQP-GLES3.functional.ubo.single_nested_struct.per_block_buffer#std140_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_nested_struct.single_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.single_nested_struct.single_buffer#std140_instance_array_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#float_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#float_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#float_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#vec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#int_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#int_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#int_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#ivec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#uvec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bool_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bool_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bool_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#bvec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat2x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat2x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat2x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat3x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat3x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat3x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#mat4x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#row_major_mat4x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.shared#column_major_mat4x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#float_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#float_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#vec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#vec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#vec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#vec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#vec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#vec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#int_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#int_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#ivec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#ivec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#ivec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#ivec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#ivec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#ivec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#uvec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#uvec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#uvec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#uvec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#uvec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#uvec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bool_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bool_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bvec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bvec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bvec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bvec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bvec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#bvec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#row_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.packed#column_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#float_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#float_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#float_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#vec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#int_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#int_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#int_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#ivec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#uvec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bool_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bool_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bool_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#bvec4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat2x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat2x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat2x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat3x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat3x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3x4_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3x4_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat3x4_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4x2_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4x2_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4x2_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#mat4x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#row_major_mat4x3_both
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4x3_vertex
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4x3_fragment
-dEQP-GLES3.functional.ubo.instance_array_basic_type.std140#column_major_mat4x3_both
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#packed_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#packed_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#packed_mixed
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#packed_instance_array_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#packed_instance_array_mixed
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_both
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_mixed
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_instance_array_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_instance_array_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_instance_array_both
-dEQP-GLES3.functional.ubo.multi_basic_types.per_block_buffer#std140_instance_array_mixed
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#packed_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#packed_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#packed_mixed
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#packed_instance_array_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#packed_instance_array_mixed
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_both
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_mixed
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_instance_array_vertex
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_instance_array_fragment
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_instance_array_both
-dEQP-GLES3.functional.ubo.multi_basic_types.single_buffer#std140_instance_array_mixed
-dEQP-GLES3.functional.ubo.multi_nested_struct.per_block_buffer#packed_vertex
-dEQP-GLES3.functional.ubo.multi_nested_struct.per_block_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.multi_nested_struct.single_buffer#packed_vertex
-dEQP-GLES3.functional.ubo.multi_nested_struct.single_buffer#packed_instance_array_vertex
-dEQP-GLES3.functional.ubo.random.scalar_types#0
-dEQP-GLES3.functional.ubo.random.scalar_types#2
-dEQP-GLES3.functional.ubo.random.scalar_types#3
-dEQP-GLES3.functional.ubo.random.scalar_types#5
-dEQP-GLES3.functional.ubo.random.scalar_types#6
-dEQP-GLES3.functional.ubo.random.scalar_types#7
-dEQP-GLES3.functional.ubo.random.scalar_types#8
-dEQP-GLES3.functional.ubo.random.scalar_types#9
-dEQP-GLES3.functional.ubo.random.scalar_types#10
-dEQP-GLES3.functional.ubo.random.scalar_types#11
-dEQP-GLES3.functional.ubo.random.scalar_types#12
-dEQP-GLES3.functional.ubo.random.scalar_types#13
-dEQP-GLES3.functional.ubo.random.scalar_types#16
-dEQP-GLES3.functional.ubo.random.scalar_types#18
-dEQP-GLES3.functional.ubo.random.scalar_types#19
-dEQP-GLES3.functional.ubo.random.scalar_types#22
-dEQP-GLES3.functional.ubo.random.vector_types#1
-dEQP-GLES3.functional.ubo.random.vector_types#2
-dEQP-GLES3.functional.ubo.random.vector_types#4
-dEQP-GLES3.functional.ubo.random.vector_types#5
-dEQP-GLES3.functional.ubo.random.vector_types#6
-dEQP-GLES3.functional.ubo.random.vector_types#9
-dEQP-GLES3.functional.ubo.random.vector_types#11
-dEQP-GLES3.functional.ubo.random.vector_types#12
-dEQP-GLES3.functional.ubo.random.vector_types#13
-dEQP-GLES3.functional.ubo.random.vector_types#15
-dEQP-GLES3.functional.ubo.random.vector_types#16
-dEQP-GLES3.functional.ubo.random.vector_types#17
-dEQP-GLES3.functional.ubo.random.vector_types#18
-dEQP-GLES3.functional.ubo.random.vector_types#19
-dEQP-GLES3.functional.ubo.random.vector_types#20
-dEQP-GLES3.functional.ubo.random.vector_types#21
-dEQP-GLES3.functional.ubo.random.vector_types#22
-dEQP-GLES3.functional.ubo.random.vector_types#24
-dEQP-GLES3.functional.ubo.random.basic_types#0
-dEQP-GLES3.functional.ubo.random.basic_types#3
-dEQP-GLES3.functional.ubo.random.basic_types#4
-dEQP-GLES3.functional.ubo.random.basic_types#5
-dEQP-GLES3.functional.ubo.random.basic_types#7
-dEQP-GLES3.functional.ubo.random.basic_types#10
-dEQP-GLES3.functional.ubo.random.basic_types#11
-dEQP-GLES3.functional.ubo.random.basic_types#12
-dEQP-GLES3.functional.ubo.random.basic_types#14
-dEQP-GLES3.functional.ubo.random.basic_types#15
-dEQP-GLES3.functional.ubo.random.basic_types#16
-dEQP-GLES3.functional.ubo.random.basic_types#17
-dEQP-GLES3.functional.ubo.random.basic_types#18
-dEQP-GLES3.functional.ubo.random.basic_types#19
-dEQP-GLES3.functional.ubo.random.basic_types#20
-dEQP-GLES3.functional.ubo.random.basic_types#21
-dEQP-GLES3.functional.ubo.random.basic_types#22
-dEQP-GLES3.functional.ubo.random.basic_types#24
-dEQP-GLES3.functional.ubo.random.basic_arrays#0
-dEQP-GLES3.functional.ubo.random.basic_arrays#4
-dEQP-GLES3.functional.ubo.random.basic_arrays#6
-dEQP-GLES3.functional.ubo.random.basic_arrays#7
-dEQP-GLES3.functional.ubo.random.basic_arrays#8
-dEQP-GLES3.functional.ubo.random.basic_arrays#10
-dEQP-GLES3.functional.ubo.random.basic_arrays#16
-dEQP-GLES3.functional.ubo.random.basic_arrays#17
-dEQP-GLES3.functional.ubo.random.basic_arrays#20
-dEQP-GLES3.functional.ubo.random.basic_arrays#22
-dEQP-GLES3.functional.ubo.random.basic_arrays#23
-dEQP-GLES3.functional.ubo.random.basic_arrays#24
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#3
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#7
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#9
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#10
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#12
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#13
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#16
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#21
-dEQP-GLES3.functional.ubo.random.basic_instance_arrays#23
-dEQP-GLES3.functional.ubo.random.nested_structs#1
-dEQP-GLES3.functional.ubo.random.nested_structs#5
-dEQP-GLES3.functional.ubo.random.nested_structs#6
-dEQP-GLES3.functional.ubo.random.nested_structs#10
-dEQP-GLES3.functional.ubo.random.nested_structs#13
-dEQP-GLES3.functional.ubo.random.nested_structs#14
-dEQP-GLES3.functional.ubo.random.nested_structs#17
-dEQP-GLES3.functional.ubo.random.nested_structs#18
-dEQP-GLES3.functional.ubo.random.nested_structs#24
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#0
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#4
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#5
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#10
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#16
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#18
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#24
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#1
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#2
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#7
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#9
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#11
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#13
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#16
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#17
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#19
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#20
-dEQP-GLES3.functional.ubo.random.nested_structs_instance_arrays#23
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#0
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#1
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#9
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#12
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#15
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#18
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#23
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#4
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#5
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#7
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#10
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#12
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#18
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#19
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#20
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#21
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#23
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#29
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#30
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#32
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#34
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#39
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#42
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#45
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#48
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#49
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#5
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#7
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#12
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#14
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#15
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#24
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#26
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#29
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#30
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#34
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#36
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#38
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#39
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#42
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#44
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#46
-dEQP-GLES3.functional.ubo.random.all_shared_buffer#47
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#float_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2x3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2x3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2x3_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2x4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2x4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat2x4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3x2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3x2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3x2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3x4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3x4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat3x4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4x2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4x2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4x2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4x3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4x3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4x3_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#mat4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#int_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uint_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uint_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bool_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bool_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bool_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec3_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_basic#vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_basic#fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_basic#both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_nested_structs_arrays#vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_nested_structs_arrays#fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.multiple_nested_structs_arrays#both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.active_uniform.unused_uniforms#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#float_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2x3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2x3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2x3_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2x4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2x4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat2x4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3x2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3x2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3x2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3x4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3x4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat3x4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4x2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4x2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4x2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4x3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4x3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4x3_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#mat4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#int_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uint_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uint_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bool_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bool_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bool_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec3_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#sampler2D_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic#samplerCube_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#float_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#float_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#float_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#mat4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#mat4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#mat4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#int_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#int_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#int_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#uint_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#uint_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#bool_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#bool_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#bool_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_array_first_elem_without_brackets#sampler2D_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_basic#vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_basic#fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_basic#both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_nested_structs_arrays#vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_nested_structs_arrays#fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.multiple_nested_structs_arrays#both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.indices_active_uniformsiv.unused_uniforms#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#float_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2x3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2x3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2x3_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2x4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2x4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat2x4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3x2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3x2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3x2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3x4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3x4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat3x4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4x2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4x2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4x2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4x3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4x3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4x3_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#mat4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#int_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uint_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uint_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bool_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bool_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bool_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec3_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec3_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec3_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_basic#vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_basic#fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_basic#both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_nested_structs_arrays#vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_nested_structs_arrays#fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.multiple_nested_structs_arrays#both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#float_vec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.info_query.consistency.unused_uniforms#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2x3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2x3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2x3_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2x4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2x4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat2x4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3x2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3x2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3x2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3x4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3x4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat3x4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4x2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4x2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4x2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4x3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4x3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4x3_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#mat4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec2_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec3_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic#samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_basic#vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_basic#fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_basic#both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_nested_structs_arrays#vertex
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_nested_structs_arrays#fragment
-dEQP-GLES3.functional.uniform_api.value.initial.get_uniform.multiple_nested_structs_arrays#both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#float_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2x3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2x3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2x3_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2x4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2x4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat2x4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3x2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3x2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3x2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3x4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3x4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat3x4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4x2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4x2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4x2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4x3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4x3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4x3_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#mat4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#int_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bool_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec3_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic#samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_basic#vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_basic#fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_basic#both
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_nested_structs_arrays#vertex
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_nested_structs_arrays#fragment
-dEQP-GLES3.functional.uniform_api.value.initial.render.multiple_nested_structs_arrays#both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x3_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x3_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x3_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat2x4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x2_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x2_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x2_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat3x4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x2_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x2_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x2_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x3_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x3_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4x3_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#mat4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec2_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec3_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic#samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#mat4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#mat4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#mat4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_array_first_elem_without_brackets#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.multiple_basic#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.multiple_basic#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.multiple_basic#both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.get_uniform.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x3_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x3_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x3_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat2x4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x2_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x2_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x2_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat3x4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x2_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x2_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x2_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x3_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x3_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4x3_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#mat4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bool_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic#samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#mat4_row_major_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#mat4_row_major_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#mat4_row_major_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic#both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec2_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec3_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic#samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_array_first_elem_without_brackets#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.get_uniform.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bool_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec3_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec3_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec3_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic#samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#float_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#float_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#float_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#mat4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#mat4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#mat4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#int_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#int_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#int_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#uint_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#uint_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#bool_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#bool_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#bool_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#sampler2D_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#sampler2D_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.multiple_basic_array#vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.multiple_basic_array#fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_partial.multiple_basic_array#both
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#float_vec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#float_vec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#float_vec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#int_ivec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#int_ivec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#int_ivec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#uint_uvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#uint_uvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#uint_uvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#bool_bvec4_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#bool_bvec4_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#bool_bvec4_both
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#sampler2D_samplerCube_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#sampler2D_samplerCube_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.unused_uniforms#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.random#1
-dEQP-GLES3.functional.uniform_api.random#2
-dEQP-GLES3.functional.uniform_api.random#5
-dEQP-GLES3.functional.uniform_api.random#7
-dEQP-GLES3.functional.uniform_api.random#9
-dEQP-GLES3.functional.uniform_api.random#10
-dEQP-GLES3.functional.uniform_api.random#11
-dEQP-GLES3.functional.uniform_api.random#12
-dEQP-GLES3.functional.uniform_api.random#13
-dEQP-GLES3.functional.uniform_api.random#15
-dEQP-GLES3.functional.uniform_api.random#16
-dEQP-GLES3.functional.uniform_api.random#18
-dEQP-GLES3.functional.uniform_api.random#19
-dEQP-GLES3.functional.uniform_api.random#24
-dEQP-GLES3.functional.uniform_api.random#25
-dEQP-GLES3.functional.uniform_api.random#26
-dEQP-GLES3.functional.uniform_api.random#27
-dEQP-GLES3.functional.uniform_api.random#28
-dEQP-GLES3.functional.uniform_api.random#30
-dEQP-GLES3.functional.uniform_api.random#31
-dEQP-GLES3.functional.uniform_api.random#32
-dEQP-GLES3.functional.uniform_api.random#34
-dEQP-GLES3.functional.uniform_api.random#35
-dEQP-GLES3.functional.uniform_api.random#36
-dEQP-GLES3.functional.uniform_api.random#38
-dEQP-GLES3.functional.uniform_api.random#39
-dEQP-GLES3.functional.uniform_api.random#40
-dEQP-GLES3.functional.uniform_api.random#41
-dEQP-GLES3.functional.uniform_api.random#42
-dEQP-GLES3.functional.uniform_api.random#43
-dEQP-GLES3.functional.uniform_api.random#44
-dEQP-GLES3.functional.uniform_api.random#45
-dEQP-GLES3.functional.uniform_api.random#46
-dEQP-GLES3.functional.uniform_api.random#47
-dEQP-GLES3.functional.uniform_api.random#48
-dEQP-GLES3.functional.uniform_api.random#49
-dEQP-GLES3.functional.uniform_api.random#51
-dEQP-GLES3.functional.uniform_api.random#52
-dEQP-GLES3.functional.uniform_api.random#53
-dEQP-GLES3.functional.uniform_api.random#55
-dEQP-GLES3.functional.uniform_api.random#56
-dEQP-GLES3.functional.uniform_api.random#57
-dEQP-GLES3.functional.uniform_api.random#58
-dEQP-GLES3.functional.uniform_api.random#60
-dEQP-GLES3.functional.uniform_api.random#61
-dEQP-GLES3.functional.uniform_api.random#62
-dEQP-GLES3.functional.uniform_api.random#63
-dEQP-GLES3.functional.uniform_api.random#64
-dEQP-GLES3.functional.uniform_api.random#65
-dEQP-GLES3.functional.uniform_api.random#66
-dEQP-GLES3.functional.uniform_api.random#67
-dEQP-GLES3.functional.uniform_api.random#68
-dEQP-GLES3.functional.uniform_api.random#69
-dEQP-GLES3.functional.uniform_api.random#70
-dEQP-GLES3.functional.uniform_api.random#71
-dEQP-GLES3.functional.uniform_api.random#73
-dEQP-GLES3.functional.uniform_api.random#74
-dEQP-GLES3.functional.uniform_api.random#76
-dEQP-GLES3.functional.uniform_api.random#77
-dEQP-GLES3.functional.uniform_api.random#78
-dEQP-GLES3.functional.uniform_api.random#79
-dEQP-GLES3.functional.uniform_api.random#80
-dEQP-GLES3.functional.uniform_api.random#82
-dEQP-GLES3.functional.uniform_api.random#84
-dEQP-GLES3.functional.uniform_api.random#85
-dEQP-GLES3.functional.uniform_api.random#88
-dEQP-GLES3.functional.uniform_api.random#89
-dEQP-GLES3.functional.uniform_api.random#91
-dEQP-GLES3.functional.uniform_api.random#92
-dEQP-GLES3.functional.uniform_api.random#94
-dEQP-GLES3.functional.uniform_api.random#97
-dEQP-GLES3.functional.uniform_api.random#99
-dEQP-GLES3.functional.attribute_location.bind#float
-dEQP-GLES3.functional.attribute_location.bind#vec2
-dEQP-GLES3.functional.attribute_location.bind#vec3
-dEQP-GLES3.functional.attribute_location.bind#vec4
-dEQP-GLES3.functional.attribute_location.bind#mat2
-dEQP-GLES3.functional.attribute_location.bind#mat3
-dEQP-GLES3.functional.attribute_location.bind#mat4
-dEQP-GLES3.functional.attribute_location.bind#int
-dEQP-GLES3.functional.attribute_location.bind#ivec2
-dEQP-GLES3.functional.attribute_location.bind#ivec3
-dEQP-GLES3.functional.attribute_location.bind#ivec4
-dEQP-GLES3.functional.attribute_location.bind#uint
-dEQP-GLES3.functional.attribute_location.bind#uvec2
-dEQP-GLES3.functional.attribute_location.bind#uvec3
-dEQP-GLES3.functional.attribute_location.bind#uvec4
-dEQP-GLES3.functional.attribute_location.bind#mat2x2
-dEQP-GLES3.functional.attribute_location.bind#mat2x3
-dEQP-GLES3.functional.attribute_location.bind#mat2x4
-dEQP-GLES3.functional.attribute_location.bind#mat3x2
-dEQP-GLES3.functional.attribute_location.bind#mat3x3
-dEQP-GLES3.functional.attribute_location.bind#mat3x4
-dEQP-GLES3.functional.attribute_location.bind#mat4x2
-dEQP-GLES3.functional.attribute_location.bind#mat4x3
-dEQP-GLES3.functional.attribute_location.bind#mat4x4
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#float
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#vec2
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#vec3
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#vec4
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat2
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat3
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat4
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#int
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#ivec2
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#ivec3
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#ivec4
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#uint
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#uvec2
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#uvec3
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#uvec4
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat2x2
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat2x3
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat2x4
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat3x2
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat3x3
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat3x4
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat4x2
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat4x3
-dEQP-GLES3.functional.attribute_location.bind_max_attributes#mat4x4
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_inactive_float
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_inactive_vec2
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_inactive_vec3
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_inactive_vec4
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_inactive_mat2
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_inactive_mat3
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_inactive_mat4
-dEQP-GLES3.functional.attribute_location.bind_hole#float
-dEQP-GLES3.functional.attribute_location.bind_hole#vec2
-dEQP-GLES3.functional.attribute_location.bind_hole#vec3
-dEQP-GLES3.functional.attribute_location.bind_hole#mat2
-dEQP-GLES3.functional.attribute_location.bind_hole#mat3
-dEQP-GLES3.functional.attribute_location.bind_hole#mat4
-dEQP-GLES3.functional.attribute_location.bind_hole#int
-dEQP-GLES3.functional.attribute_location.bind_hole#ivec2
-dEQP-GLES3.functional.attribute_location.bind_hole#ivec3
-dEQP-GLES3.functional.attribute_location.bind_hole#ivec4
-dEQP-GLES3.functional.attribute_location.bind_hole#uint
-dEQP-GLES3.functional.attribute_location.bind_hole#uvec2
-dEQP-GLES3.functional.attribute_location.bind_hole#uvec3
-dEQP-GLES3.functional.attribute_location.bind_hole#uvec4
-dEQP-GLES3.functional.attribute_location.bind_hole#mat2x2
-dEQP-GLES3.functional.attribute_location.bind_hole#mat2x3
-dEQP-GLES3.functional.attribute_location.bind_hole#mat2x4
-dEQP-GLES3.functional.attribute_location.bind_hole#mat3x2
-dEQP-GLES3.functional.attribute_location.bind_hole#mat3x3
-dEQP-GLES3.functional.attribute_location.bind_hole#mat3x4
-dEQP-GLES3.functional.attribute_location.bind_hole#mat4x2
-dEQP-GLES3.functional.attribute_location.bind_hole#mat4x3
-dEQP-GLES3.functional.attribute_location.bind_hole#mat4x4
-dEQP-GLES3.functional.attribute_location.bind_time#pre_attach
-dEQP-GLES3.functional.attribute_location.bind_time#pre_link
-dEQP-GLES3.functional.attribute_location.bind_time#post_link
-dEQP-GLES3.functional.attribute_location.bind_time#relink
-dEQP-GLES3.functional.attribute_location.bind_time#reattach
-dEQP-GLES3.functional.attribute_location.layout#float
-dEQP-GLES3.functional.attribute_location.layout#vec2
-dEQP-GLES3.functional.attribute_location.layout#vec3
-dEQP-GLES3.functional.attribute_location.layout#vec4
-dEQP-GLES3.functional.attribute_location.layout#int
-dEQP-GLES3.functional.attribute_location.layout#ivec2
-dEQP-GLES3.functional.attribute_location.layout#ivec3
-dEQP-GLES3.functional.attribute_location.layout#ivec4
-dEQP-GLES3.functional.attribute_location.layout#uint
-dEQP-GLES3.functional.attribute_location.layout#uvec2
-dEQP-GLES3.functional.attribute_location.layout#uvec3
-dEQP-GLES3.functional.attribute_location.layout#uvec4
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#float
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#vec2
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#vec3
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#vec4
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#int
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#ivec2
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#ivec3
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#ivec4
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#uint
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#uvec2
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#uvec3
-dEQP-GLES3.functional.attribute_location.layout_max_attributes#uvec4
-dEQP-GLES3.functional.attribute_location.layout_hole#float
-dEQP-GLES3.functional.attribute_location.layout_hole#vec2
-dEQP-GLES3.functional.attribute_location.layout_hole#vec3
-dEQP-GLES3.functional.attribute_location.layout_hole#vec4
-dEQP-GLES3.functional.attribute_location.layout_hole#mat2
-dEQP-GLES3.functional.attribute_location.layout_hole#mat3
-dEQP-GLES3.functional.attribute_location.layout_hole#mat4
-dEQP-GLES3.functional.attribute_location.layout_hole#int
-dEQP-GLES3.functional.attribute_location.layout_hole#ivec2
-dEQP-GLES3.functional.attribute_location.layout_hole#ivec3
-dEQP-GLES3.functional.attribute_location.layout_hole#ivec4
-dEQP-GLES3.functional.attribute_location.layout_hole#uint
-dEQP-GLES3.functional.attribute_location.layout_hole#uvec2
-dEQP-GLES3.functional.attribute_location.layout_hole#uvec3
-dEQP-GLES3.functional.attribute_location.layout_hole#uvec4
-dEQP-GLES3.functional.attribute_location.layout_hole#mat2x2
-dEQP-GLES3.functional.attribute_location.layout_hole#mat2x3
-dEQP-GLES3.functional.attribute_location.layout_hole#mat2x4
-dEQP-GLES3.functional.attribute_location.layout_hole#mat3x2
-dEQP-GLES3.functional.attribute_location.layout_hole#mat3x3
-dEQP-GLES3.functional.attribute_location.layout_hole#mat3x4
-dEQP-GLES3.functional.attribute_location.layout_hole#mat4x2
-dEQP-GLES3.functional.attribute_location.layout_hole#mat4x3
-dEQP-GLES3.functional.attribute_location.layout_hole#mat4x4
-dEQP-GLES3.functional.attribute_location.mixed#float
-dEQP-GLES3.functional.attribute_location.mixed#vec2
-dEQP-GLES3.functional.attribute_location.mixed#vec3
-dEQP-GLES3.functional.attribute_location.mixed#vec4
-dEQP-GLES3.functional.attribute_location.mixed#int
-dEQP-GLES3.functional.attribute_location.mixed#ivec2
-dEQP-GLES3.functional.attribute_location.mixed#ivec3
-dEQP-GLES3.functional.attribute_location.mixed#ivec4
-dEQP-GLES3.functional.attribute_location.mixed#uint
-dEQP-GLES3.functional.attribute_location.mixed#uvec2
-dEQP-GLES3.functional.attribute_location.mixed#uvec3
-dEQP-GLES3.functional.attribute_location.mixed#uvec4
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#float
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#vec2
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#vec3
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#vec4
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#int
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#ivec2
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#ivec3
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#ivec4
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#uint
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#uvec2
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#uvec3
-dEQP-GLES3.functional.attribute_location.mixed_max_attributes#uvec4
-dEQP-GLES3.functional.attribute_location.mixed_time#pre_attach
-dEQP-GLES3.functional.attribute_location.mixed_time#pre_link
-dEQP-GLES3.functional.attribute_location.mixed_time#post_link
-dEQP-GLES3.functional.attribute_location.mixed_time#relink
-dEQP-GLES3.functional.attribute_location.mixed_time#reattach
-dEQP-GLES3.functional.attribute_location.mixed_hole#float
-dEQP-GLES3.functional.attribute_location.mixed_hole#vec2
-dEQP-GLES3.functional.attribute_location.mixed_hole#vec3
-dEQP-GLES3.functional.attribute_location.mixed_hole#vec4
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat2
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat3
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat4
-dEQP-GLES3.functional.attribute_location.mixed_hole#int
-dEQP-GLES3.functional.attribute_location.mixed_hole#ivec2
-dEQP-GLES3.functional.attribute_location.mixed_hole#ivec3
-dEQP-GLES3.functional.attribute_location.mixed_hole#ivec4
-dEQP-GLES3.functional.attribute_location.mixed_hole#uint
-dEQP-GLES3.functional.attribute_location.mixed_hole#uvec2
-dEQP-GLES3.functional.attribute_location.mixed_hole#uvec3
-dEQP-GLES3.functional.attribute_location.mixed_hole#uvec4
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat2x2
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat2x3
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat2x4
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat3x2
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat3x3
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat3x4
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat4x2
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat4x3
-dEQP-GLES3.functional.attribute_location.mixed_hole#mat4x4
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_highp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rgba32f_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_highp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rgba16f_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_highp_float
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r11f_g11f_b10f_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_highp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rg32f_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_highp_float
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#rg16f_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_highp_float
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r32f_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_highp_float
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.float#r16f_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba8_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#srgb8_alpha8_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb10_a2_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgba4_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb5_a1_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb8_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rgb565_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#rg8_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_lowp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_mediump_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_highp_float
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_highp_vec2
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_highp_vec3
-dEQP-GLES3.functional.fragment_out.basic.fixed#r8_highp_vec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba32i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba16i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rgba8i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg32i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg16i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#rg8i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r32i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r16i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_lowp_int
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_mediump_int
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_highp_int
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.basic.int#r8i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba32ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba16ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgba8ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rgb10_a2ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg32ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg16ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#rg8ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r32ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r16ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_highp_uint
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.basic.uint#r8ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_lowp_float
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_mediump_float
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_highp_float
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rgba32f_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_lowp_float
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_mediump_float
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_highp_float
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rgba16f_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_lowp_float
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_mediump_float
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_highp_float
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r11f_g11f_b10f_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_lowp_float
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_mediump_float
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_highp_float
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rg32f_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_lowp_float
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_mediump_float
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_highp_float
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#rg16f_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r32f_lowp_float
-dEQP-GLES3.functional.fragment_out.array.float#r32f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r32f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r32f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r32f_mediump_float
-dEQP-GLES3.functional.fragment_out.array.float#r32f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r32f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r32f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r32f_highp_float
-dEQP-GLES3.functional.fragment_out.array.float#r32f_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r32f_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r32f_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r16f_lowp_float
-dEQP-GLES3.functional.fragment_out.array.float#r16f_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r16f_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r16f_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r16f_mediump_float
-dEQP-GLES3.functional.fragment_out.array.float#r16f_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r16f_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r16f_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.float#r16f_highp_float
-dEQP-GLES3.functional.fragment_out.array.float#r16f_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.float#r16f_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.float#r16f_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba8_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#srgb8_alpha8_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb10_a2_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgba4_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb5_a1_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb8_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rgb565_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#rg8_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_lowp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_lowp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_lowp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_lowp_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_mediump_float
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_mediump_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_mediump_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_mediump_vec4
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_highp_float
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_highp_vec2
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_highp_vec3
-dEQP-GLES3.functional.fragment_out.array.fixed#r8_highp_vec4
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rgba16i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rgba8i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg32i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg16i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#rg8i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r32i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#r32i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r32i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r32i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r32i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#r32i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r32i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r32i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r32i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#r32i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r32i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r32i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r16i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#r16i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r16i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r16i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r16i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#r16i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r16i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r16i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r16i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#r16i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r16i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r16i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r8i_lowp_int
-dEQP-GLES3.functional.fragment_out.array.int#r8i_lowp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r8i_lowp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r8i_lowp_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r8i_mediump_int
-dEQP-GLES3.functional.fragment_out.array.int#r8i_mediump_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r8i_mediump_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r8i_mediump_ivec4
-dEQP-GLES3.functional.fragment_out.array.int#r8i_highp_int
-dEQP-GLES3.functional.fragment_out.array.int#r8i_highp_ivec2
-dEQP-GLES3.functional.fragment_out.array.int#r8i_highp_ivec3
-dEQP-GLES3.functional.fragment_out.array.int#r8i_highp_ivec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgba16ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgba8ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rgb10_a2ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg32ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg16ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#rg8ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r32ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r16ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_lowp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_lowp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_lowp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_lowp_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_mediump_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_mediump_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_mediump_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_mediump_uvec4
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_highp_uint
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_highp_uvec2
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_highp_uvec3
-dEQP-GLES3.functional.fragment_out.array.uint#r8ui_highp_uvec4
-dEQP-GLES3.functional.fragment_out.random#1
-dEQP-GLES3.functional.fragment_out.random#4
-dEQP-GLES3.functional.fragment_out.random#5
-dEQP-GLES3.functional.fragment_out.random#6
-dEQP-GLES3.functional.fragment_out.random#7
-dEQP-GLES3.functional.fragment_out.random#8
-dEQP-GLES3.functional.fragment_out.random#9
-dEQP-GLES3.functional.fragment_out.random#10
-dEQP-GLES3.functional.fragment_out.random#11
-dEQP-GLES3.functional.fragment_out.random#13
-dEQP-GLES3.functional.fragment_out.random#14
-dEQP-GLES3.functional.fragment_out.random#15
-dEQP-GLES3.functional.fragment_out.random#16
-dEQP-GLES3.functional.fragment_out.random#17
-dEQP-GLES3.functional.fragment_out.random#18
-dEQP-GLES3.functional.fragment_out.random#19
-dEQP-GLES3.functional.fragment_out.random#20
-dEQP-GLES3.functional.fragment_out.random#21
-dEQP-GLES3.functional.fragment_out.random#22
-dEQP-GLES3.functional.fragment_out.random#23
-dEQP-GLES3.functional.fragment_out.random#24
-dEQP-GLES3.functional.fragment_out.random#25
-dEQP-GLES3.functional.fragment_out.random#26
-dEQP-GLES3.functional.fragment_out.random#27
-dEQP-GLES3.functional.fragment_out.random#30
-dEQP-GLES3.functional.fragment_out.random#31
-dEQP-GLES3.functional.fragment_out.random#32
-dEQP-GLES3.functional.fragment_out.random#34
-dEQP-GLES3.functional.fragment_out.random#35
-dEQP-GLES3.functional.fragment_out.random#37
-dEQP-GLES3.functional.fragment_out.random#38
-dEQP-GLES3.functional.fragment_out.random#39
-dEQP-GLES3.functional.fragment_out.random#40
-dEQP-GLES3.functional.fragment_out.random#41
-dEQP-GLES3.functional.fragment_out.random#42
-dEQP-GLES3.functional.fragment_out.random#43
-dEQP-GLES3.functional.fragment_out.random#44
-dEQP-GLES3.functional.fragment_out.random#45
-dEQP-GLES3.functional.fragment_out.random#46
-dEQP-GLES3.functional.fragment_out.random#47
-dEQP-GLES3.functional.fragment_out.random#49
-dEQP-GLES3.functional.fragment_out.random#52
-dEQP-GLES3.functional.fragment_out.random#53
-dEQP-GLES3.functional.fragment_out.random#54
-dEQP-GLES3.functional.fragment_out.random#56
-dEQP-GLES3.functional.fragment_out.random#57
-dEQP-GLES3.functional.fragment_out.random#58
-dEQP-GLES3.functional.fragment_out.random#60
-dEQP-GLES3.functional.fragment_out.random#61
-dEQP-GLES3.functional.fragment_out.random#62
-dEQP-GLES3.functional.fragment_out.random#63
-dEQP-GLES3.functional.fragment_out.random#64
-dEQP-GLES3.functional.fragment_out.random#65
-dEQP-GLES3.functional.fragment_out.random#66
-dEQP-GLES3.functional.fragment_out.random#67
-dEQP-GLES3.functional.fragment_out.random#68
-dEQP-GLES3.functional.fragment_out.random#69
-dEQP-GLES3.functional.fragment_out.random#70
-dEQP-GLES3.functional.fragment_out.random#72
-dEQP-GLES3.functional.fragment_out.random#74
-dEQP-GLES3.functional.fragment_out.random#77
-dEQP-GLES3.functional.fragment_out.random#80
-dEQP-GLES3.functional.fragment_out.random#81
-dEQP-GLES3.functional.fragment_out.random#82
-dEQP-GLES3.functional.fragment_out.random#83
-dEQP-GLES3.functional.fragment_out.random#84
-dEQP-GLES3.functional.fragment_out.random#85
-dEQP-GLES3.functional.fragment_out.random#86
-dEQP-GLES3.functional.fragment_out.random#87
-dEQP-GLES3.functional.fragment_out.random#88
-dEQP-GLES3.functional.fragment_out.random#89
-dEQP-GLES3.functional.fragment_out.random#91
-dEQP-GLES3.functional.fragment_out.random#92
-dEQP-GLES3.functional.fragment_out.random#95
-dEQP-GLES3.functional.fragment_out.random#97
-dEQP-GLES3.functional.fragment_out.random#98
-dEQP-GLES3.functional.fragment_out.random#99
-dEQP-GLES3.functional.samplers.single_tex_2d#diff_wrap_t
-dEQP-GLES3.functional.samplers.single_tex_2d#diff_wrap_s
-dEQP-GLES3.functional.samplers.single_tex_2d#diff_wrap_r
-dEQP-GLES3.functional.samplers.single_tex_2d#diff_min_filter
-dEQP-GLES3.functional.samplers.single_tex_2d#diff_mag_filter
-dEQP-GLES3.functional.samplers.single_tex_2d#diff_max_lod
-dEQP-GLES3.functional.samplers.single_tex_2d#diff_min_lod
-dEQP-GLES3.functional.samplers.multi_tex_2d#diff_wrap_t
-dEQP-GLES3.functional.samplers.multi_tex_2d#diff_wrap_s
-dEQP-GLES3.functional.samplers.multi_tex_2d#diff_wrap_r
-dEQP-GLES3.functional.samplers.multi_tex_2d#diff_min_filter
-dEQP-GLES3.functional.samplers.multi_tex_2d#diff_mag_filter
-dEQP-GLES3.functional.samplers.multi_tex_2d#diff_max_lod
-dEQP-GLES3.functional.samplers.multi_tex_2d#diff_min_lod
-dEQP-GLES3.functional.samplers.single_tex_3d#diff_wrap_t
-dEQP-GLES3.functional.samplers.single_tex_3d#diff_wrap_s
-dEQP-GLES3.functional.samplers.single_tex_3d#diff_wrap_r
-dEQP-GLES3.functional.samplers.single_tex_3d#diff_min_filter
-dEQP-GLES3.functional.samplers.single_tex_3d#diff_mag_filter
-dEQP-GLES3.functional.samplers.single_tex_3d#diff_max_lod
-dEQP-GLES3.functional.samplers.single_tex_3d#diff_min_lod
-dEQP-GLES3.functional.samplers.multi_tex_3d#diff_wrap_t
-dEQP-GLES3.functional.samplers.multi_tex_3d#diff_wrap_s
-dEQP-GLES3.functional.samplers.multi_tex_3d#diff_wrap_r
-dEQP-GLES3.functional.samplers.multi_tex_3d#diff_min_filter
-dEQP-GLES3.functional.samplers.multi_tex_3d#diff_mag_filter
-dEQP-GLES3.functional.samplers.multi_tex_3d#diff_max_lod
-dEQP-GLES3.functional.samplers.multi_tex_3d#diff_min_lod
-dEQP-GLES3.functional.samplers.single_cubemap#diff_wrap_t
-dEQP-GLES3.functional.samplers.single_cubemap#diff_wrap_s
-dEQP-GLES3.functional.samplers.single_cubemap#diff_wrap_r
-dEQP-GLES3.functional.samplers.single_cubemap#diff_min_filter
-dEQP-GLES3.functional.samplers.single_cubemap#diff_mag_filter
-dEQP-GLES3.functional.samplers.single_cubemap#diff_max_lod
-dEQP-GLES3.functional.samplers.single_cubemap#diff_min_lod
-dEQP-GLES3.functional.samplers.multi_cubemap#diff_wrap_t
-dEQP-GLES3.functional.samplers.multi_cubemap#diff_wrap_s
-dEQP-GLES3.functional.samplers.multi_cubemap#diff_wrap_r
-dEQP-GLES3.functional.samplers.multi_cubemap#diff_min_filter
-dEQP-GLES3.functional.samplers.multi_cubemap#diff_mag_filter
-dEQP-GLES3.functional.samplers.multi_cubemap#diff_max_lod
-dEQP-GLES3.functional.samplers.multi_cubemap#diff_min_lod
-dEQP-GLES3.functional.pbo.renderbuffer#rgba8_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba8_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba8i_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba8i_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba8ui_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba8ui_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba16f_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba16f_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba16i_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba16i_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba16ui_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba16ui_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba32f_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba32f_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba32i_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba32i_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba32ui_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba32ui_clears
-dEQP-GLES3.functional.pbo.renderbuffer#srgb8_alpha8_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#srgb8_alpha8_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgb10_a2ui_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgb10_a2ui_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgba4_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgba4_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgb8_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgb8_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgb565_clears
-dEQP-GLES3.functional.pbo.renderbuffer#r11f_g11f_b10f_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#r11f_g11f_b10f_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg8_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg8_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg8i_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg8i_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg8ui_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg8ui_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg16f_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg16f_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg16i_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg16i_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg16ui_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg16ui_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg32f_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg32f_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg32i_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg32i_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rg32ui_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rg32ui_clears
-dEQP-GLES3.functional.rasterization.primitives#triangles
-dEQP-GLES3.functional.rasterization.primitives#triangle_strip
-dEQP-GLES3.functional.rasterization.primitives#triangle_fan
-dEQP-GLES3.functional.rasterization.primitives#line_strip
-dEQP-GLES3.functional.rasterization.primitives#line_loop
-dEQP-GLES3.functional.rasterization.primitives#points
-dEQP-GLES3.functional.rasterization.fill_rules#basic_quad
-dEQP-GLES3.functional.rasterization.fill_rules#basic_quad_reverse
-dEQP-GLES3.functional.rasterization.fill_rules#clipped_full
-dEQP-GLES3.functional.rasterization.fill_rules#clipped_partly
-dEQP-GLES3.functional.rasterization.fill_rules#projected
-dEQP-GLES3.functional.rasterization.culling#front_triangles
-dEQP-GLES3.functional.rasterization.culling#front_triangles_reverse
-dEQP-GLES3.functional.rasterization.culling#front_triangle_strip
-dEQP-GLES3.functional.rasterization.culling#front_triangle_strip_reverse
-dEQP-GLES3.functional.rasterization.culling#front_triangle_fan
-dEQP-GLES3.functional.rasterization.culling#front_triangle_fan_reverse
-dEQP-GLES3.functional.rasterization.culling#back_triangles
-dEQP-GLES3.functional.rasterization.culling#back_triangles_reverse
-dEQP-GLES3.functional.rasterization.culling#back_triangle_strip
-dEQP-GLES3.functional.rasterization.culling#back_triangle_strip_reverse
-dEQP-GLES3.functional.rasterization.culling#back_triangle_fan
-dEQP-GLES3.functional.rasterization.culling#back_triangle_fan_reverse
-dEQP-GLES3.functional.rasterization.culling#both_triangles
-dEQP-GLES3.functional.rasterization.culling#both_triangles_reverse
-dEQP-GLES3.functional.rasterization.culling#both_triangle_strip
-dEQP-GLES3.functional.rasterization.culling#both_triangle_strip_reverse
-dEQP-GLES3.functional.rasterization.culling#both_triangle_fan
-dEQP-GLES3.functional.rasterization.culling#both_triangle_fan_reverse
-dEQP-GLES3.functional.rasterization.interpolation.basic#triangles
-dEQP-GLES3.functional.rasterization.interpolation.basic#triangle_strip
-dEQP-GLES3.functional.rasterization.interpolation.basic#triangle_fan
-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.flatshading#triangles
-dEQP-GLES3.functional.rasterization.flatshading#triangle_strip
-dEQP-GLES3.functional.rasterization.flatshading#triangle_fan
-dEQP-GLES3.functional.rasterization.flatshading#lines
-dEQP-GLES3.functional.rasterization.flatshading#line_strip
-dEQP-GLES3.functional.rasterization.flatshading#line_loop
-dEQP-GLES3.functional.rasterization.flatshading#lines_wide
-dEQP-GLES3.functional.rasterization.flatshading#line_strip_wide
-dEQP-GLES3.functional.rasterization.flatshading#line_loop_wide
-dEQP-GLES3.functional.occlusion_query#scissor
-dEQP-GLES3.functional.occlusion_query#depth_write
-dEQP-GLES3.functional.occlusion_query#depth_clear
-dEQP-GLES3.functional.occlusion_query#stencil_write
-dEQP-GLES3.functional.occlusion_query#stencil_clear
-dEQP-GLES3.functional.occlusion_query#scissor_depth_write
-dEQP-GLES3.functional.occlusion_query#scissor_depth_clear
-dEQP-GLES3.functional.occlusion_query#scissor_stencil_write
-dEQP-GLES3.functional.occlusion_query#scissor_stencil_clear
-dEQP-GLES3.functional.occlusion_query#depth_write_depth_clear
-dEQP-GLES3.functional.occlusion_query#depth_write_stencil_write
-dEQP-GLES3.functional.occlusion_query#depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#scissor_depth_write_depth_clear
-dEQP-GLES3.functional.occlusion_query#scissor_depth_write_stencil_write
-dEQP-GLES3.functional.occlusion_query#scissor_depth_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#scissor_depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#scissor_depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#scissor_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#depth_write_depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#depth_write_depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#depth_write_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#depth_clear_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#scissor_depth_write_depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#scissor_depth_write_depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#scissor_depth_write_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#scissor_depth_clear_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#depth_write_depth_clear_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#all_occluders
-dEQP-GLES3.functional.occlusion_query#conservative_scissor
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write
-dEQP-GLES3.functional.occlusion_query#conservative_depth_clear
-dEQP-GLES3.functional.occlusion_query#conservative_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_write
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write_depth_clear
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_write_depth_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_write_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write_depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write_depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_depth_clear_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_write_depth_clear_stencil_write
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_write_depth_clear_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_write_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_scissor_depth_clear_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_depth_write_depth_clear_stencil_write_stencil_clear
-dEQP-GLES3.functional.occlusion_query#conservative_all_occluders
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.basic.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.line_loop.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.lines.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_strip.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangle_fan.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.triangles.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id#1_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id#2_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id#4_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.instance_id#20_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.attribute_divisor#1_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.attribute_divisor#2_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.attribute_divisor#4_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.attribute_divisor#20_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed#1_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed#2_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed#4_instances
-dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed#20_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id#1_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id#2_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id#4_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.instance_id#20_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.attribute_divisor#1_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.attribute_divisor#2_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.attribute_divisor#4_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.attribute_divisor#20_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed#1_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed#2_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed#4_instances
-dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed#20_instances
-dEQP-GLES3.functional.instanced.types#float
-dEQP-GLES3.functional.instanced.types#vec2
-dEQP-GLES3.functional.instanced.types#vec3
-dEQP-GLES3.functional.instanced.types#vec4
-dEQP-GLES3.functional.instanced.types#mat2
-dEQP-GLES3.functional.instanced.types#mat2x3
-dEQP-GLES3.functional.instanced.types#mat2x4
-dEQP-GLES3.functional.instanced.types#mat3x2
-dEQP-GLES3.functional.instanced.types#mat3
-dEQP-GLES3.functional.instanced.types#mat3x4
-dEQP-GLES3.functional.instanced.types#mat4x2
-dEQP-GLES3.functional.instanced.types#mat4x3
-dEQP-GLES3.functional.instanced.types#mat4
-dEQP-GLES3.functional.instanced.types#int
-dEQP-GLES3.functional.instanced.types#ivec2
-dEQP-GLES3.functional.instanced.types#ivec3
-dEQP-GLES3.functional.instanced.types#ivec4
-dEQP-GLES3.functional.instanced.types#uint
-dEQP-GLES3.functional.instanced.types#uvec2
-dEQP-GLES3.functional.instanced.types#uvec3
-dEQP-GLES3.functional.instanced.types#uvec4
-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
-dEQP-GLES3.functional.rasterizer_discard.basic#write_depth_line_loop
-dEQP-GLES3.functional.rasterizer_discard.basic#write_depth_triangles
-dEQP-GLES3.functional.rasterizer_discard.basic#write_depth_triangle_strip
-dEQP-GLES3.functional.rasterizer_discard.basic#write_depth_triangle_fan
-dEQP-GLES3.functional.rasterizer_discard.basic#write_stencil_points
-dEQP-GLES3.functional.rasterizer_discard.basic#write_stencil_lines
-dEQP-GLES3.functional.rasterizer_discard.basic#write_stencil_line_strip
-dEQP-GLES3.functional.rasterizer_discard.basic#write_stencil_line_loop
-dEQP-GLES3.functional.rasterizer_discard.basic#write_stencil_triangles
-dEQP-GLES3.functional.rasterizer_discard.basic#write_stencil_triangle_strip
-dEQP-GLES3.functional.rasterizer_discard.basic#write_stencil_triangle_fan
-dEQP-GLES3.functional.rasterizer_discard.basic#clear_color
-dEQP-GLES3.functional.rasterizer_discard.basic#clear_depth
-dEQP-GLES3.functional.rasterizer_discard.basic#clear_stencil
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_depth_points
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_depth_lines
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_depth_line_strip
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_depth_line_loop
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_depth_triangles
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_depth_triangle_strip
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_depth_triangle_fan
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_stencil_points
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_stencil_lines
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_stencil_line_strip
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_stencil_line_loop
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_stencil_triangles
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_stencil_triangle_strip
-dEQP-GLES3.functional.rasterizer_discard.scissor#write_stencil_triangle_fan
-dEQP-GLES3.functional.rasterizer_discard.scissor#clear_color
-dEQP-GLES3.functional.rasterizer_discard.scissor#clear_depth
-dEQP-GLES3.functional.rasterizer_discard.scissor#clear_stencil
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_depth_points
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_depth_lines
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_depth_line_strip
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_depth_line_loop
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_depth_triangles
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_depth_triangle_strip
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_depth_triangle_fan
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_stencil_points
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_stencil_lines
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_stencil_line_strip
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_stencil_line_loop
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_stencil_triangles
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_stencil_triangle_strip
-dEQP-GLES3.functional.rasterizer_discard.fbo#write_stencil_triangle_fan
-dEQP-GLES3.functional.rasterizer_discard.fbo#clear_color
-dEQP-GLES3.functional.rasterizer_discard.fbo#clear_depth
-dEQP-GLES3.functional.rasterizer_discard.fbo#clear_stencil
-dEQP-GLES3.functional.transform_feedback.position#points_interleaved
-dEQP-GLES3.functional.transform_feedback.position#lines_separate
-dEQP-GLES3.functional.transform_feedback.position#lines_interleaved
-dEQP-GLES3.functional.transform_feedback.position#triangles_separate
-dEQP-GLES3.functional.transform_feedback.position#triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.point_size#points_separate
-dEQP-GLES3.functional.transform_feedback.point_size#points_interleaved
-dEQP-GLES3.functional.transform_feedback.point_size#lines_separate
-dEQP-GLES3.functional.transform_feedback.point_size#lines_interleaved
-dEQP-GLES3.functional.transform_feedback.point_size#triangles_separate
-dEQP-GLES3.functional.transform_feedback.point_size#triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.points#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_float
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_vec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_vec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_mat3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_mat4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_int
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_uint
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_int
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_int
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_float
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_float
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_int
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_float
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_float
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_float
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_int
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_int
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_int
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_float
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_float
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_float
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.points#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_float
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.lines#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_float
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_float
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_float
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_vec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat2x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat2x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat3x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat3x4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat4x2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat4x3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_mat4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_int
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_uint
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#lowp_vec4_points_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#lowp_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#lowp_vec4_lines_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#lowp_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#lowp_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#mediump_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#mediump_vec4_lines_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#mediump_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#mediump_vec4_triangles_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#mediump_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#highp_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#highp_vec4_lines_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#highp_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#highp_vec4_triangles_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.smooth#highp_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#lowp_vec4_points_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#lowp_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#lowp_vec4_lines_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#lowp_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#lowp_vec4_triangles_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#lowp_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#mediump_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#mediump_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#mediump_vec4_triangles_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#mediump_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#highp_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#highp_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#highp_vec4_triangles_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.flat#highp_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#lowp_vec4_points_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#lowp_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#lowp_vec4_lines_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#lowp_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#lowp_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#mediump_vec4_lines_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#mediump_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#highp_vec4_points_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#highp_vec4_points_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#highp_vec4_lines_separate
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#highp_vec4_lines_interleaved
-dEQP-GLES3.functional.transform_feedback.interpolation.centroid#highp_vec4_triangles_interleaved
-dEQP-GLES3.functional.transform_feedback.random.separate.points#1
-dEQP-GLES3.functional.transform_feedback.random.separate.points#3
-dEQP-GLES3.functional.transform_feedback.random.separate.points#5
-dEQP-GLES3.functional.transform_feedback.random.separate.points#6
-dEQP-GLES3.functional.transform_feedback.random.separate.points#8
-dEQP-GLES3.functional.transform_feedback.random.separate.points#9
-dEQP-GLES3.functional.transform_feedback.random.separate.points#10
-dEQP-GLES3.functional.transform_feedback.random.separate.lines#3
-dEQP-GLES3.functional.transform_feedback.random.separate.lines#5
-dEQP-GLES3.functional.transform_feedback.random.separate.lines#6
-dEQP-GLES3.functional.transform_feedback.random.separate.lines#10
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#2
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#3
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#5
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#7
-dEQP-GLES3.functional.transform_feedback.random.interleaved.points#3
-dEQP-GLES3.functional.transform_feedback.random.interleaved.points#5
-dEQP-GLES3.functional.transform_feedback.random.interleaved.points#6
-dEQP-GLES3.functional.transform_feedback.random.interleaved.points#8
-dEQP-GLES3.functional.transform_feedback.random.interleaved.points#9
-dEQP-GLES3.functional.transform_feedback.random.interleaved.points#10
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#2
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#5
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#6
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#8
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#9
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#10
-dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles#1
-dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles#4
-dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles#5
-dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles#6
-dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles#9
-dEQP-GLES3.functional.fence_sync#wait_sync_smalldraw
-dEQP-GLES3.functional.fence_sync#client_wait_sync_smalldraw
-dEQP-GLES3.functional.fence_sync#client_wait_sync_timeout_smalldraw
-dEQP-GLES3.functional.shader_api.create_delete#create_vertex_shader
-dEQP-GLES3.functional.shader_api.create_delete#create_fragment_shader
-dEQP-GLES3.functional.shader_api.create_delete#delete_vertex_fragment
-dEQP-GLES3.functional.shader_api.compile_link#compile_vertex_shader
-dEQP-GLES3.functional.shader_api.compile_link#compile_fragment_shader
-dEQP-GLES3.functional.shader_api.compile_link#link_vertex_fragment
-dEQP-GLES3.functional.shader_api.shader_source#replace_source_vertex
-dEQP-GLES3.functional.shader_api.shader_source#replace_source_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_2_null_terminated_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_2_null_terminated_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_4_null_terminated_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_4_null_terminated_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_8_null_terminated_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_8_null_terminated_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_2_specify_lengths_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_2_specify_lengths_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_4_specify_lengths_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_4_specify_lengths_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_8_specify_lengths_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_8_specify_lengths_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_2_random_negative_length_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_2_random_negative_length_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_4_random_negative_length_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_4_random_negative_length_fragment
-dEQP-GLES3.functional.shader_api.shader_source#split_source_8_random_negative_length_vertex
-dEQP-GLES3.functional.shader_api.shader_source#split_source_8_random_negative_length_fragment
-dEQP-GLES3.functional.shader_api.program_state#detach_shader_vertex
-dEQP-GLES3.functional.shader_api.program_state#detach_shader_fragment
-dEQP-GLES3.functional.shader_api.program_state#reattach_shader_vertex
-dEQP-GLES3.functional.shader_api.program_state#reattach_shader_fragment
-dEQP-GLES3.functional.shader_api.program_state#delete_shader_vertex
-dEQP-GLES3.functional.shader_api.program_state#delete_shader_fragment
-dEQP-GLES3.functional.shader_api.program_state#replace_shader_vertex
-dEQP-GLES3.functional.shader_api.program_state#replace_shader_fragment
-dEQP-GLES3.functional.shader_api.program_state#recompile_shader_vertex
-dEQP-GLES3.functional.shader_api.program_state#recompile_shader_fragment
-dEQP-GLES3.functional.shader_api.program_state#replace_source_vertex
-dEQP-GLES3.functional.shader_api.program_state#replace_source_fragment
-dEQP-GLES3.functional.shader_api.program_binary.simple#get_program_binary_vertex_fragment
-dEQP-GLES3.functional.shader_api.program_binary.simple#uniform_reset_on_binary_load
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#detach_shader_vertex
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#detach_shader_fragment
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#reattach_shader_vertex
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#reattach_shader_fragment
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#delete_shader_vertex
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#delete_shader_fragment
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#replace_shader_vertex
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#replace_shader_fragment
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#recompile_shader_vertex
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#recompile_shader_fragment
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#replace_source_vertex
-dEQP-GLES3.functional.shader_api.program_binary.binary_persistence#replace_source_fragment
-dEQP-GLES3.functional.negative_api.buffer#bind_buffer
-dEQP-GLES3.functional.negative_api.buffer#delete_buffers
-dEQP-GLES3.functional.negative_api.buffer#gen_buffers
-dEQP-GLES3.functional.negative_api.buffer#buffer_data
-dEQP-GLES3.functional.negative_api.buffer#buffer_sub_data
-dEQP-GLES3.functional.negative_api.buffer#buffer_sub_data_size_offset
-dEQP-GLES3.functional.negative_api.buffer#read_pixels_format_mismatch
-dEQP-GLES3.functional.negative_api.buffer#bind_buffer_base
-dEQP-GLES3.functional.negative_api.buffer#clear_bufferiv
-dEQP-GLES3.functional.negative_api.buffer#clear_bufferuiv
-dEQP-GLES3.functional.negative_api.buffer#clear_bufferfv
-dEQP-GLES3.functional.negative_api.buffer#clear_bufferfi
-dEQP-GLES3.functional.negative_api.buffer#copy_buffer_sub_data
-dEQP-GLES3.functional.negative_api.buffer#flush_mapped_buffer_range
-dEQP-GLES3.functional.negative_api.buffer#map_buffer_range
-dEQP-GLES3.functional.negative_api.buffer#unmap_buffer
-dEQP-GLES3.functional.negative_api.buffer#bind_framebuffer
-dEQP-GLES3.functional.negative_api.buffer#bind_renderbuffer
-dEQP-GLES3.functional.negative_api.buffer#check_framebuffer_status
-dEQP-GLES3.functional.negative_api.buffer#gen_framebuffers
-dEQP-GLES3.functional.negative_api.buffer#gen_renderbuffers
-dEQP-GLES3.functional.negative_api.buffer#delete_framebuffers
-dEQP-GLES3.functional.negative_api.buffer#delete_renderbuffers
-dEQP-GLES3.functional.negative_api.buffer#framebuffer_renderbuffer
-dEQP-GLES3.functional.negative_api.buffer#blit_framebuffer
-dEQP-GLES3.functional.negative_api.texture#activetexture
-dEQP-GLES3.functional.negative_api.texture#bindtexture
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_invalid_target
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_invalid_format
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_neg_level
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_max_level
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_max_width_height
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_invalid_border
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_invalid_size
-dEQP-GLES3.functional.negative_api.texture#compressedteximage2d_invalid_buffer_target
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_invalid_target
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_invalid_format
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_inequal_width_height_cube
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_neg_level
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_max_level
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_max_width_height
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_invalid_border
-dEQP-GLES3.functional.negative_api.texture#copyteximage2d_incomplete_framebuffer
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage2d_invalid_target
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage2d_neg_level
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage2d_max_level
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage2d_neg_offset
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage2d_invalid_offset
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage2d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage2d_incomplete_framebuffer
-dEQP-GLES3.functional.negative_api.texture#deletetextures
-dEQP-GLES3.functional.negative_api.texture#gentextures
-dEQP-GLES3.functional.negative_api.texture#pixelstorei
-dEQP-GLES3.functional.negative_api.texture#teximage2d
-dEQP-GLES3.functional.negative_api.texture#teximage2d_inequal_width_height_cube
-dEQP-GLES3.functional.negative_api.texture#teximage2d_neg_level
-dEQP-GLES3.functional.negative_api.texture#teximage2d_max_level
-dEQP-GLES3.functional.negative_api.texture#teximage2d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#teximage2d_max_width_height
-dEQP-GLES3.functional.negative_api.texture#teximage2d_invalid_border
-dEQP-GLES3.functional.negative_api.texture#teximage2d_invalid_buffer_target
-dEQP-GLES3.functional.negative_api.texture#texsubimage2d
-dEQP-GLES3.functional.negative_api.texture#texsubimage2d_neg_level
-dEQP-GLES3.functional.negative_api.texture#texsubimage2d_max_level
-dEQP-GLES3.functional.negative_api.texture#texsubimage2d_neg_offset
-dEQP-GLES3.functional.negative_api.texture#texsubimage2d_invalid_offset
-dEQP-GLES3.functional.negative_api.texture#texsubimage2d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#texsubimage2d_invalid_buffer_target
-dEQP-GLES3.functional.negative_api.texture#texparameteri
-dEQP-GLES3.functional.negative_api.texture#texparameterf
-dEQP-GLES3.functional.negative_api.texture#texparameteriv
-dEQP-GLES3.functional.negative_api.texture#texparameterfv
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d_neg_level
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d_neg_offset
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d_invalid_offset
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d_invalid_size
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d_invalid_buffer_target
-dEQP-GLES3.functional.negative_api.texture#teximage3d_neg_level
-dEQP-GLES3.functional.negative_api.texture#teximage3d_max_level
-dEQP-GLES3.functional.negative_api.texture#teximage3d_neg_width_height_depth
-dEQP-GLES3.functional.negative_api.texture#teximage3d_max_width_height_depth
-dEQP-GLES3.functional.negative_api.texture#teximage3d_invalid_border
-dEQP-GLES3.functional.negative_api.texture#teximage3d_invalid_buffer_target
-dEQP-GLES3.functional.negative_api.texture#texsubimage3d
-dEQP-GLES3.functional.negative_api.texture#texsubimage3d_neg_level
-dEQP-GLES3.functional.negative_api.texture#texsubimage3d_max_level
-dEQP-GLES3.functional.negative_api.texture#texsubimage3d_neg_offset
-dEQP-GLES3.functional.negative_api.texture#texsubimage3d_invalid_offset
-dEQP-GLES3.functional.negative_api.texture#texsubimage3d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#texsubimage3d_invalid_buffer_target
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage3d
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage3d_neg_level
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage3d_max_level
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage3d_neg_offset
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage3d_invalid_offset
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage3d_neg_width_height
-dEQP-GLES3.functional.negative_api.texture#copytexsubimage3d_incomplete_framebuffer
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d_neg_level
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d_neg_width_height_depth
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d_max_width_height_depth
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d_invalid_border
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d_invalid_size
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d_invalid_buffer_target
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage3d
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage3d_neg_level
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage3d_neg_offset
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage3d_invalid_offset
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage3d_neg_width_height_depth
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage3d_invalid_size
-dEQP-GLES3.functional.negative_api.texture#texstorage2d_invalid_binding
-dEQP-GLES3.functional.negative_api.texture#texstorage3d_invalid_binding
-dEQP-GLES3.functional.negative_api.shader#create_shader
-dEQP-GLES3.functional.negative_api.shader#compile_shader
-dEQP-GLES3.functional.negative_api.shader#delete_shader
-dEQP-GLES3.functional.negative_api.shader#attach_shader
-dEQP-GLES3.functional.negative_api.shader#detach_shader
-dEQP-GLES3.functional.negative_api.shader#link_program
-dEQP-GLES3.functional.negative_api.shader#use_program
-dEQP-GLES3.functional.negative_api.shader#delete_program
-dEQP-GLES3.functional.negative_api.shader#validate_program
-dEQP-GLES3.functional.negative_api.shader#get_program_binary
-dEQP-GLES3.functional.negative_api.shader#gen_samplers
-dEQP-GLES3.functional.negative_api.shader#bind_sampler
-dEQP-GLES3.functional.negative_api.shader#delete_samplers
-dEQP-GLES3.functional.negative_api.shader#get_sampler_parameteriv
-dEQP-GLES3.functional.negative_api.shader#get_sampler_parameterfv
-dEQP-GLES3.functional.negative_api.shader#sampler_parameteri
-dEQP-GLES3.functional.negative_api.shader#sampler_parameteriv
-dEQP-GLES3.functional.negative_api.shader#sampler_parameterf
-dEQP-GLES3.functional.negative_api.shader#sampler_parameterfv
-dEQP-GLES3.functional.negative_api.shader#get_attrib_location
-dEQP-GLES3.functional.negative_api.shader#get_uniform_location
-dEQP-GLES3.functional.negative_api.shader#bind_attrib_location
-dEQP-GLES3.functional.negative_api.shader#uniform_block_binding
-dEQP-GLES3.functional.negative_api.shader#uniformf_invalid_program
-dEQP-GLES3.functional.negative_api.shader#uniformf_incompatible_type
-dEQP-GLES3.functional.negative_api.shader#uniformf_invalid_location
-dEQP-GLES3.functional.negative_api.shader#uniformfv_invalid_program
-dEQP-GLES3.functional.negative_api.shader#uniformfv_incompatible_type
-dEQP-GLES3.functional.negative_api.shader#uniformfv_invalid_location
-dEQP-GLES3.functional.negative_api.shader#uniformfv_invalid_count
-dEQP-GLES3.functional.negative_api.shader#uniformi_invalid_program
-dEQP-GLES3.functional.negative_api.shader#uniformi_incompatible_type
-dEQP-GLES3.functional.negative_api.shader#uniformi_invalid_location
-dEQP-GLES3.functional.negative_api.shader#uniformiv_invalid_program
-dEQP-GLES3.functional.negative_api.shader#uniformiv_incompatible_type
-dEQP-GLES3.functional.negative_api.shader#uniformiv_invalid_location
-dEQP-GLES3.functional.negative_api.shader#uniformiv_invalid_count
-dEQP-GLES3.functional.negative_api.shader#uniformui_invalid_program
-dEQP-GLES3.functional.negative_api.shader#uniformui_incompatible_type
-dEQP-GLES3.functional.negative_api.shader#uniformui_invalid_location
-dEQP-GLES3.functional.negative_api.shader#uniformuiv_invalid_program
-dEQP-GLES3.functional.negative_api.shader#uniformuiv_incompatible_type
-dEQP-GLES3.functional.negative_api.shader#uniformuiv_invalid_location
-dEQP-GLES3.functional.negative_api.shader#uniformuiv_invalid_count
-dEQP-GLES3.functional.negative_api.shader#uniform_matrixfv_invalid_program
-dEQP-GLES3.functional.negative_api.shader#uniform_matrixfv_incompatible_type
-dEQP-GLES3.functional.negative_api.shader#uniform_matrixfv_invalid_location
-dEQP-GLES3.functional.negative_api.shader#uniform_matrixfv_invalid_count
-dEQP-GLES3.functional.negative_api.shader#gen_transform_feedbacks
-dEQP-GLES3.functional.negative_api.shader#bind_transform_feedback
-dEQP-GLES3.functional.negative_api.shader#delete_transform_feedbacks
-dEQP-GLES3.functional.negative_api.shader#begin_transform_feedback
-dEQP-GLES3.functional.negative_api.shader#pause_transform_feedback
-dEQP-GLES3.functional.negative_api.shader#resume_transform_feedback
-dEQP-GLES3.functional.negative_api.shader#end_transform_feedback
-dEQP-GLES3.functional.negative_api.shader#get_transform_feedback_varying
-dEQP-GLES3.functional.negative_api.shader#transform_feedback_varyings
-dEQP-GLES3.functional.negative_api.fragment#scissor
-dEQP-GLES3.functional.negative_api.fragment#depth_func
-dEQP-GLES3.functional.negative_api.fragment#viewport
-dEQP-GLES3.functional.negative_api.fragment#stencil_func
-dEQP-GLES3.functional.negative_api.fragment#stencil_func_separate
-dEQP-GLES3.functional.negative_api.fragment#stencil_op
-dEQP-GLES3.functional.negative_api.fragment#stencil_op_separate
-dEQP-GLES3.functional.negative_api.fragment#stencil_mask_separate
-dEQP-GLES3.functional.negative_api.fragment#blend_equation
-dEQP-GLES3.functional.negative_api.fragment#blend_equation_separate
-dEQP-GLES3.functional.negative_api.fragment#blend_func
-dEQP-GLES3.functional.negative_api.fragment#blend_func_separate
-dEQP-GLES3.functional.negative_api.fragment#cull_face
-dEQP-GLES3.functional.negative_api.fragment#front_face
-dEQP-GLES3.functional.negative_api.fragment#line_width
-dEQP-GLES3.functional.negative_api.fragment#gen_queries
-dEQP-GLES3.functional.negative_api.fragment#begin_query
-dEQP-GLES3.functional.negative_api.fragment#end_query
-dEQP-GLES3.functional.negative_api.fragment#delete_queries
-dEQP-GLES3.functional.negative_api.fragment#fence_sync
-dEQP-GLES3.functional.negative_api.fragment#wait_sync
-dEQP-GLES3.functional.negative_api.fragment#client_wait_sync
-dEQP-GLES3.functional.negative_api.fragment#delete_sync
-dEQP-GLES3.functional.negative_api.vertex_array#vertex_attribf
-dEQP-GLES3.functional.negative_api.vertex_array#vertex_attribfv
-dEQP-GLES3.functional.negative_api.vertex_array#vertex_attribi4
-dEQP-GLES3.functional.negative_api.vertex_array#vertex_attribi4v
-dEQP-GLES3.functional.negative_api.vertex_array#vertex_attrib_pointer
-dEQP-GLES3.functional.negative_api.vertex_array#vertex_attrib_i_pointer
-dEQP-GLES3.functional.negative_api.vertex_array#enable_vertex_attrib_array
-dEQP-GLES3.functional.negative_api.vertex_array#disable_vertex_attrib_array
-dEQP-GLES3.functional.negative_api.vertex_array#gen_vertex_arrays
-dEQP-GLES3.functional.negative_api.vertex_array#bind_vertex_array
-dEQP-GLES3.functional.negative_api.vertex_array#delete_vertex_arrays
-dEQP-GLES3.functional.negative_api.vertex_array#vertex_attrib_divisor
-dEQP-GLES3.functional.negative_api.vertex_array#draw_arrays
-dEQP-GLES3.functional.negative_api.vertex_array#draw_arrays_invalid_program
-dEQP-GLES3.functional.negative_api.vertex_array#draw_elements_invalid_program
-dEQP-GLES3.functional.negative_api.vertex_array#draw_arrays_instanced
-dEQP-GLES3.functional.negative_api.vertex_array#draw_arrays_instanced_invalid_program
-dEQP-GLES3.functional.negative_api.vertex_array#draw_elements_instanced_invalid_program
-dEQP-GLES3.functional.negative_api.vertex_array#draw_range_elements_invalid_program
-dEQP-GLES3.functional.negative_api.state#enable
-dEQP-GLES3.functional.negative_api.state#disable
-dEQP-GLES3.functional.negative_api.state#get_booleanv
-dEQP-GLES3.functional.negative_api.state#get_floatv
-dEQP-GLES3.functional.negative_api.state#get_integerv
-dEQP-GLES3.functional.negative_api.state#get_integer64v
-dEQP-GLES3.functional.negative_api.state#get_integeri_v
-dEQP-GLES3.functional.negative_api.state#get_integer64i_v
-dEQP-GLES3.functional.negative_api.state#get_string
-dEQP-GLES3.functional.negative_api.state#get_stringi
-dEQP-GLES3.functional.negative_api.state#get_attached_shaders
-dEQP-GLES3.functional.negative_api.state#get_shaderiv
-dEQP-GLES3.functional.negative_api.state#get_shader_info_log
-dEQP-GLES3.functional.negative_api.state#get_shader_precision_format
-dEQP-GLES3.functional.negative_api.state#get_shader_source
-dEQP-GLES3.functional.negative_api.state#get_programiv
-dEQP-GLES3.functional.negative_api.state#get_program_info_log
-dEQP-GLES3.functional.negative_api.state#get_tex_parameterfv
-dEQP-GLES3.functional.negative_api.state#get_tex_parameteriv
-dEQP-GLES3.functional.negative_api.state#get_uniformfv
-dEQP-GLES3.functional.negative_api.state#get_uniformiv
-dEQP-GLES3.functional.negative_api.state#get_uniformuiv
-dEQP-GLES3.functional.negative_api.state#get_active_uniform
-dEQP-GLES3.functional.negative_api.state#get_active_uniformsiv
-dEQP-GLES3.functional.negative_api.state#get_active_uniform_blockiv
-dEQP-GLES3.functional.negative_api.state#get_active_uniform_block_name
-dEQP-GLES3.functional.negative_api.state#get_active_attrib
-dEQP-GLES3.functional.negative_api.state#get_uniform_indices
-dEQP-GLES3.functional.negative_api.state#get_vertex_attribfv
-dEQP-GLES3.functional.negative_api.state#get_vertex_attribiv
-dEQP-GLES3.functional.negative_api.state#get_vertex_attribi_iv
-dEQP-GLES3.functional.negative_api.state#get_vertex_attribi_uiv
-dEQP-GLES3.functional.negative_api.state#get_vertex_attrib_pointerv
-dEQP-GLES3.functional.negative_api.state#get_frag_data_location
-dEQP-GLES3.functional.negative_api.state#get_buffer_parameteriv
-dEQP-GLES3.functional.negative_api.state#get_buffer_parameteri64v
-dEQP-GLES3.functional.negative_api.state#get_buffer_pointerv
-dEQP-GLES3.functional.negative_api.state#get_renderbuffer_parameteriv
-dEQP-GLES3.functional.negative_api.state#get_queryiv
-dEQP-GLES3.functional.negative_api.state#get_query_objectuiv
-dEQP-GLES3.functional.negative_api.state#get_synciv
-dEQP-GLES3.functional.negative_api.state#is_enabled
-dEQP-GLES3.functional.negative_api.state#hint
-dEQP-GLES3.functional.negative_api.state#is_buffer
-dEQP-GLES3.functional.negative_api.state#is_framebuffer
-dEQP-GLES3.functional.negative_api.state#is_program
-dEQP-GLES3.functional.negative_api.state#is_renderbuffer
-dEQP-GLES3.functional.negative_api.state#is_shader
-dEQP-GLES3.functional.negative_api.state#is_texture
-dEQP-GLES3.functional.negative_api.state#is_query
-dEQP-GLES3.functional.negative_api.state#is_sampler
-dEQP-GLES3.functional.negative_api.state#is_sync
-dEQP-GLES3.functional.negative_api.state#is_transform_feedback
-dEQP-GLES3.functional.negative_api.state#is_vertex_array
-dEQP-GLES3.functional.multisample.default_framebuffer#num_samples_polygon
-dEQP-GLES3.functional.multisample.default_framebuffer#num_samples_line
-dEQP-GLES3.functional.multisample.default_framebuffer#common_edge_small_quads
-dEQP-GLES3.functional.multisample.default_framebuffer#common_edge_big_quad
-dEQP-GLES3.functional.multisample.default_framebuffer#common_edge_viewport_quad
-dEQP-GLES3.functional.multisample.default_framebuffer#depth
-dEQP-GLES3.functional.multisample.default_framebuffer#sample_coverage_invert
-dEQP-GLES3.functional.multisample.default_framebuffer#proportionality_alpha_to_coverage
-dEQP-GLES3.functional.multisample.default_framebuffer#proportionality_sample_coverage
-dEQP-GLES3.functional.multisample.default_framebuffer#proportionality_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.default_framebuffer#constancy_alpha_to_coverage
-dEQP-GLES3.functional.multisample.default_framebuffer#constancy_sample_coverage
-dEQP-GLES3.functional.multisample.default_framebuffer#constancy_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.default_framebuffer#constancy_both
-dEQP-GLES3.functional.multisample.default_framebuffer#constancy_both_inverted
-dEQP-GLES3.functional.multisample.fbo_4_samples#num_samples_polygon
-dEQP-GLES3.functional.multisample.fbo_4_samples#num_samples_line
-dEQP-GLES3.functional.multisample.fbo_4_samples#common_edge_small_quads
-dEQP-GLES3.functional.multisample.fbo_4_samples#common_edge_big_quad
-dEQP-GLES3.functional.multisample.fbo_4_samples#common_edge_viewport_quad
-dEQP-GLES3.functional.multisample.fbo_4_samples#depth
-dEQP-GLES3.functional.multisample.fbo_4_samples#sample_coverage_invert
-dEQP-GLES3.functional.multisample.fbo_4_samples#proportionality_alpha_to_coverage
-dEQP-GLES3.functional.multisample.fbo_4_samples#proportionality_sample_coverage
-dEQP-GLES3.functional.multisample.fbo_4_samples#proportionality_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.fbo_4_samples#constancy_alpha_to_coverage
-dEQP-GLES3.functional.multisample.fbo_4_samples#constancy_sample_coverage
-dEQP-GLES3.functional.multisample.fbo_4_samples#constancy_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.fbo_4_samples#constancy_both
-dEQP-GLES3.functional.multisample.fbo_4_samples#constancy_both_inverted
-dEQP-GLES3.functional.multisample.fbo_8_samples#num_samples_polygon
-dEQP-GLES3.functional.multisample.fbo_8_samples#num_samples_line
-dEQP-GLES3.functional.multisample.fbo_8_samples#common_edge_small_quads
-dEQP-GLES3.functional.multisample.fbo_8_samples#common_edge_big_quad
-dEQP-GLES3.functional.multisample.fbo_8_samples#common_edge_viewport_quad
-dEQP-GLES3.functional.multisample.fbo_8_samples#depth
-dEQP-GLES3.functional.multisample.fbo_8_samples#stencil
-dEQP-GLES3.functional.multisample.fbo_8_samples#sample_coverage_invert
-dEQP-GLES3.functional.multisample.fbo_8_samples#proportionality_alpha_to_coverage
-dEQP-GLES3.functional.multisample.fbo_8_samples#proportionality_sample_coverage
-dEQP-GLES3.functional.multisample.fbo_8_samples#proportionality_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.fbo_8_samples#constancy_alpha_to_coverage
-dEQP-GLES3.functional.multisample.fbo_8_samples#constancy_sample_coverage
-dEQP-GLES3.functional.multisample.fbo_8_samples#constancy_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.fbo_8_samples#constancy_both
-dEQP-GLES3.functional.multisample.fbo_8_samples#constancy_both_inverted
-dEQP-GLES3.functional.multisample.fbo_max_samples#num_samples_polygon
-dEQP-GLES3.functional.multisample.fbo_max_samples#num_samples_line
-dEQP-GLES3.functional.multisample.fbo_max_samples#common_edge_small_quads
-dEQP-GLES3.functional.multisample.fbo_max_samples#common_edge_big_quad
-dEQP-GLES3.functional.multisample.fbo_max_samples#common_edge_viewport_quad
-dEQP-GLES3.functional.multisample.fbo_max_samples#depth
-dEQP-GLES3.functional.multisample.fbo_max_samples#sample_coverage_invert
-dEQP-GLES3.functional.multisample.fbo_max_samples#proportionality_alpha_to_coverage
-dEQP-GLES3.functional.multisample.fbo_max_samples#proportionality_sample_coverage
-dEQP-GLES3.functional.multisample.fbo_max_samples#proportionality_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.fbo_max_samples#constancy_alpha_to_coverage
-dEQP-GLES3.functional.multisample.fbo_max_samples#constancy_sample_coverage
-dEQP-GLES3.functional.multisample.fbo_max_samples#constancy_sample_coverage_inverted
-dEQP-GLES3.functional.multisample.fbo_max_samples#constancy_both
-dEQP-GLES3.functional.multisample.fbo_max_samples#constancy_both_inverted
-dEQP-GLES3.functional.read_pixels.alignment#rgba_ubyte_1
-dEQP-GLES3.functional.read_pixels.alignment#rgba_ubyte_2
-dEQP-GLES3.functional.read_pixels.alignment#rgba_ubyte_4
-dEQP-GLES3.functional.read_pixels.alignment#rgba_ubyte_8
-dEQP-GLES3.functional.read_pixels.alignment#rgba_int_1
-dEQP-GLES3.functional.read_pixels.alignment#rgba_int_2
-dEQP-GLES3.functional.read_pixels.alignment#rgba_int_4
-dEQP-GLES3.functional.read_pixels.alignment#rgba_int_8
-dEQP-GLES3.functional.read_pixels.alignment#rgba_uint_1
-dEQP-GLES3.functional.read_pixels.alignment#rgba_uint_2
-dEQP-GLES3.functional.read_pixels.alignment#rgba_uint_4
-dEQP-GLES3.functional.read_pixels.alignment#rgba_uint_8
-dEQP-GLES3.functional.read_pixels.alignment#choose_1
-dEQP-GLES3.functional.read_pixels.alignment#choose_2
-dEQP-GLES3.functional.read_pixels.alignment#choose_4
-dEQP-GLES3.functional.read_pixels.alignment#choose_8
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_ubyte_17
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_ubyte_19
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_ubyte_23
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_ubyte_29
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_int_17
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_int_19
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_int_23
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_int_29
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_uint_17
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_uint_19
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_uint_23
-dEQP-GLES3.functional.read_pixels.rowlength#rgba_uint_29
-dEQP-GLES3.functional.read_pixels.rowlength#choose_17
-dEQP-GLES3.functional.read_pixels.rowlength#choose_19
-dEQP-GLES3.functional.read_pixels.rowlength#choose_23
-dEQP-GLES3.functional.read_pixels.rowlength#choose_29
-dEQP-GLES3.functional.read_pixels.skip#rgba_ubyte_0_3
-dEQP-GLES3.functional.read_pixels.skip#rgba_ubyte_3_0
-dEQP-GLES3.functional.read_pixels.skip#rgba_ubyte_3_3
-dEQP-GLES3.functional.read_pixels.skip#rgba_ubyte_3_5
-dEQP-GLES3.functional.read_pixels.skip#rgba_int_0_3
-dEQP-GLES3.functional.read_pixels.skip#rgba_int_3_0
-dEQP-GLES3.functional.read_pixels.skip#rgba_int_3_3
-dEQP-GLES3.functional.read_pixels.skip#rgba_int_3_5
-dEQP-GLES3.functional.read_pixels.skip#rgba_uint_0_3
-dEQP-GLES3.functional.read_pixels.skip#rgba_uint_3_0
-dEQP-GLES3.functional.read_pixels.skip#rgba_uint_3_3
-dEQP-GLES3.functional.read_pixels.skip#rgba_uint_3_5
-dEQP-GLES3.functional.read_pixels.skip#choose_0_3
-dEQP-GLES3.functional.read_pixels.skip#choose_3_0
-dEQP-GLES3.functional.read_pixels.skip#choose_3_3
-dEQP-GLES3.functional.read_pixels.skip#choose_3_5
-dEQP-GLES3.functional.dither.disabled#gradient_white
-dEQP-GLES3.functional.dither.disabled#gradient_red
-dEQP-GLES3.functional.dither.disabled#gradient_green
-dEQP-GLES3.functional.dither.disabled#gradient_blue
-dEQP-GLES3.functional.dither.disabled#gradient_alpha
-dEQP-GLES3.functional.dither.disabled#unicolored_quad_white
-dEQP-GLES3.functional.dither.disabled#unicolored_quad_red
-dEQP-GLES3.functional.dither.disabled#unicolored_quad_green
-dEQP-GLES3.functional.dither.disabled#unicolored_quad_blue
-dEQP-GLES3.functional.dither.disabled#unicolored_quad_alpha
-dEQP-GLES3.functional.dither.enabled#gradient_white
-dEQP-GLES3.functional.dither.enabled#gradient_red
-dEQP-GLES3.functional.dither.enabled#gradient_green
-dEQP-GLES3.functional.dither.enabled#gradient_blue
-dEQP-GLES3.functional.dither.enabled#gradient_alpha
-dEQP-GLES3.functional.dither.enabled#unicolored_quad_white
-dEQP-GLES3.functional.dither.enabled#unicolored_quad_red
-dEQP-GLES3.functional.dither.enabled#unicolored_quad_green
-dEQP-GLES3.functional.dither.enabled#unicolored_quad_blue
-dEQP-GLES3.functional.dither.enabled#unicolored_quad_alpha
-dEQP-GLES3.functional.state_query.boolean#primitive_restart_fixed_index_isenabled
-dEQP-GLES3.functional.state_query.boolean#primitive_restart_fixed_index_getboolean
-dEQP-GLES3.functional.state_query.boolean#primitive_restart_fixed_index_getinteger
-dEQP-GLES3.functional.state_query.boolean#primitive_restart_fixed_index_getinteger64
-dEQP-GLES3.functional.state_query.boolean#primitive_restart_fixed_index_getfloat
-dEQP-GLES3.functional.state_query.boolean#cull_face_isenabled
-dEQP-GLES3.functional.state_query.boolean#cull_face_getboolean
-dEQP-GLES3.functional.state_query.boolean#cull_face_getinteger
-dEQP-GLES3.functional.state_query.boolean#cull_face_getinteger64
-dEQP-GLES3.functional.state_query.boolean#cull_face_getfloat
-dEQP-GLES3.functional.state_query.boolean#polygon_offset_fill_isenabled
-dEQP-GLES3.functional.state_query.boolean#polygon_offset_fill_getboolean
-dEQP-GLES3.functional.state_query.boolean#polygon_offset_fill_getinteger
-dEQP-GLES3.functional.state_query.boolean#polygon_offset_fill_getinteger64
-dEQP-GLES3.functional.state_query.boolean#polygon_offset_fill_getfloat
-dEQP-GLES3.functional.state_query.boolean#sample_alpha_to_coverage_isenabled
-dEQP-GLES3.functional.state_query.boolean#sample_alpha_to_coverage_getboolean
-dEQP-GLES3.functional.state_query.boolean#sample_alpha_to_coverage_getinteger
-dEQP-GLES3.functional.state_query.boolean#sample_alpha_to_coverage_getinteger64
-dEQP-GLES3.functional.state_query.boolean#sample_alpha_to_coverage_getfloat
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_isenabled
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_getboolean
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_getinteger
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_getinteger64
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_getfloat
-dEQP-GLES3.functional.state_query.boolean#scissor_test_isenabled
-dEQP-GLES3.functional.state_query.boolean#scissor_test_getboolean
-dEQP-GLES3.functional.state_query.boolean#scissor_test_getinteger
-dEQP-GLES3.functional.state_query.boolean#scissor_test_getinteger64
-dEQP-GLES3.functional.state_query.boolean#scissor_test_getfloat
-dEQP-GLES3.functional.state_query.boolean#stencil_test_isenabled
-dEQP-GLES3.functional.state_query.boolean#stencil_test_getboolean
-dEQP-GLES3.functional.state_query.boolean#stencil_test_getinteger
-dEQP-GLES3.functional.state_query.boolean#stencil_test_getinteger64
-dEQP-GLES3.functional.state_query.boolean#stencil_test_getfloat
-dEQP-GLES3.functional.state_query.boolean#depth_test_isenabled
-dEQP-GLES3.functional.state_query.boolean#depth_test_getboolean
-dEQP-GLES3.functional.state_query.boolean#depth_test_getinteger
-dEQP-GLES3.functional.state_query.boolean#depth_test_getinteger64
-dEQP-GLES3.functional.state_query.boolean#depth_test_getfloat
-dEQP-GLES3.functional.state_query.boolean#blend_isenabled
-dEQP-GLES3.functional.state_query.boolean#blend_getboolean
-dEQP-GLES3.functional.state_query.boolean#blend_getinteger
-dEQP-GLES3.functional.state_query.boolean#blend_getinteger64
-dEQP-GLES3.functional.state_query.boolean#blend_getfloat
-dEQP-GLES3.functional.state_query.boolean#dither_isenabled
-dEQP-GLES3.functional.state_query.boolean#dither_getboolean
-dEQP-GLES3.functional.state_query.boolean#dither_getinteger
-dEQP-GLES3.functional.state_query.boolean#dither_getinteger64
-dEQP-GLES3.functional.state_query.boolean#dither_getfloat
-dEQP-GLES3.functional.state_query.boolean#color_writemask_getboolean
-dEQP-GLES3.functional.state_query.boolean#color_writemask_getinteger
-dEQP-GLES3.functional.state_query.boolean#color_writemask_getinteger64
-dEQP-GLES3.functional.state_query.boolean#color_writemask_getfloat
-dEQP-GLES3.functional.state_query.boolean#depth_writemask_getboolean
-dEQP-GLES3.functional.state_query.boolean#depth_writemask_getinteger
-dEQP-GLES3.functional.state_query.boolean#depth_writemask_getinteger64
-dEQP-GLES3.functional.state_query.boolean#depth_writemask_getfloat
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_invert_getboolean
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_invert_getinteger
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_invert_getinteger64
-dEQP-GLES3.functional.state_query.boolean#sample_coverage_invert_getfloat
-dEQP-GLES3.functional.state_query.boolean#shader_compiler_getboolean
-dEQP-GLES3.functional.state_query.boolean#shader_compiler_getinteger
-dEQP-GLES3.functional.state_query.boolean#shader_compiler_getinteger64
-dEQP-GLES3.functional.state_query.boolean#shader_compiler_getfloat
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_active_initial_getboolean
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_active_initial_getinteger
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_active_initial_getinteger64
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_active_initial_getfloat
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_paused_initial_getboolean
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_paused_initial_getinteger
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_paused_initial_getinteger64
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_paused_initial_getfloat
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_getboolean
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_getinteger
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_getinteger64
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_getfloat
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_implicit_resume_getboolean
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_implicit_resume_getinteger
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_implicit_resume_getinteger64
-dEQP-GLES3.functional.state_query.boolean#transform_feedback_implicit_resume_getfloat
-dEQP-GLES3.functional.state_query.integers#subpixel_bits_getboolean
-dEQP-GLES3.functional.state_query.integers#subpixel_bits_getinteger64
-dEQP-GLES3.functional.state_query.integers#subpixel_bits_getfloat
-dEQP-GLES3.functional.state_query.integers#max_3d_texture_size_getboolean
-dEQP-GLES3.functional.state_query.integers#max_3d_texture_size_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_3d_texture_size_getfloat
-dEQP-GLES3.functional.state_query.integers#max_texture_size_getboolean
-dEQP-GLES3.functional.state_query.integers#max_texture_size_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_texture_size_getfloat
-dEQP-GLES3.functional.state_query.integers#max_array_texture_layers_getboolean
-dEQP-GLES3.functional.state_query.integers#max_array_texture_layers_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_array_texture_layers_getfloat
-dEQP-GLES3.functional.state_query.integers#max_cube_map_texture_size_getboolean
-dEQP-GLES3.functional.state_query.integers#max_cube_map_texture_size_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_cube_map_texture_size_getfloat
-dEQP-GLES3.functional.state_query.integers#max_renderbuffer_size_getboolean
-dEQP-GLES3.functional.state_query.integers#max_renderbuffer_size_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_renderbuffer_size_getfloat
-dEQP-GLES3.functional.state_query.integers#max_draw_buffers_getboolean
-dEQP-GLES3.functional.state_query.integers#max_draw_buffers_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_draw_buffers_getfloat
-dEQP-GLES3.functional.state_query.integers#max_color_attachments_getboolean
-dEQP-GLES3.functional.state_query.integers#max_color_attachments_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_color_attachments_getfloat
-dEQP-GLES3.functional.state_query.integers#max_elements_indices_getboolean
-dEQP-GLES3.functional.state_query.integers#max_elements_indices_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_elements_indices_getfloat
-dEQP-GLES3.functional.state_query.integers#max_elements_vertices_getboolean
-dEQP-GLES3.functional.state_query.integers#max_elements_vertices_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_elements_vertices_getfloat
-dEQP-GLES3.functional.state_query.integers#num_extensions_getboolean
-dEQP-GLES3.functional.state_query.integers#num_extensions_getinteger64
-dEQP-GLES3.functional.state_query.integers#num_extensions_getfloat
-dEQP-GLES3.functional.state_query.integers#major_version_getboolean
-dEQP-GLES3.functional.state_query.integers#major_version_getinteger64
-dEQP-GLES3.functional.state_query.integers#major_version_getfloat
-dEQP-GLES3.functional.state_query.integers#minor_version_getboolean
-dEQP-GLES3.functional.state_query.integers#minor_version_getinteger64
-dEQP-GLES3.functional.state_query.integers#minor_version_getfloat
-dEQP-GLES3.functional.state_query.integers#max_vertex_attribs_getboolean
-dEQP-GLES3.functional.state_query.integers#max_vertex_attribs_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_vertex_attribs_getfloat
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_components_getboolean
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_components_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_components_getfloat
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_vectors_getboolean
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_vectors_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_vectors_getfloat
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_blocks_getboolean
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_blocks_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_vertex_uniform_blocks_getfloat
-dEQP-GLES3.functional.state_query.integers#max_vertex_output_components_getboolean
-dEQP-GLES3.functional.state_query.integers#max_vertex_output_components_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_vertex_output_components_getfloat
-dEQP-GLES3.functional.state_query.integers#max_vertex_texture_image_units_getboolean
-dEQP-GLES3.functional.state_query.integers#max_vertex_texture_image_units_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_vertex_texture_image_units_getfloat
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_components_getboolean
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_components_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_components_getfloat
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_vectors_getboolean
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_vectors_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_vectors_getfloat
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_blocks_getboolean
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_blocks_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_fragment_uniform_blocks_getfloat
-dEQP-GLES3.functional.state_query.integers#max_fragment_input_components_getboolean
-dEQP-GLES3.functional.state_query.integers#max_fragment_input_components_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_fragment_input_components_getfloat
-dEQP-GLES3.functional.state_query.integers#max_texture_image_units_getboolean
-dEQP-GLES3.functional.state_query.integers#max_texture_image_units_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_texture_image_units_getfloat
-dEQP-GLES3.functional.state_query.integers#max_program_texel_offset_getboolean
-dEQP-GLES3.functional.state_query.integers#max_program_texel_offset_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_program_texel_offset_getfloat
-dEQP-GLES3.functional.state_query.integers#max_uniform_buffer_bindings_getboolean
-dEQP-GLES3.functional.state_query.integers#max_uniform_buffer_bindings_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_uniform_buffer_bindings_getfloat
-dEQP-GLES3.functional.state_query.integers#max_combined_uniform_blocks_getboolean
-dEQP-GLES3.functional.state_query.integers#max_combined_uniform_blocks_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_combined_uniform_blocks_getfloat
-dEQP-GLES3.functional.state_query.integers#max_varying_components_getboolean
-dEQP-GLES3.functional.state_query.integers#max_varying_components_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_varying_components_getfloat
-dEQP-GLES3.functional.state_query.integers#max_varying_vectors_getboolean
-dEQP-GLES3.functional.state_query.integers#max_varying_vectors_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_varying_vectors_getfloat
-dEQP-GLES3.functional.state_query.integers#max_combined_texture_image_units_getboolean
-dEQP-GLES3.functional.state_query.integers#max_combined_texture_image_units_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_combined_texture_image_units_getfloat
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_interleaved_components_getboolean
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_interleaved_components_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_interleaved_components_getfloat
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_separate_attribs_getboolean
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_separate_attribs_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_separate_attribs_getfloat
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_separate_components_getboolean
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_separate_components_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_transform_feedback_separate_components_getfloat
-dEQP-GLES3.functional.state_query.integers#max_samples_getboolean
-dEQP-GLES3.functional.state_query.integers#max_samples_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_samples_getfloat
-dEQP-GLES3.functional.state_query.integers#red_bits_getboolean
-dEQP-GLES3.functional.state_query.integers#red_bits_getinteger64
-dEQP-GLES3.functional.state_query.integers#red_bits_getfloat
-dEQP-GLES3.functional.state_query.integers#green_bits_getboolean
-dEQP-GLES3.functional.state_query.integers#green_bits_getinteger64
-dEQP-GLES3.functional.state_query.integers#green_bits_getfloat
-dEQP-GLES3.functional.state_query.integers#blue_bits_getboolean
-dEQP-GLES3.functional.state_query.integers#blue_bits_getinteger64
-dEQP-GLES3.functional.state_query.integers#blue_bits_getfloat
-dEQP-GLES3.functional.state_query.integers#alpha_bits_getboolean
-dEQP-GLES3.functional.state_query.integers#alpha_bits_getinteger64
-dEQP-GLES3.functional.state_query.integers#alpha_bits_getfloat
-dEQP-GLES3.functional.state_query.integers#depth_bits_getboolean
-dEQP-GLES3.functional.state_query.integers#depth_bits_getinteger64
-dEQP-GLES3.functional.state_query.integers#depth_bits_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_bits_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_bits_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_bits_getfloat
-dEQP-GLES3.functional.state_query.integers#min_program_texel_offset_getboolean
-dEQP-GLES3.functional.state_query.integers#min_program_texel_offset_getinteger64
-dEQP-GLES3.functional.state_query.integers#min_program_texel_offset_getfloat
-dEQP-GLES3.functional.state_query.integers#uniform_buffer_offset_alignment_getboolean
-dEQP-GLES3.functional.state_query.integers#uniform_buffer_offset_alignment_getinteger64
-dEQP-GLES3.functional.state_query.integers#uniform_buffer_offset_alignment_getfloat
-dEQP-GLES3.functional.state_query.integers#sample_buffers_getboolean
-dEQP-GLES3.functional.state_query.integers#sample_buffers_getinteger64
-dEQP-GLES3.functional.state_query.integers#sample_buffers_getfloat
-dEQP-GLES3.functional.state_query.integers#samples_getboolean
-dEQP-GLES3.functional.state_query.integers#samples_getinteger
-dEQP-GLES3.functional.state_query.integers#samples_getinteger64
-dEQP-GLES3.functional.state_query.integers#samples_getfloat
-dEQP-GLES3.functional.state_query.integers#generate_mipmap_hint_getboolean
-dEQP-GLES3.functional.state_query.integers#generate_mipmap_hint_getinteger
-dEQP-GLES3.functional.state_query.integers#generate_mipmap_hint_getinteger64
-dEQP-GLES3.functional.state_query.integers#generate_mipmap_hint_getfloat
-dEQP-GLES3.functional.state_query.integers#fragment_shader_derivative_hint_getboolean
-dEQP-GLES3.functional.state_query.integers#fragment_shader_derivative_hint_getinteger
-dEQP-GLES3.functional.state_query.integers#fragment_shader_derivative_hint_getinteger64
-dEQP-GLES3.functional.state_query.integers#fragment_shader_derivative_hint_getfloat
-dEQP-GLES3.functional.state_query.integers#depth_func_getboolean
-dEQP-GLES3.functional.state_query.integers#depth_func_getinteger
-dEQP-GLES3.functional.state_query.integers#depth_func_getinteger64
-dEQP-GLES3.functional.state_query.integers#depth_func_getfloat
-dEQP-GLES3.functional.state_query.integers#cull_face_mode_getboolean
-dEQP-GLES3.functional.state_query.integers#cull_face_mode_getinteger
-dEQP-GLES3.functional.state_query.integers#cull_face_mode_getinteger64
-dEQP-GLES3.functional.state_query.integers#cull_face_mode_getfloat
-dEQP-GLES3.functional.state_query.integers#front_face_mode_getboolean
-dEQP-GLES3.functional.state_query.integers#front_face_mode_getinteger
-dEQP-GLES3.functional.state_query.integers#front_face_mode_getinteger64
-dEQP-GLES3.functional.state_query.integers#front_face_mode_getfloat
-dEQP-GLES3.functional.state_query.integers#viewport_getboolean
-dEQP-GLES3.functional.state_query.integers#viewport_getinteger
-dEQP-GLES3.functional.state_query.integers#viewport_getinteger64
-dEQP-GLES3.functional.state_query.integers#viewport_getfloat
-dEQP-GLES3.functional.state_query.integers#scissor_box_getboolean
-dEQP-GLES3.functional.state_query.integers#scissor_box_getinteger
-dEQP-GLES3.functional.state_query.integers#scissor_box_getinteger64
-dEQP-GLES3.functional.state_query.integers#scissor_box_getfloat
-dEQP-GLES3.functional.state_query.integers#max_viewport_dims_getboolean
-dEQP-GLES3.functional.state_query.integers#max_viewport_dims_getinteger
-dEQP-GLES3.functional.state_query.integers#max_viewport_dims_getinteger64
-dEQP-GLES3.functional.state_query.integers#max_viewport_dims_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_ref_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_ref_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_ref_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_ref_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_ref_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_ref_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_fail_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_fail_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_fail_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_fail_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_fail_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_fail_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_depth_fail_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_fail_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_depth_pass_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_depth_pass_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_func_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_func_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_func_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_func_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_func_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_func_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_writemask_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_both_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_both_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_both_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_writemask_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#unpack_image_height_getboolean
-dEQP-GLES3.functional.state_query.integers#unpack_image_height_getinteger
-dEQP-GLES3.functional.state_query.integers#unpack_image_height_getinteger64
-dEQP-GLES3.functional.state_query.integers#unpack_image_height_getfloat
-dEQP-GLES3.functional.state_query.integers#unpack_skip_images_getboolean
-dEQP-GLES3.functional.state_query.integers#unpack_skip_images_getinteger
-dEQP-GLES3.functional.state_query.integers#unpack_skip_images_getinteger64
-dEQP-GLES3.functional.state_query.integers#unpack_skip_images_getfloat
-dEQP-GLES3.functional.state_query.integers#unpack_row_length_getboolean
-dEQP-GLES3.functional.state_query.integers#unpack_row_length_getinteger
-dEQP-GLES3.functional.state_query.integers#unpack_row_length_getinteger64
-dEQP-GLES3.functional.state_query.integers#unpack_row_length_getfloat
-dEQP-GLES3.functional.state_query.integers#unpack_skip_rows_getboolean
-dEQP-GLES3.functional.state_query.integers#unpack_skip_rows_getinteger
-dEQP-GLES3.functional.state_query.integers#unpack_skip_rows_getinteger64
-dEQP-GLES3.functional.state_query.integers#unpack_skip_rows_getfloat
-dEQP-GLES3.functional.state_query.integers#unpack_skip_pixels_getboolean
-dEQP-GLES3.functional.state_query.integers#unpack_skip_pixels_getinteger
-dEQP-GLES3.functional.state_query.integers#unpack_skip_pixels_getinteger64
-dEQP-GLES3.functional.state_query.integers#unpack_skip_pixels_getfloat
-dEQP-GLES3.functional.state_query.integers#pack_row_length_getboolean
-dEQP-GLES3.functional.state_query.integers#pack_row_length_getinteger
-dEQP-GLES3.functional.state_query.integers#pack_row_length_getinteger64
-dEQP-GLES3.functional.state_query.integers#pack_row_length_getfloat
-dEQP-GLES3.functional.state_query.integers#pack_skip_rows_getboolean
-dEQP-GLES3.functional.state_query.integers#pack_skip_rows_getinteger
-dEQP-GLES3.functional.state_query.integers#pack_skip_rows_getinteger64
-dEQP-GLES3.functional.state_query.integers#pack_skip_rows_getfloat
-dEQP-GLES3.functional.state_query.integers#pack_skip_pixels_getboolean
-dEQP-GLES3.functional.state_query.integers#pack_skip_pixels_getinteger
-dEQP-GLES3.functional.state_query.integers#pack_skip_pixels_getinteger64
-dEQP-GLES3.functional.state_query.integers#pack_skip_pixels_getfloat
-dEQP-GLES3.functional.state_query.integers#unpack_alignment_getboolean
-dEQP-GLES3.functional.state_query.integers#unpack_alignment_getinteger
-dEQP-GLES3.functional.state_query.integers#unpack_alignment_getinteger64
-dEQP-GLES3.functional.state_query.integers#unpack_alignment_getfloat
-dEQP-GLES3.functional.state_query.integers#pack_alignment_getboolean
-dEQP-GLES3.functional.state_query.integers#pack_alignment_getinteger
-dEQP-GLES3.functional.state_query.integers#pack_alignment_getinteger64
-dEQP-GLES3.functional.state_query.integers#pack_alignment_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_src_rgb_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_src_alpha_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_dst_rgb_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_dst_alpha_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_equation_rgb_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_getfloat
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_separate_getboolean
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_separate_getinteger
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_separate_getinteger64
-dEQP-GLES3.functional.state_query.integers#blend_equation_alpha_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#compressed_texture_formats_getboolean
-dEQP-GLES3.functional.state_query.integers#compressed_texture_formats_getinteger
-dEQP-GLES3.functional.state_query.integers#compressed_texture_formats_getinteger64
-dEQP-GLES3.functional.state_query.integers#compressed_texture_formats_getfloat
-dEQP-GLES3.functional.state_query.integers#program_binary_formats_getboolean
-dEQP-GLES3.functional.state_query.integers#program_binary_formats_getinteger
-dEQP-GLES3.functional.state_query.integers#program_binary_formats_getinteger64
-dEQP-GLES3.functional.state_query.integers#program_binary_formats_getfloat
-dEQP-GLES3.functional.state_query.integers#shader_binary_formats_getboolean
-dEQP-GLES3.functional.state_query.integers#shader_binary_formats_getinteger
-dEQP-GLES3.functional.state_query.integers#shader_binary_formats_getinteger64
-dEQP-GLES3.functional.state_query.integers#shader_binary_formats_getfloat
-dEQP-GLES3.functional.state_query.integers#array_buffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#array_buffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#array_buffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#array_buffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#pixel_pack_buffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#pixel_pack_buffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#pixel_pack_buffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#pixel_pack_buffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#pixel_unpack_buffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#pixel_unpack_buffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#pixel_unpack_buffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#pixel_unpack_buffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#copy_read_buffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#copy_read_buffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#copy_read_buffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#copy_read_buffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#copy_write_buffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#copy_write_buffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#copy_write_buffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#copy_write_buffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#element_array_buffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#element_array_buffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#element_array_buffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#element_array_buffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#transform_feedback_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#transform_feedback_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#transform_feedback_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#transform_feedback_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#current_program_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#current_program_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#current_program_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#current_program_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#vertex_array_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#vertex_array_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#vertex_array_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#vertex_array_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_clear_value_getboolean
-dEQP-GLES3.functional.state_query.integers#stencil_clear_value_getinteger
-dEQP-GLES3.functional.state_query.integers#stencil_clear_value_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_clear_value_getfloat
-dEQP-GLES3.functional.state_query.integers#active_texture_getboolean
-dEQP-GLES3.functional.state_query.integers#active_texture_getinteger
-dEQP-GLES3.functional.state_query.integers#active_texture_getinteger64
-dEQP-GLES3.functional.state_query.integers#active_texture_getfloat
-dEQP-GLES3.functional.state_query.integers#renderbuffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#renderbuffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#renderbuffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#renderbuffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#sampler_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#sampler_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#sampler_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#sampler_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_getboolean
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_getinteger
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_getinteger64
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_getfloat
-dEQP-GLES3.functional.state_query.integers#texture_binding_3d_getboolean
-dEQP-GLES3.functional.state_query.integers#texture_binding_3d_getinteger
-dEQP-GLES3.functional.state_query.integers#texture_binding_3d_getinteger64
-dEQP-GLES3.functional.state_query.integers#texture_binding_3d_getfloat
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_array_getboolean
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_array_getinteger
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_array_getinteger64
-dEQP-GLES3.functional.state_query.integers#texture_binding_2d_array_getfloat
-dEQP-GLES3.functional.state_query.integers#texture_binding_cube_map_getboolean
-dEQP-GLES3.functional.state_query.integers#texture_binding_cube_map_getinteger
-dEQP-GLES3.functional.state_query.integers#texture_binding_cube_map_getinteger64
-dEQP-GLES3.functional.state_query.integers#texture_binding_cube_map_getfloat
-dEQP-GLES3.functional.state_query.integers#framebuffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#framebuffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#framebuffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.integers#framebuffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#implementation_color_read_getboolean
-dEQP-GLES3.functional.state_query.integers#implementation_color_read_getinteger
-dEQP-GLES3.functional.state_query.integers#implementation_color_read_getinteger64
-dEQP-GLES3.functional.state_query.integers#implementation_color_read_getfloat
-dEQP-GLES3.functional.state_query.integers#read_buffer_getboolean
-dEQP-GLES3.functional.state_query.integers#read_buffer_getinteger
-dEQP-GLES3.functional.state_query.integers#read_buffer_getinteger64
-dEQP-GLES3.functional.state_query.integers#read_buffer_getfloat
-dEQP-GLES3.functional.state_query.integers64#max_element_index_getboolean
-dEQP-GLES3.functional.state_query.integers64#max_element_index_getinteger
-dEQP-GLES3.functional.state_query.integers64#max_element_index_getfloat
-dEQP-GLES3.functional.state_query.integers64#max_server_wait_timeout_getboolean
-dEQP-GLES3.functional.state_query.integers64#max_server_wait_timeout_getinteger
-dEQP-GLES3.functional.state_query.integers64#max_uniform_block_size_getboolean
-dEQP-GLES3.functional.state_query.integers64#max_uniform_block_size_getinteger
-dEQP-GLES3.functional.state_query.integers64#max_uniform_block_size_getfloat
-dEQP-GLES3.functional.state_query.integers64#max_combined_vertex_uniform_components_getboolean
-dEQP-GLES3.functional.state_query.integers64#max_combined_vertex_uniform_components_getinteger
-dEQP-GLES3.functional.state_query.integers64#max_combined_vertex_uniform_components_getfloat
-dEQP-GLES3.functional.state_query.integers64#max_combined_fragment_uniform_components_getboolean
-dEQP-GLES3.functional.state_query.integers64#max_combined_fragment_uniform_components_getinteger
-dEQP-GLES3.functional.state_query.integers64#max_combined_fragment_uniform_components_getfloat
-dEQP-GLES3.functional.state_query.floats#depth_range_getboolean
-dEQP-GLES3.functional.state_query.floats#depth_range_getfloat
-dEQP-GLES3.functional.state_query.floats#line_width_getboolean
-dEQP-GLES3.functional.state_query.floats#line_width_getfloat
-dEQP-GLES3.functional.state_query.floats#polygon_offset_factor_getfloat
-dEQP-GLES3.functional.state_query.floats#polygon_offset_units_getfloat
-dEQP-GLES3.functional.state_query.floats#sample_coverage_value_getboolean
-dEQP-GLES3.functional.state_query.floats#blend_color_getboolean
-dEQP-GLES3.functional.state_query.floats#blend_color_getfloat
-dEQP-GLES3.functional.state_query.floats#color_clear_value_getboolean
-dEQP-GLES3.functional.state_query.floats#color_clear_value_getfloat
-dEQP-GLES3.functional.state_query.floats#depth_clear_value_getboolean
-dEQP-GLES3.functional.state_query.floats#depth_clear_value_getfloat
-dEQP-GLES3.functional.state_query.floats#max_texture_lod_bias_getboolean
-dEQP-GLES3.functional.state_query.floats#max_texture_lod_bias_getinteger
-dEQP-GLES3.functional.state_query.floats#max_texture_lod_bias_getinteger64
-dEQP-GLES3.functional.state_query.floats#max_texture_lod_bias_getfloat
-dEQP-GLES3.functional.state_query.floats#aliased_point_size_range_getboolean
-dEQP-GLES3.functional.state_query.floats#aliased_point_size_range_getinteger
-dEQP-GLES3.functional.state_query.floats#aliased_point_size_range_getinteger64
-dEQP-GLES3.functional.state_query.floats#aliased_point_size_range_getfloat
-dEQP-GLES3.functional.state_query.floats#aliased_line_width_range_getboolean
-dEQP-GLES3.functional.state_query.floats#aliased_line_width_range_getinteger
-dEQP-GLES3.functional.state_query.floats#aliased_line_width_range_getinteger64
-dEQP-GLES3.functional.state_query.floats#aliased_line_width_range_getfloat
-dEQP-GLES3.functional.state_query.indexed#transform_feedback_buffer_binding
-dEQP-GLES3.functional.state_query.indexed#transform_feedback_buffer_start_size
-dEQP-GLES3.functional.state_query.indexed#uniform_buffer_binding
-dEQP-GLES3.functional.state_query.indexed#uniform_buffer_start_size
-dEQP-GLES3.functional.state_query.texture#texture_2d_is_texture
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_r_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_r_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_g_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_g_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_b_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_b_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_a_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_swizzle_a_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_wrap_s_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_wrap_s_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_wrap_t_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_wrap_t_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_mag_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_mag_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_min_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_min_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_min_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_min_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_max_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_max_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_base_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_base_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_max_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_max_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_compare_mode_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_compare_mode_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_compare_func_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_compare_func_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_immutable_format_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_texture_immutable_format_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_is_texture
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_r_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_r_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_g_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_g_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_b_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_b_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_a_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_swizzle_a_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_wrap_s_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_wrap_s_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_wrap_t_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_wrap_t_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_wrap_r_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_wrap_r_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_mag_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_mag_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_min_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_min_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_min_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_min_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_max_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_max_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_base_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_base_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_max_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_max_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_compare_mode_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_compare_mode_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_compare_func_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_compare_func_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_immutable_format_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_3d_texture_immutable_format_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_is_texture
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_r_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_r_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_g_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_g_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_b_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_b_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_a_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_swizzle_a_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_wrap_s_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_wrap_s_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_mag_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_mag_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_min_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_min_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_min_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_min_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_max_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_max_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_base_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_base_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_max_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_max_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_compare_mode_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_compare_mode_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_compare_func_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_compare_func_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_immutable_format_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_2d_array_texture_immutable_format_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_is_texture
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_r_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_r_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_g_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_g_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_b_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_b_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_a_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_swizzle_a_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_wrap_s_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_wrap_s_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_wrap_t_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_wrap_t_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_mag_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_mag_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_min_filter_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_min_filter_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_min_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_min_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_max_lod_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_max_lod_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_base_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_base_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_max_level_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_max_level_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_compare_mode_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_compare_mode_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_compare_func_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_compare_func_gettexparameterf
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_immutable_format_gettexparameteri
-dEQP-GLES3.functional.state_query.texture#texture_cube_map_texture_immutable_format_gettexparameterf
-dEQP-GLES3.functional.state_query.string#renderer
-dEQP-GLES3.functional.state_query.string#vendor
-dEQP-GLES3.functional.state_query.string#version
-dEQP-GLES3.functional.state_query.string#shading_language_version
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_wrap_s_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_wrap_s_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_wrap_t_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_wrap_t_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_wrap_r_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_wrap_r_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_mag_filter_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_mag_filter_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_min_filter_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_min_filter_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_compare_mode_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_compare_mode_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_compare_func_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_compare_func_getsamplerparameterf
-dEQP-GLES3.functional.state_query.buffer_object#buffer_size_getbufferparameteri
-dEQP-GLES3.functional.state_query.buffer_object#buffer_size_getbufferparameteri64
-dEQP-GLES3.functional.state_query.buffer_object#buffer_usage_getbufferparameteri
-dEQP-GLES3.functional.state_query.buffer_object#buffer_usage_getbufferparameteri64
-dEQP-GLES3.functional.state_query.buffer_object#buffer_access_flags_getbufferparameteri
-dEQP-GLES3.functional.state_query.buffer_object#buffer_access_flags_getbufferparameteri64
-dEQP-GLES3.functional.state_query.buffer_object#buffer_mapped_getbufferparameteri
-dEQP-GLES3.functional.state_query.buffer_object#buffer_mapped_getbufferparameteri64
-dEQP-GLES3.functional.state_query.buffer_object#buffer_map_offset_length_getbufferparameteri
-dEQP-GLES3.functional.state_query.buffer_object#buffer_map_offset_length_getbufferparameteri64
-dEQP-GLES3.functional.state_query.buffer_object#buffer_pointer
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_object
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_texture_level
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_texture_layer
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_color_encoding
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_component_type
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_x_size_rbo
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_x_size_texture
-dEQP-GLES3.functional.state_query.fbo#framebuffer_unspecified_attachment_x_size_texture
-dEQP-GLES3.functional.state_query.rbo#renderbuffer_component_size_color
-dEQP-GLES3.functional.state_query.rbo#renderbuffer_component_size_depth
-dEQP-GLES3.functional.state_query.shader#shader_type
-dEQP-GLES3.functional.state_query.shader#shader_compile_status
-dEQP-GLES3.functional.state_query.shader#delete_status
-dEQP-GLES3.functional.state_query.shader#current_vertex_attrib_initial
-dEQP-GLES3.functional.state_query.shader#current_vertex_attrib_float
-dEQP-GLES3.functional.state_query.shader#current_vertex_attrib_int
-dEQP-GLES3.functional.state_query.shader#current_vertex_attrib_uint
-dEQP-GLES3.functional.state_query.shader#current_vertex_attrib_float_to_int
-dEQP-GLES3.functional.state_query.shader#program_info_log_length
-dEQP-GLES3.functional.state_query.shader#program_validate_status
-dEQP-GLES3.functional.state_query.shader#program_attached_shaders
-dEQP-GLES3.functional.state_query.shader#program_active_uniform_name
-dEQP-GLES3.functional.state_query.shader#program_active_uniform_blocks
-dEQP-GLES3.functional.state_query.shader#program_binary
-dEQP-GLES3.functional.state_query.shader#transform_feedback
-dEQP-GLES3.functional.state_query.shader#active_attributes
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_size
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_normalized
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_array_enabled
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_array_divisor
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_array_buffer_binding
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_pointerv
-dEQP-GLES3.functional.state_query.shader#uniform_value_float
-dEQP-GLES3.functional.state_query.shader#uniform_value_int
-dEQP-GLES3.functional.state_query.shader#uniform_value_uint
-dEQP-GLES3.functional.state_query.shader#uniform_value_array
-dEQP-GLES3.functional.state_query.shader#uniform_value_matrix
-dEQP-GLES3.functional.state_query.shader#precision_vertex_lowp_float
-dEQP-GLES3.functional.state_query.shader#precision_vertex_mediump_float
-dEQP-GLES3.functional.state_query.shader#precision_vertex_highp_float
-dEQP-GLES3.functional.state_query.shader#precision_vertex_lowp_int
-dEQP-GLES3.functional.state_query.shader#precision_vertex_mediump_int
-dEQP-GLES3.functional.state_query.shader#precision_vertex_highp_int
-dEQP-GLES3.functional.state_query.shader#precision_fragment_lowp_float
-dEQP-GLES3.functional.state_query.shader#precision_fragment_mediump_float
-dEQP-GLES3.functional.state_query.shader#precision_fragment_highp_float
-dEQP-GLES3.functional.state_query.shader#precision_fragment_lowp_int
-dEQP-GLES3.functional.state_query.shader#precision_fragment_mediump_int
-dEQP-GLES3.functional.state_query.shader#precision_fragment_highp_int
-dEQP-GLES3.functional.state_query.internal_format#r8_samples
-dEQP-GLES3.functional.state_query.internal_format#rg8_samples
-dEQP-GLES3.functional.state_query.internal_format#rgb8_samples
-dEQP-GLES3.functional.state_query.internal_format#rgb565_samples
-dEQP-GLES3.functional.state_query.internal_format#rgba4_samples
-dEQP-GLES3.functional.state_query.internal_format#rgb5_a1_samples
-dEQP-GLES3.functional.state_query.internal_format#rgba8_samples
-dEQP-GLES3.functional.state_query.internal_format#rgb10_a2_samples
-dEQP-GLES3.functional.state_query.internal_format#srgb8_alpha8_samples
-dEQP-GLES3.functional.state_query.internal_format#depth_component16_samples
-dEQP-GLES3.functional.state_query.internal_format#depth_component24_samples
-dEQP-GLES3.functional.state_query.internal_format#depth_component32f_samples
-dEQP-GLES3.functional.state_query.internal_format#depth24_stencil8_samples
-dEQP-GLES3.functional.state_query.internal_format#depth32f_stencil8_samples
-dEQP-GLES3.functional.state_query.internal_format#stencil_index8_samples
-dEQP-GLES3.functional.state_query.internal_format#rgba8_samples_buffer
-dEQP-GLES3.functional.clipping.point#point_z_clip
-dEQP-GLES3.functional.clipping.point#point_z_clip_viewport_center
-dEQP-GLES3.functional.clipping.point#point_z_clip_viewport_corner
-dEQP-GLES3.functional.clipping.point#wide_point_z_clip
-dEQP-GLES3.functional.clipping.point#wide_point_z_clip_viewport_center
-dEQP-GLES3.functional.clipping.point#wide_point_z_clip_viewport_corner
-dEQP-GLES3.functional.clipping.line#line_z_clip
-dEQP-GLES3.functional.clipping.line#line_z_clip_viewport_center
-dEQP-GLES3.functional.clipping.line#line_z_clip_viewport_corner
-dEQP-GLES3.functional.clipping.line#wide_line_z_clip
-dEQP-GLES3.functional.clipping.line#wide_line_clip
-dEQP-GLES3.functional.clipping.line#long_line_clip
-dEQP-GLES3.functional.clipping.line#long_wide_line_clip
-dEQP-GLES3.functional.clipping.line#line_attrib_clip
-dEQP-GLES3.functional.clipping.line#wide_line_attrib_clip
-dEQP-GLES3.functional.clipping.polygon#poly_clip_viewport_center
-dEQP-GLES3.functional.clipping.polygon#poly_clip_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#poly_z_clip_viewport_center
-dEQP-GLES3.functional.clipping.polygon#poly_z_clip_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#large_poly_clip_viewport_center
-dEQP-GLES3.functional.clipping.polygon#large_poly_clip_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#large_poly_z_clip
-dEQP-GLES3.functional.clipping.polygon#large_poly_z_clip_viewport_center
-dEQP-GLES3.functional.clipping.polygon#large_poly_z_clip_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#poly_attrib_clip
-dEQP-GLES3.functional.clipping.polygon#poly_attrib_clip_viewport_center
-dEQP-GLES3.functional.clipping.polygon#poly_attrib_clip_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_0
-dEQP-GLES3.functional.clipping.polygon#multiple_0_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_0_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_1
-dEQP-GLES3.functional.clipping.polygon#multiple_1_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_1_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_2
-dEQP-GLES3.functional.clipping.polygon#multiple_2_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_2_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_3
-dEQP-GLES3.functional.clipping.polygon#multiple_3_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_3_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_4
-dEQP-GLES3.functional.clipping.polygon#multiple_4_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_4_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_5
-dEQP-GLES3.functional.clipping.polygon#multiple_5_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_5_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_6
-dEQP-GLES3.functional.clipping.polygon#multiple_6_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_6_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_7
-dEQP-GLES3.functional.clipping.polygon#multiple_7_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_7_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_8
-dEQP-GLES3.functional.clipping.polygon#multiple_8_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_8_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_9
-dEQP-GLES3.functional.clipping.polygon#multiple_9_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_9_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_10
-dEQP-GLES3.functional.clipping.polygon#multiple_10_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_10_viewport_corner
-dEQP-GLES3.functional.clipping.polygon#multiple_11
-dEQP-GLES3.functional.clipping.polygon#multiple_11_viewport_center
-dEQP-GLES3.functional.clipping.polygon#multiple_11_viewport_corner
-dEQP-GLES3.functional.clipping.polygon_edge#quad_at_origin_0
-dEQP-GLES3.functional.clipping.polygon_edge#quad_at_origin_1
-dEQP-GLES3.functional.clipping.polygon_edge#quad_at_origin_2
-dEQP-GLES3.functional.clipping.polygon_edge#quad_at_origin_3
-dEQP-GLES3.functional.clipping.polygon_edge#quad_at_origin_4
-dEQP-GLES3.functional.clipping.polygon_edge#quad_near_edge_0
-dEQP-GLES3.functional.clipping.polygon_edge#quad_near_edge_1
-dEQP-GLES3.functional.clipping.polygon_edge#quad_near_edge_2
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_x
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_y_and_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_y_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_neg_y_neg_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_y_neg_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_pos_y_and_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_pos_y_and_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_y_neg_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_pos_y_neg_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_y_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_neg_y_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_neg_z_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_neg_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_pos_x_neg_z_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_pos_x_neg_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_pos_x_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_neg_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_pos_x_neg_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_pos_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_neg_x_neg_z_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_neg_x_neg_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_neg_z_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_neg_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_neg_x_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_pos_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_neg_x_pos_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_and_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_y_and_pos_x_neg_z_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_y_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_y_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_neg_y_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_neg_y_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_z_and_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_z_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_z_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_z_and_neg_x_neg_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_z_and_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_z_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_z_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_z_and_pos_x_neg_y_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_y_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_y_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_neg_z_and_neg_y_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_neg_z_and_neg_y_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_neg_z_and_neg_y_pos_z_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_pos_z_and_neg_x_neg_y_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_pos_z_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_pos_z_and_pos_x_pos_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_pos_z_and_pos_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_pos_z_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_pos_z_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_pos_z_and_neg_x_pos_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_pos_z_and_pos_x_neg_y_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_pos_z_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_pos_z_and_pos_x_pos_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_pos_z_and_neg_x_neg_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_y_pos_z_and_neg_x_neg_y_neg_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.polygon_offset#default_enable
-dEQP-GLES3.functional.polygon_offset#default_render_with_factor
-dEQP-GLES3.functional.polygon_offset#default_factor_0_slope
-dEQP-GLES3.functional.polygon_offset#fixed16_enable
-dEQP-GLES3.functional.polygon_offset#fixed16_render_with_factor
-dEQP-GLES3.functional.polygon_offset#fixed16_factor_0_slope
-dEQP-GLES3.functional.polygon_offset#fixed24_enable
-dEQP-GLES3.functional.polygon_offset#fixed24_render_with_factor
-dEQP-GLES3.functional.polygon_offset#fixed24_factor_0_slope
-dEQP-GLES3.functional.polygon_offset#float32_enable
-dEQP-GLES3.functional.polygon_offset#float32_render_with_units
-dEQP-GLES3.functional.polygon_offset#float32_render_with_factor
-dEQP-GLES3.functional.polygon_offset#float32_factor_0_slope
-dEQP-GLES3.functional.draw.draw_arrays.first#first_1
-dEQP-GLES3.functional.draw.draw_arrays.first#first_3
-dEQP-GLES3.functional.draw.draw_arrays.first#first_17
-dEQP-GLES3.functional.draw.draw_arrays.points#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays.points#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays.points#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays.points#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays.triangles#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays.triangles#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays.triangles#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays.triangles#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays.triangle_fan#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays.triangle_fan#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays.triangle_fan#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays.triangle_fan#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays.triangle_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays.triangle_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays.triangle_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays.triangle_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays.lines#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays.lines#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays.lines#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays.lines#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays.line_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays.line_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays.line_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays.line_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays.line_loop#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays.line_loop#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays.line_loop#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays.line_loop#default_attribute
-dEQP-GLES3.functional.draw.draw_elements.indices.user_ptr#index_byte
-dEQP-GLES3.functional.draw.draw_elements.indices.user_ptr#index_short
-dEQP-GLES3.functional.draw.draw_elements.indices.user_ptr#index_int
-dEQP-GLES3.functional.draw.draw_elements.indices.unaligned_user_ptr#index_short
-dEQP-GLES3.functional.draw.draw_elements.indices.buffer#index_byte
-dEQP-GLES3.functional.draw.draw_elements.indices.buffer#index_short
-dEQP-GLES3.functional.draw.draw_elements.indices.buffer#index_int
-dEQP-GLES3.functional.draw.draw_elements.points#single_attribute
-dEQP-GLES3.functional.draw.draw_elements.points#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements.points#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements.points#default_attribute
-dEQP-GLES3.functional.draw.draw_elements.triangles#single_attribute
-dEQP-GLES3.functional.draw.draw_elements.triangles#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements.triangles#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements.triangles#default_attribute
-dEQP-GLES3.functional.draw.draw_elements.triangle_fan#single_attribute
-dEQP-GLES3.functional.draw.draw_elements.triangle_fan#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements.triangle_fan#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements.triangle_fan#default_attribute
-dEQP-GLES3.functional.draw.draw_elements.triangle_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_elements.triangle_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements.triangle_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements.triangle_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_elements.lines#single_attribute
-dEQP-GLES3.functional.draw.draw_elements.lines#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements.lines#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements.lines#default_attribute
-dEQP-GLES3.functional.draw.draw_elements.line_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_elements.line_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements.line_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements.line_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_elements.line_loop#single_attribute
-dEQP-GLES3.functional.draw.draw_elements.line_loop#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements.line_loop#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements.line_loop#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.first#first_1
-dEQP-GLES3.functional.draw.draw_arrays_instanced.first#first_3
-dEQP-GLES3.functional.draw.draw_arrays_instanced.first#first_17
-dEQP-GLES3.functional.draw.draw_arrays_instanced.points#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.points#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.points#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.points#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangles#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangles#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangles#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangles#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_fan#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_fan#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_fan#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_fan#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.triangle_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.lines#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.lines#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.lines#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.lines#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_loop#single_attribute
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_loop#multiple_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_loop#instanced_attributes
-dEQP-GLES3.functional.draw.draw_arrays_instanced.line_loop#default_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.indices.user_ptr#index_byte
-dEQP-GLES3.functional.draw.draw_elements_instanced.indices.user_ptr#index_short
-dEQP-GLES3.functional.draw.draw_elements_instanced.indices.user_ptr#index_int
-dEQP-GLES3.functional.draw.draw_elements_instanced.indices.unaligned_user_ptr#index_short
-dEQP-GLES3.functional.draw.draw_elements_instanced.indices.buffer#index_byte
-dEQP-GLES3.functional.draw.draw_elements_instanced.indices.buffer#index_short
-dEQP-GLES3.functional.draw.draw_elements_instanced.indices.buffer#index_int
-dEQP-GLES3.functional.draw.draw_elements_instanced.points#single_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.points#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.points#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.points#default_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangles#single_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangles#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangles#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangles#default_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_fan#single_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_fan#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_fan#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_fan#default_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.triangle_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.lines#single_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.lines#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.lines#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.lines#default_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_loop#single_attribute
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_loop#multiple_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_loop#instanced_attributes
-dEQP-GLES3.functional.draw.draw_elements_instanced.line_loop#default_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.points#single_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.points#multiple_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.points#instanced_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.points#default_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.triangles#single_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.triangles#multiple_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.triangles#instanced_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.triangles#default_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_fan#single_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_fan#multiple_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_fan#instanced_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_fan#default_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.triangle_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.lines#single_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.lines#multiple_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.lines#instanced_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.lines#default_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.line_strip#single_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.line_strip#multiple_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.line_strip#instanced_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.line_strip#default_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.line_loop#single_attribute
-dEQP-GLES3.functional.draw.draw_range_elements.line_loop#multiple_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.line_loop#instanced_attributes
-dEQP-GLES3.functional.draw.draw_range_elements.line_loop#default_attribute
-dEQP-GLES3.functional.draw.instancing#draw_arrays_instanced_grid_2x2
-dEQP-GLES3.functional.draw.instancing#draw_arrays_instanced_grid_5x5
-dEQP-GLES3.functional.draw.instancing#draw_arrays_instanced_grid_10x10
-dEQP-GLES3.functional.draw.instancing#draw_arrays_instanced_grid_32x32
-dEQP-GLES3.functional.draw.instancing#draw_arrays_instanced_grid_100x100
-dEQP-GLES3.functional.draw.instancing#draw_elements_instanced_grid_2x2
-dEQP-GLES3.functional.draw.instancing#draw_elements_instanced_grid_5x5
-dEQP-GLES3.functional.draw.instancing#draw_elements_instanced_grid_10x10
-dEQP-GLES3.functional.draw.instancing#draw_elements_instanced_grid_32x32
-dEQP-GLES3.functional.draw.instancing#draw_elements_instanced_grid_100x100
-dEQP-GLES3.functional.draw.random#0
-dEQP-GLES3.functional.draw.random#2
-dEQP-GLES3.functional.draw.random#5
-dEQP-GLES3.functional.draw.random#7
-dEQP-GLES3.functional.draw.random#9
-dEQP-GLES3.functional.draw.random#11
-dEQP-GLES3.functional.draw.random#12
-dEQP-GLES3.functional.draw.random#14
-dEQP-GLES3.functional.draw.random#15
-dEQP-GLES3.functional.draw.random#16
-dEQP-GLES3.functional.draw.random#17
-dEQP-GLES3.functional.draw.random#18
-dEQP-GLES3.functional.draw.random#19
-dEQP-GLES3.functional.draw.random#20
-dEQP-GLES3.functional.draw.random#21
-dEQP-GLES3.functional.draw.random#23
-dEQP-GLES3.functional.draw.random#25
-dEQP-GLES3.functional.draw.random#27
-dEQP-GLES3.functional.draw.random#29
-dEQP-GLES3.functional.draw.random#30
-dEQP-GLES3.functional.draw.random#31
-dEQP-GLES3.functional.draw.random#32
-dEQP-GLES3.functional.draw.random#33
-dEQP-GLES3.functional.draw.random#36
-dEQP-GLES3.functional.draw.random#37
-dEQP-GLES3.functional.draw.random#38
-dEQP-GLES3.functional.draw.random#39
-dEQP-GLES3.functional.draw.random#40
-dEQP-GLES3.functional.draw.random#41
-dEQP-GLES3.functional.draw.random#42
-dEQP-GLES3.functional.draw.random#43
-dEQP-GLES3.functional.draw.random#44
-dEQP-GLES3.functional.draw.random#48
-dEQP-GLES3.functional.draw.random#49
-dEQP-GLES3.functional.draw.random#51
-dEQP-GLES3.functional.draw.random#52
-dEQP-GLES3.functional.draw.random#55
-dEQP-GLES3.functional.draw.random#56
-dEQP-GLES3.functional.draw.random#57
-dEQP-GLES3.functional.draw.random#58
-dEQP-GLES3.functional.draw.random#60
-dEQP-GLES3.functional.draw.random#61
-dEQP-GLES3.functional.draw.random#63
-dEQP-GLES3.functional.draw.random#68
-dEQP-GLES3.functional.draw.random#69
-dEQP-GLES3.functional.draw.random#70
-dEQP-GLES3.functional.draw.random#71
-dEQP-GLES3.functional.draw.random#72
-dEQP-GLES3.functional.draw.random#74
-dEQP-GLES3.functional.draw.random#78
-dEQP-GLES3.functional.draw.random#80
-dEQP-GLES3.functional.draw.random#81
-dEQP-GLES3.functional.draw.random#82
-dEQP-GLES3.functional.draw.random#83
-dEQP-GLES3.functional.draw.random#84
-dEQP-GLES3.functional.draw.random#85
-dEQP-GLES3.functional.draw.random#86
-dEQP-GLES3.functional.draw.random#87
-dEQP-GLES3.functional.draw.random#88
-dEQP-GLES3.functional.draw.random#89
-dEQP-GLES3.functional.draw.random#90
-dEQP-GLES3.functional.draw.random#91
-dEQP-GLES3.functional.draw.random#92
-dEQP-GLES3.functional.draw.random#93
-dEQP-GLES3.functional.draw.random#94
-dEQP-GLES3.functional.draw.random#95
-dEQP-GLES3.functional.draw.random#96
-dEQP-GLES3.functional.draw.random#97
-dEQP-GLES3.functional.draw.random#101
-dEQP-GLES3.functional.draw.random#103
-dEQP-GLES3.functional.draw.random#104
-dEQP-GLES3.functional.draw.random#105
-dEQP-GLES3.functional.draw.random#106
-dEQP-GLES3.functional.draw.random#107
-dEQP-GLES3.functional.draw.random#108
-dEQP-GLES3.functional.draw.random#109
-dEQP-GLES3.functional.draw.random#112
-dEQP-GLES3.functional.draw.random#113
-dEQP-GLES3.functional.draw.random#114
-dEQP-GLES3.functional.draw.random#115
-dEQP-GLES3.functional.draw.random#116
-dEQP-GLES3.functional.draw.random#117
-dEQP-GLES3.functional.draw.random#118
-dEQP-GLES3.functional.draw.random#119
-dEQP-GLES3.functional.draw.random#120
-dEQP-GLES3.functional.draw.random#124
-dEQP-GLES3.functional.draw.random#125
-dEQP-GLES3.functional.draw.random#126
-dEQP-GLES3.functional.draw.random#127
-dEQP-GLES3.functional.draw.random#129
-dEQP-GLES3.functional.draw.random#131
-dEQP-GLES3.functional.draw.random#132
-dEQP-GLES3.functional.draw.random#135
-dEQP-GLES3.functional.draw.random#136
-dEQP-GLES3.functional.draw.random#138
-dEQP-GLES3.functional.draw.random#140
-dEQP-GLES3.functional.draw.random#141
-dEQP-GLES3.functional.draw.random#142
-dEQP-GLES3.functional.draw.random#143
-dEQP-GLES3.functional.draw.random#144
-dEQP-GLES3.functional.draw.random#145
-dEQP-GLES3.functional.draw.random#146
-dEQP-GLES3.functional.draw.random#148
-dEQP-GLES3.functional.draw.random#149
-dEQP-GLES3.functional.draw.random#150
-dEQP-GLES3.functional.draw.random#151
-dEQP-GLES3.functional.draw.random#154
-dEQP-GLES3.functional.draw.random#155
-dEQP-GLES3.functional.draw.random#156
-dEQP-GLES3.functional.draw.random#158
-dEQP-GLES3.functional.draw.random#159
-dEQP-GLES3.functional.draw.random#161
-dEQP-GLES3.functional.draw.random#162
-dEQP-GLES3.functional.draw.random#164
-dEQP-GLES3.functional.draw.random#165
-dEQP-GLES3.functional.draw.random#166
-dEQP-GLES3.functional.draw.random#167
-dEQP-GLES3.functional.draw.random#169
-dEQP-GLES3.functional.draw.random#170
-dEQP-GLES3.functional.draw.random#171
-dEQP-GLES3.functional.draw.random#173
-dEQP-GLES3.functional.draw.random#174
-dEQP-GLES3.functional.draw.random#175
-dEQP-GLES3.functional.draw.random#177
-dEQP-GLES3.functional.draw.random#178
-dEQP-GLES3.functional.draw.random#179
-dEQP-GLES3.functional.draw.random#180
-dEQP-GLES3.functional.draw.random#181
-dEQP-GLES3.functional.draw.random#183
-dEQP-GLES3.functional.draw.random#184
-dEQP-GLES3.functional.draw.random#185
-dEQP-GLES3.functional.draw.random#186
-dEQP-GLES3.functional.draw.random#187
-dEQP-GLES3.functional.draw.random#188
-dEQP-GLES3.functional.draw.random#191
-dEQP-GLES3.functional.draw.random#192
-dEQP-GLES3.functional.draw.random#196
-dEQP-GLES3.functional.draw.random#197
-dEQP-GLES3.functional.draw.random#198
-dEQP-GLES3.functional.draw.random#200
-dEQP-GLES3.functional.draw.random#202
-dEQP-GLES3.functional.draw.random#204
-dEQP-GLES3.functional.draw.random#205
-dEQP-GLES3.functional.draw.random#206
-dEQP-GLES3.functional.draw.random#207
-dEQP-GLES3.functional.draw.random#208
-dEQP-GLES3.functional.draw.random#209
-dEQP-GLES3.functional.draw.random#210
-dEQP-GLES3.functional.flush_finish#wait
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_2f
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_3f
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_2fv
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_3fv
-dEQP-GLES3.functional.default_vertex_attrib.float#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.vec2#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.vec2#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.vec2#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.vec2#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.vec3#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.vec3#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.vec3#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.vec3#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_2f
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_3f
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_2fv
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_3fv
-dEQP-GLES3.functional.default_vertex_attrib.vec4#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat2#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat2#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat2#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat2#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat2x3#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat2x3#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat2x3#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat2x3#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat2x4#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat2x4#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat2x4#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat2x4#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat3#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat3#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat3#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat3#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat3x2#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat3x2#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat3x2#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat3x2#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat3x4#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat3x4#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat3x4#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat3x4#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_2f
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_3f
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_2fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_3fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4x2#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat4x2#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat4x2#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4x2#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4x3#vertex_attrib_1f
-dEQP-GLES3.functional.default_vertex_attrib.mat4x3#vertex_attrib_4f
-dEQP-GLES3.functional.default_vertex_attrib.mat4x3#vertex_attrib_1fv
-dEQP-GLES3.functional.default_vertex_attrib.mat4x3#vertex_attrib_4fv
-dEQP-GLES3.functional.default_vertex_attrib.int#vertex_attribi_4i
-dEQP-GLES3.functional.default_vertex_attrib.int#vertex_attribi_4iv
-dEQP-GLES3.functional.default_vertex_attrib.ivec2#vertex_attribi_4i
-dEQP-GLES3.functional.default_vertex_attrib.ivec2#vertex_attribi_4iv
-dEQP-GLES3.functional.default_vertex_attrib.ivec3#vertex_attribi_4i
-dEQP-GLES3.functional.default_vertex_attrib.ivec3#vertex_attribi_4iv
-dEQP-GLES3.functional.default_vertex_attrib.ivec4#vertex_attribi_4i
-dEQP-GLES3.functional.default_vertex_attrib.ivec4#vertex_attribi_4iv
-dEQP-GLES3.functional.default_vertex_attrib.uint#vertex_attribi_4ui
-dEQP-GLES3.functional.default_vertex_attrib.uint#vertex_attribi_4uiv
-dEQP-GLES3.functional.default_vertex_attrib.uvec2#vertex_attribi_4ui
-dEQP-GLES3.functional.default_vertex_attrib.uvec2#vertex_attribi_4uiv
-dEQP-GLES3.functional.default_vertex_attrib.uvec3#vertex_attribi_4ui
-dEQP-GLES3.functional.default_vertex_attrib.uvec3#vertex_attribi_4uiv
-dEQP-GLES3.functional.default_vertex_attrib.uvec4#vertex_attribi_4ui
-dEQP-GLES3.functional.default_vertex_attrib.uvec4#vertex_attribi_4uiv
-dEQP-GLES3.functional.lifetime.gen#buffer
-dEQP-GLES3.functional.lifetime.gen#texture
-dEQP-GLES3.functional.lifetime.gen#renderbuffer
-dEQP-GLES3.functional.lifetime.gen#framebuffer
-dEQP-GLES3.functional.lifetime.gen#shader
-dEQP-GLES3.functional.lifetime.gen#program
-dEQP-GLES3.functional.lifetime.gen#query
-dEQP-GLES3.functional.lifetime.gen#transform_feedback
-dEQP-GLES3.functional.lifetime.gen#vertex_array
-dEQP-GLES3.functional.lifetime.gen#sampler
-dEQP-GLES3.functional.lifetime.delete#buffer
-dEQP-GLES3.functional.lifetime.delete#texture
-dEQP-GLES3.functional.lifetime.delete#renderbuffer
-dEQP-GLES3.functional.lifetime.delete#framebuffer
-dEQP-GLES3.functional.lifetime.delete#shader
-dEQP-GLES3.functional.lifetime.delete#program
-dEQP-GLES3.functional.lifetime.delete#query
-dEQP-GLES3.functional.lifetime.delete#transform_feedback
-dEQP-GLES3.functional.lifetime.delete#vertex_array
-dEQP-GLES3.functional.lifetime.delete#sampler
-dEQP-GLES3.functional.lifetime.bind#buffer
-dEQP-GLES3.functional.lifetime.bind#texture
-dEQP-GLES3.functional.lifetime.bind#renderbuffer
-dEQP-GLES3.functional.lifetime.bind#framebuffer
-dEQP-GLES3.functional.lifetime.bind#query
-dEQP-GLES3.functional.lifetime.bind#transform_feedback
-dEQP-GLES3.functional.lifetime.bind#vertex_array
-dEQP-GLES3.functional.lifetime.bind#sampler
-dEQP-GLES3.functional.lifetime.delete_bound#buffer
-dEQP-GLES3.functional.lifetime.delete_bound#texture
-dEQP-GLES3.functional.lifetime.delete_bound#renderbuffer
-dEQP-GLES3.functional.lifetime.delete_bound#framebuffer
-dEQP-GLES3.functional.lifetime.delete_bound#query
-dEQP-GLES3.functional.lifetime.delete_bound#transform_feedback
-dEQP-GLES3.functional.lifetime.delete_bound#vertex_array
-dEQP-GLES3.functional.lifetime.delete_bound#sampler
-dEQP-GLES3.functional.lifetime.bind_no_gen#buffer
-dEQP-GLES3.functional.lifetime.bind_no_gen#texture
-dEQP-GLES3.functional.lifetime.bind_no_gen#renderbuffer
-dEQP-GLES3.functional.lifetime.bind_no_gen#framebuffer
-dEQP-GLES3.functional.lifetime.bind_no_gen#query
-dEQP-GLES3.functional.lifetime.bind_no_gen#transform_feedback
-dEQP-GLES3.functional.lifetime.bind_no_gen#vertex_array
-dEQP-GLES3.functional.lifetime.bind_no_gen#sampler
-dEQP-GLES3.functional.lifetime.delete_used#program
-dEQP-GLES3.functional.lifetime.attach.deleted_name#shader_program
-dEQP-GLES3.functional.lifetime.attach.deleted_input#texture_framebuffer
-dEQP-GLES3.functional.lifetime.attach.deleted_input#renderbuffer_framebuffer
-dEQP-GLES3.functional.lifetime.attach.deleted_input#shader_program
-dEQP-GLES3.functional.lifetime.attach.deleted_output#texture_framebuffer
-dEQP-GLES3.functional.lifetime.attach.deleted_output#renderbuffer_framebuffer
-dEQP-GLES3.functional.lifetime.delete_active#transform_feedback
diff --git a/tests/tests/deqp/gles3-temporary-failures.txt b/tests/tests/deqp/gles3-temporary-failures.txt
deleted file mode 100644
index c2127a6..0000000
--- a/tests/tests/deqp/gles3-temporary-failures.txt
+++ /dev/null
@@ -1,2627 +0,0 @@
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_float
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_mat2
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_mat2_offset_1
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_mat3
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_mat3_offset_1
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_mat4
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_mat4_offset_1
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_vec2
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_vec3
-dEQP-GLES3.functional.attribute_location.bind_aliasing#cond_vec4
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_cond_float
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_cond_mat2
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_cond_mat3
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_cond_mat4
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_cond_vec2
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_cond_vec3
-dEQP-GLES3.functional.attribute_location.bind_aliasing#max_cond_vec4
-dEQP-GLES3.functional.attribute_location.bind_hole#vec4
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#float
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#int
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#ivec2
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#ivec3
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#ivec4
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat2
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat2x2
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat2x3
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat2x4
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat3
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat3x2
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat3x3
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat3x4
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat4
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat4x2
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat4x3
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#mat4x4
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#uint
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#uvec2
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#uvec3
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#uvec4
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#vec2
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#vec3
-dEQP-GLES3.functional.attribute_location.bind_relink_hole#vec4
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#float
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#int
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#ivec2
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#ivec3
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#ivec4
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat2
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat2x2
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat2x3
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat2x4
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat3
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat3x2
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat3x3
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat3x4
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat4
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat4x2
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat4x3
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#mat4x4
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#uint
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#uvec2
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#uvec3
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#uvec4
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#vec2
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#vec3
-dEQP-GLES3.functional.attribute_location.mixed_relink_hole#vec4
-dEQP-GLES3.functional.clipping.line#wide_line_z_clip_viewport_center
-dEQP-GLES3.functional.clipping.line#wide_line_z_clip_viewport_corner
-dEQP-GLES3.functional.clipping.polygon_edge#poly_fan
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_one#clip_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_neg_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_and_pos_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_neg_x_neg_z_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_neg_z_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_y_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_x_pos_z_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_y_and_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_x_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_neg_z_and_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_y_and_pos_x_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_y_and_pos_x_pos_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_z_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_x_pos_z_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_neg_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_and_pos_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_y_pos_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_neg_z_and_pos_y_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_pos_z_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_neg_y_pos_z_and_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_neg_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_and_pos_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_neg_z_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_y_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_x_pos_z_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_pos_x_neg_z_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_pos_x_pos_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_y_and_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_neg_x_pos_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_neg_z_and_pos_y_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_and_neg_x_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_y_and_neg_x_pos_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_z_and_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_x_pos_z_and_neg_y_neg_z_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_neg_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_and_pos_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_neg_z_and_neg_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_three#clip_pos_y_neg_z_and_neg_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_neg_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_neg_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_y_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_x_pos_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_neg_z_and_pos_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_neg_y_pos_z_and_pos_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_and_pos_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_neg_x_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_neg_x_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_neg_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_neg_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_neg_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_pos_x_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_pos_x_pos_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_pos_x_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_pos_x_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_pos_x_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_pos_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_y_and_pos_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_neg_z_and_neg_y_pos_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_x_pos_z_and_neg_y_neg_z
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_neg_x_neg_y
-dEQP-GLES3.functional.clipping.triangle_vertex.clip_two#clip_pos_y_and_pos_x_neg_y
-dEQP-GLES3.functional.depth_stencil_clear#depth_stencil_masked
-dEQP-GLES3.functional.depth_stencil_clear#depth_stencil_scissored_masked
-dEQP-GLES3.functional.depth_stencil_clear#stencil_masked
-dEQP-GLES3.functional.depth_stencil_clear#stencil_scissored_masked
-dEQP-GLES3.functional.fbo.api#attachment_query_default_fbo
-dEQP-GLES3.functional.fbo.api#attachment_query_texcube
-dEQP-GLES3.functional.fbo.api#texture_levels
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r11f_g11f_b10f_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r11f_g11f_b10f_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r11f_g11f_b10f_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r11f_g11f_b10f_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r11f_g11f_b10f_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r11f_g11f_b10f_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r16f
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r16f_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r16f_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r16f_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r16f_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r16f_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r16f_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r32f
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r32f_nearest_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r32f_nearest_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r32f_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r32f_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r8_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r8_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r8_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r8_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r8_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#r8_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg16f
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg16f_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg16f_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg16f_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg16f_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg16f_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg16f_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg32f
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg32f_nearest_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg32f_nearest_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg32f_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg32f_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg8
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg8_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg8_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg8_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg8_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg8_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rg8_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb10_a2
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb10_a2_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb10_a2_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb10_a2_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb10_a2_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb10_a2_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb10_a2_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb565
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb565_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb565_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb565_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb565_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb565_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb565_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb5_a1_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb5_a1_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb5_a1_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb5_a1_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb5_a1_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb5_a1_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb8_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb8_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb8_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb8_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb8_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgb8_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba16f
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba16f_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba16f_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba16f_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba16f_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba16f_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba16f_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba32f
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba32f_nearest_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba32f_nearest_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba32f_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba32f_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba4_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba4_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba4_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba4_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba4_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba4_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba8
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba8_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba8_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba8_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba8_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba8_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#rgba8_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#srgb8_alpha8
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#srgb8_alpha8_linear_out_of_bounds_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#srgb8_alpha8_linear_out_of_bounds_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#srgb8_alpha8_linear_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#srgb8_alpha8_linear_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#srgb8_alpha8_nearest_scale_blit_from_default
-dEQP-GLES3.functional.fbo.blit.default_framebuffer#srgb8_alpha8_nearest_scale_blit_to_default
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_linear
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_nearest
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_dst_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_dst_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_dst_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_dst_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_dst_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_dst_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_dst_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_dst_y_nearest
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_x_linear
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_x_nearest
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_y_linear
-dEQP-GLES3.functional.fbo.blit.rect#out_of_bounds_reverse_src_y_nearest
-dEQP-GLES3.functional.fbo.color.blend#r16f_src_over
-dEQP-GLES3.functional.fbo.color.blend#rg16f_src_over
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#red_float
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#red_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#red_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg_float
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg_half_float_oes
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0#rg_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth_component_unsigned_int
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth_component_unsigned_short
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#depth_stencil_unsigned_int_24_8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.depth#stencil_index8
-dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.stencil#depth_stencil_unsigned_int_24_8
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#red_float
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#red_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb16i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb16ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb32i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb32ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb8i
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb8_snorm
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb8ui
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rgb9_e5
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg_float
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0#rg_unsigned_byte
-dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth#stencil_index8
-dEQP-GLES3.functional.fbo.completeness.size#zero
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_color
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_msaa_color
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_msaa_stencil
-dEQP-GLES3.functional.fbo.invalidate.sub#unbind_blit_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_blit_color
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_blit_msaa_color
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_blit_msaa_stencil
-dEQP-GLES3.functional.fbo.invalidate.whole#unbind_blit_stencil
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r16f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r16f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_r16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rg16f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rg16f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#rbo_rg16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r16f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r16f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_r16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rg16f
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rg16f_depth_rbo_depth24_stencil8
-dEQP-GLES3.functional.fbo.render.shared_colorbuffer#tex2d_rg16f_depth_stencil_rbo_depth24_stencil8
-dEQP-GLES3.functional.fence_sync#client_wait_sync_finish
-dEQP-GLES3.functional.fence_sync#client_wait_sync_flush_auto
-dEQP-GLES3.functional.fence_sync#client_wait_sync_flush_manual
-dEQP-GLES3.functional.fence_sync#client_wait_sync_largedraw
-dEQP-GLES3.functional.fence_sync#client_wait_sync_noflush
-dEQP-GLES3.functional.fence_sync#client_wait_sync_timeout_largedraw
-dEQP-GLES3.functional.fence_sync#wait_sync_largedraw
-dEQP-GLES3.functional.flush_finish#flush_wait
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#11
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#20
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#24
-dEQP-GLES3.functional.fragment_ops.depth_stencil.random#5
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#25
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#27
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#40
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#44
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#54
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#7
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#73
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#78
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#80
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#82
-dEQP-GLES3.functional.fragment_ops.interaction.basic_shader#84
-dEQP-GLES3.functional.fragment_ops.random#19
-dEQP-GLES3.functional.fragment_ops.random#22
-dEQP-GLES3.functional.fragment_ops.random#27
-dEQP-GLES3.functional.fragment_ops.random#48
-dEQP-GLES3.functional.fragment_ops.random#59
-dEQP-GLES3.functional.fragment_ops.random#61
-dEQP-GLES3.functional.fragment_ops.random#74
-dEQP-GLES3.functional.fragment_ops.scissor#framebuffer_blit_center
-dEQP-GLES3.functional.fragment_ops.scissor#framebuffer_blit_corner
-dEQP-GLES3.functional.fragment_ops.scissor#framebuffer_blit_none
-dEQP-GLES3.functional.fragment_ops.stencil#cmp_not_equal
-dEQP-GLES3.functional.fragment_ops.stencil#decr_wrap_stencil_fail
-dEQP-GLES3.functional.fragment_ops.stencil#depth_fail_replace
-dEQP-GLES3.functional.fragment_ops.stencil#depth_pass_replace
-dEQP-GLES3.functional.fragment_ops.stencil#incr_wrap_stencil_fail
-dEQP-GLES3.functional.fragment_ops.stencil#invert_stencil_fail
-dEQP-GLES3.functional.fragment_ops.stencil#stencil_fail_replace
-dEQP-GLES3.functional.fragment_ops.stencil#zero_stencil_fail
-dEQP-GLES3.functional.fragment_out.random#12
-dEQP-GLES3.functional.fragment_out.random#2
-dEQP-GLES3.functional.fragment_out.random#28
-dEQP-GLES3.functional.fragment_out.random#33
-dEQP-GLES3.functional.fragment_out.random#36
-dEQP-GLES3.functional.fragment_out.random#50
-dEQP-GLES3.functional.fragment_out.random#51
-dEQP-GLES3.functional.fragment_out.random#59
-dEQP-GLES3.functional.fragment_out.random#76
-dEQP-GLES3.functional.fragment_out.random#78
-dEQP-GLES3.functional.fragment_out.random#79
-dEQP-GLES3.functional.fragment_out.random#93
-dEQP-GLES3.functional.fragment_out.random#94
-dEQP-GLES3.functional.fragment_out.random#96
-dEQP-GLES3.functional.implementation_limits#extensions
-dEQP-GLES3.functional.lifetime.attach.deleted_input#buffer_vertex_array
-dEQP-GLES3.functional.lifetime.attach.deleted_name#buffer_transform_feedback
-dEQP-GLES3.functional.lifetime.attach.deleted_name#buffer_vertex_array
-dEQP-GLES3.functional.lifetime.attach.deleted_name#renderbuffer_framebuffer
-dEQP-GLES3.functional.lifetime.attach.deleted_name#texture_framebuffer
-dEQP-GLES3.functional.lifetime.attach.deleted_output#buffer_transform_feedback
-dEQP-GLES3.functional.multisample.default_framebuffer#stencil
-dEQP-GLES3.functional.multisample.fbo_4_samples#stencil
-dEQP-GLES3.functional.multisample.fbo_max_samples#stencil
-dEQP-GLES3.functional.negative_api.buffer#clear
-dEQP-GLES3.functional.negative_api.buffer#draw_buffers
-dEQP-GLES3.functional.negative_api.buffer#framebuffer_texture2d
-dEQP-GLES3.functional.negative_api.buffer#framebuffer_texture_layer
-dEQP-GLES3.functional.negative_api.buffer#invalidate_framebuffer
-dEQP-GLES3.functional.negative_api.buffer#invalidate_sub_framebuffer
-dEQP-GLES3.functional.negative_api.buffer#read_buffer
-dEQP-GLES3.functional.negative_api.shader#program_binary
-dEQP-GLES3.functional.negative_api.shader#program_parameteri
-dEQP-GLES3.functional.negative_api.state#get_framebuffer_attachment_parameteriv
-dEQP-GLES3.functional.negative_api.state#get_internalformativ
-dEQP-GLES3.functional.negative_api.texture#compressedteximage3d_max_level
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage2d_max_level
-dEQP-GLES3.functional.negative_api.texture#compressedtexsubimage3d_max_level
-dEQP-GLES3.functional.negative_api.texture#generatemipmap
-dEQP-GLES3.functional.negative_api.texture#teximage3d
-dEQP-GLES3.functional.pbo.native#clears
-dEQP-GLES3.functional.pbo.native#triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgb10_a2_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgb10_a2_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgb565_triangles
-dEQP-GLES3.functional.pbo.renderbuffer#rgb5_a1_clears
-dEQP-GLES3.functional.pbo.renderbuffer#rgb5_a1_triangles
-dEQP-GLES3.functional.polygon_offset#default_factor_1_slope
-dEQP-GLES3.functional.polygon_offset#default_result_depth_clamp
-dEQP-GLES3.functional.polygon_offset#fixed24_factor_1_slope
-dEQP-GLES3.functional.polygon_offset#fixed24_result_depth_clamp
-dEQP-GLES3.functional.polygon_offset#float32_displacement_with_units
-dEQP-GLES3.functional.polygon_offset#float32_result_depth_clamp
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_duplicate_restarts.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart_duplicate_restarts.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart_end_restart.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.begin_restart.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.duplicate_restarts.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_byte#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_byte#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_byte#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_int#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_int#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_int#draw_range_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_short#draw_elements
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_short#draw_elements_instanced
-dEQP-GLES3.functional.primitive_restart.end_restart_duplicate_restarts.points.unsigned_short#draw_range_elements
-dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.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_max.interpolation#lines_wide
-dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives#lines
-dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives#lines_wide
-dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives#points
-dEQP-GLES3.functional.rasterization.interpolation.basic#line_loop_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic#line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.basic#lines_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected#line_loop_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected#line_strip_wide
-dEQP-GLES3.functional.rasterization.interpolation.projected#lines_wide
-dEQP-GLES3.functional.rasterization.primitives#line_loop_wide
-dEQP-GLES3.functional.rasterization.primitives#lines
-dEQP-GLES3.functional.rasterization.primitives#line_strip_wide
-dEQP-GLES3.functional.rasterization.primitives#lines_wide
-dEQP-GLES3.functional.shaders.arrays.declaration#multiple_declarations_single_statement_explicit_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#multiple_declarations_single_statement_explicit_vertex
-dEQP-GLES3.functional.shaders.arrays.declaration#multiple_declarations_single_statement_implicit_fragment
-dEQP-GLES3.functional.shaders.arrays.declaration#multiple_declarations_single_statement_implicit_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#empty_declaration_without_var_name_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#empty_declaration_without_var_name_vertex
-dEQP-GLES3.functional.shaders.arrays.invalid#empty_declaration_with_var_name_fragment
-dEQP-GLES3.functional.shaders.arrays.invalid#empty_declaration_with_var_name_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isinf#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.isnan#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#float_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#float_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#float_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#float_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#float_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#float_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec2_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec2_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec2_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec2_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec2_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec2_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec3_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec3_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec3_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec3_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec3_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec3_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec4_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec4_highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec4_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec4_lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec4_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.common.modf#vec4_mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#unpackhalf2x16_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#unpackhalf2x16_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#unpacksnorm2x16_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#unpacksnorm2x16_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#unpackunorm2x16_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.pack_unpack#unpackunorm2x16_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.acosh.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atanh.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.asin.mediump_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.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.lowp_fragment#scalar
-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.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan2.lowp_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.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.atan.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.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
-dEQP-GLES3.functional.shaders.builtin_functions.precision.atan.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.dot.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.faceforward.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.log.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.highp_fragment#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.highp_fragment#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.highp_fragment#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_fragment#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_fragment#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_fragment#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_fragment#mat3x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_fragment#mat4x2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_fragment#mat4x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.mix.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.modf#highp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.precision.modf#highp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.precision.modf#lowp_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.precision.modf#lowp_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.precision.modf#mediump_fragment
-dEQP-GLES3.functional.shaders.builtin_functions.precision.modf#mediump_vertex
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.lowp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.refract.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_fragment#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex#scalar
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex#vec2
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex#vec3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.tan.mediump_vertex#vec4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_fragment#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_fragment#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.lowp_fragment#mat3x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_fragment#mat2x3
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_fragment#mat2x4
-dEQP-GLES3.functional.shaders.builtin_functions.precision.transpose.mediump_fragment#mat3x4
-dEQP-GLES3.functional.shaders.builtin_variable#fragcoord_w
-dEQP-GLES3.functional.shaders.builtin_variable#max_fragment_input_vectors_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#max_fragment_input_vectors_vertex
-dEQP-GLES3.functional.shaders.builtin_variable#max_vertex_output_vectors_fragment
-dEQP-GLES3.functional.shaders.builtin_variable#max_vertex_output_vectors_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#acosh_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#asinh_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_combined_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atanh_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#atan_separate_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#cosh_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#degrees_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#radians_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#sinh_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tanh_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.angle_and_trigonometry#tan_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#abs_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#clamp_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floatbits_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floatbits_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floatbits_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#floatbits_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#fract_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isinf_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#isnan_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#max_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec2_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec2_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec3_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec3_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec4_int_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec4_int_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec2_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec2_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec3_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec3_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec4_uint_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec4_uint_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#min_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_float_bool_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_float_bool_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec2_bvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec2_bvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec3_bvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec3_bvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec3_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec3_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec4_bvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec4_bvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec4_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec4_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mix_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec3_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec3_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec4_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec4_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#mod_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#roundEven_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#round_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec3_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec3_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec4_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec4_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#smoothstep_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec2_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec2_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec3_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec3_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec4_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec4_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#step_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.common#trunc_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#packHalf2x16_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#packHalf2x16_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#packSnorm2x16_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#packSnorm2x16_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#packUnorm2x16_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#packUnorm2x16_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#unpackSnorm2x16_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#unpackSnorm2x16_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#unpackUnorm2x16_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.float_pack_unpack#unpackUnorm2x16_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdx_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdx_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdx_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdx_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdy_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdy_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdy_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#dFdy_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#fwidth_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#fwidth_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#fwidth_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.fragment_processing#fwidth_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#distance_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#faceforward_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#reflect_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_float_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_float_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.geometric#refract_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#compMult_mat2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#compMult_mat2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#compMult_mat3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#compMult_mat3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#compMult_mat4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#compMult_mat4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#determinant_mat2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#determinant_mat2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#determinant_mat3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#determinant_mat3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#determinant_mat4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#determinant_mat4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#inverse_mat2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#inverse_mat2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#inverse_mat3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#inverse_mat3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#inverse_mat4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#inverse_mat4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat2x3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat2x3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat2x4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat2x4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat3x2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat3x2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat3x4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat3x4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat4x2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat4x2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat4x3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#outerProd_mat4x3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat2x3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat2x3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat2x4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat2x4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat3x2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat3x2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat3x4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat3x4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat4x2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat4x2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat4x3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.matrix#transpose_mat4x3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#all_bvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#all_bvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#all_bvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#all_bvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#all_bvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#all_bvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#any_bvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#any_bvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#any_bvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#any_bvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#any_bvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#any_bvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_bvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_bvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_bvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_bvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_bvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_bvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#equal_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThanEqual_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#greaterThan_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThanEqual_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#lessThan_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#not_bvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#not_bvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#not_bvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#not_bvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#not_bvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#not_bvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_bvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_bvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_bvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_bvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_bvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_bvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_ivec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_ivec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_ivec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_ivec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_ivec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_ivec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_uvec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_uvec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_uvec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_uvec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_uvec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_uvec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_vec2_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_vec2_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_vec3_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_vec3_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_vec4_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.builtin_functions.vector_relational#notEqual_vec4_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#array_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#array_length_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#array_length_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.complex_types#array_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.other#complex_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.other#complex_vertex
-dEQP-GLES3.functional.shaders.constant_expressions.other#nested_builtin_funcs_fragment
-dEQP-GLES3.functional.shaders.constant_expressions.other#nested_builtin_funcs_vertex
-dEQP-GLES3.functional.shaders.constants#const_float_function_gotcha_fragment
-dEQP-GLES3.functional.shaders.constants#const_float_function_gotcha_vertex
-dEQP-GLES3.functional.shaders.constants#float_int_f_suffix_0_fragment
-dEQP-GLES3.functional.shaders.constants#float_int_f_suffix_0_vertex
-dEQP-GLES3.functional.shaders.constants#float_int_f_suffix_1_fragment
-dEQP-GLES3.functional.shaders.constants#float_int_f_suffix_1_vertex
-dEQP-GLES3.functional.shaders.constants#int_l_suffix_fragment
-dEQP-GLES3.functional.shaders.constants#int_l_suffix_vertex
-dEQP-GLES3.functional.shaders.constants#invalid_octal_1_fragment
-dEQP-GLES3.functional.shaders.constants#invalid_octal_1_vertex
-dEQP-GLES3.functional.shaders.constants#uint_ul_suffix_fragment
-dEQP-GLES3.functional.shaders.constants#uint_ul_suffix_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#invariant_attribute
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#invariant_uniform
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#invariant_uniform_block_2_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#invariant_uniform_block_2_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_const_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_const_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_block_name_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_duplicate_block_name_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_in_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_in_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_out_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_out_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_sampler_2d_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_sampler_2d_vertex
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_sampler_cube_fragment
-dEQP-GLES3.functional.shaders.declarations.invalid_declarations#uniform_block_sampler_cube_vertex
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.default#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_float#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_float#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.fbo#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.in_function#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.linear#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.default#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_float#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_if#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_loop#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.static_switch#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.basic#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.basic#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.basic#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_fastest#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_fastest#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_fastest#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_fastest#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_fastest#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_fastest#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_nicest#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_nicest#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_nicest#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_nicest#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_nicest#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.float_nicest#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_if#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_loop#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdx.uniform_switch#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.default#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_float#vec4_mediump
-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_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_float#vec4_mediump
-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_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2#vec4_mediump
-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_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.fbo#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.in_function#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.in_function#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.in_function#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.in_function#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#float_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#vec2_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.linear#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.default#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#float_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_float#vec4_mediump
-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_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4#vec4_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_if#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_if#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_if#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_if#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_loop#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_loop#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_loop#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_loop#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_switch#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_switch#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_switch#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.static_switch#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.basic#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.basic#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.basic#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_fastest#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_fastest#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_fastest#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_fastest#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_nicest#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_nicest#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_nicest#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.float_nicest#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_if#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_if#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_if#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_if#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_loop#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_loop#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_loop#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_loop#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_switch#vec2_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_switch#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_switch#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.dfdy.uniform_switch#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.default#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.fbo#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.in_function#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.linear#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.default#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_float#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_if#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_loop#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.static_switch#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.basic#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.basic#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.basic#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_fastest#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_fastest#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_fastest#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_fastest#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_fastest#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_fastest#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_nicest#float_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_nicest#vec2_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_nicest#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_nicest#vec3_lowp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_nicest#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.float_nicest#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_if#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_loop#vec4_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#vec3_highp
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#vec3_mediump
-dEQP-GLES3.functional.shaders.derivate.fwidth.uniform_switch#vec4_highp
-dEQP-GLES3.functional.shaders.fragdata#draw_buffers
-dEQP-GLES3.functional.shaders.fragdata#invalid_assign_to_1
-dEQP-GLES3.functional.shaders.fragdata#write_fragcolor_and_fragdata_static_if
-dEQP-GLES3.functional.shaders.fragdata#write_fragcolor_and_fragdata_unused_func
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_global_inout_on_call_fragment
-dEQP-GLES3.functional.shaders.functions.array_arguments#copy_global_inout_on_call_vertex
-dEQP-GLES3.functional.shaders.functions.datatypes#bool_bvec2_fragment
-dEQP-GLES3.functional.shaders.functions.datatypes#bool_bvec2_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#array_size_from_const_arg_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#array_size_from_const_arg_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#init_const_local_from_const_arg_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#init_const_local_from_const_arg_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#local_function_prototype_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#local_function_prototype_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#overload_builtin_function_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#overload_builtin_function_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#redefine_builtin_function_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#redefine_builtin_function_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#uniform_return_type_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#uniform_return_type_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#use_const_arg_as_array_size_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#use_const_arg_as_array_size_vertex
-dEQP-GLES3.functional.shaders.functions.invalid#use_const_arg_in_const_expr_fragment
-dEQP-GLES3.functional.shaders.functions.invalid#use_const_arg_in_const_expr_vertex
-dEQP-GLES3.functional.shaders.invariance.highp#common_subexpression_1
-dEQP-GLES3.functional.shaders.invariance.highp#common_subexpression_3
-dEQP-GLES3.functional.shaders.invariance.highp#loop_0
-dEQP-GLES3.functional.shaders.invariance.highp#loop_1
-dEQP-GLES3.functional.shaders.invariance.lowp#common_subexpression_1
-dEQP-GLES3.functional.shaders.invariance.lowp#common_subexpression_3
-dEQP-GLES3.functional.shaders.invariance.lowp#loop_0
-dEQP-GLES3.functional.shaders.invariance.lowp#loop_1
-dEQP-GLES3.functional.shaders.invariance.mediump#common_subexpression_1
-dEQP-GLES3.functional.shaders.invariance.mediump#common_subexpression_3
-dEQP-GLES3.functional.shaders.invariance.mediump#loop_0
-dEQP-GLES3.functional.shaders.invariance.mediump#loop_1
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#max_length_fragment
-dEQP-GLES3.functional.shaders.keywords.invalid_identifiers#max_length_vertex
-dEQP-GLES3.functional.shaders.keywords.keywords#vec4_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#active_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#active_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#atomic_uint_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#atomic_uint_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#coherent_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#coherent_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#common_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#common_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#double_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#double_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#filter_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#filter_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage1DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage1DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage1D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage1D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage2DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage2DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage2D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage2D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage3D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimage3D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimageBuffer_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimageBuffer_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimageCube_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#iimageCube_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1DArrayShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1DArrayShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1DShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1DShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image1D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2DArrayShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2DArrayShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2DShadow_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2DShadow_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image2D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image3D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#image3D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#imageBuffer_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#imageBuffer_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#imageCube_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#imageCube_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isamplerBuffer_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#isamplerBuffer_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#partition_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#partition_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#patch_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#patch_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#readonly_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#readonly_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#resource_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#resource_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#restrict_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#restrict_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sample_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#samplerBuffer_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#samplerBuffer_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#sample_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#subroutine_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#subroutine_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage1DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage1DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage1D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage1D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage2DArray_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage2DArray_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage2D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage2D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage3D_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimage3D_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimageBuffer_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimageBuffer_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimageCube_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#uimageCube_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usamplerBuffer_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#usamplerBuffer_vertex
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#writeonly_fragment
-dEQP-GLES3.functional.shaders.keywords.reserved_keywords#writeonly_vertex
-dEQP-GLES3.functional.shaders.linkage.uniform.block#layout_qualifier_mismatch_1
-dEQP-GLES3.functional.shaders.linkage.uniform.block#layout_qualifier_mismatch_2
-dEQP-GLES3.functional.shaders.linkage.uniform.block#layout_qualifier_mismatch_3
-dEQP-GLES3.functional.shaders.linkage.uniform.block#precision_mismatch
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#precision_conflict_1
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#precision_conflict_2
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#precision_conflict_3
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#precision_conflict_4
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#type_conflict_1
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#type_conflict_2
-dEQP-GLES3.functional.shaders.linkage.uniform.struct#type_conflict_3
-dEQP-GLES3.functional.shaders.linkage.varying.rules#differing_interpolation_2
-dEQP-GLES3.functional.shaders.linkage.varying.rules#illegal_usage_1
-dEQP-GLES3.functional.shaders.linkage.varying.rules#interpolation_mismatch_1
-dEQP-GLES3.functional.shaders.linkage.varying.rules#invalid_type_array_struct
-dEQP-GLES3.functional.shaders.linkage.varying.rules#invalid_type_int
-dEQP-GLES3.functional.shaders.linkage.varying.rules#invalid_type_struct_array
-dEQP-GLES3.functional.shaders.linkage.varying.rules#invalid_type_struct_struct
-dEQP-GLES3.functional.shaders.linkage.varying.rules#invalid_type_uint
-dEQP-GLES3.functional.shaders.linkage.varying.rules#struct_type_mismatch_1
-dEQP-GLES3.functional.shaders.linkage.varying.rules#struct_type_mismatch_2
-dEQP-GLES3.functional.shaders.linkage.varying.rules#struct_type_mismatch_3
-dEQP-GLES3.functional.shaders.linkage.varying.rules#type_mismatch_1
-dEQP-GLES3.functional.shaders.linkage.varying.struct#float_uvec2_vec3
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.post_decrement_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_effect#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#highp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#lowp_uvec4_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uint_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uint_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uvec2_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uvec2_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uvec3_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uvec3_vertex
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uvec4_fragment
-dEQP-GLES3.functional.shaders.operator.unary_operator.pre_decrement_result#mediump_uvec4_vertex
-dEQP-GLES3.functional.shaders.preprocessor.basic#identifier_with_double_underscore_fragment
-dEQP-GLES3.functional.shaders.preprocessor.basic#identifier_with_double_underscore_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#invalid_line_file_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#invalid_line_file_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#invalid_line_file_3_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#invalid_line_file_3_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_and_file_expression_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_and_file_expression_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_defined_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_defined_2_vertex
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_expression_fragment
-dEQP-GLES3.functional.shaders.preprocessor.builtin#line_expression_vertex
-dEQP-GLES3.functional.shaders.preprocessor.comments#backslash_in_a_comment_1_fragment
-dEQP-GLES3.functional.shaders.preprocessor.comments#backslash_in_a_comment_1_vertex
-dEQP-GLES3.functional.shaders.preprocessor.pragmas#invalid_pragma_invalid_debug_fragment
-dEQP-GLES3.functional.shaders.preprocessor.pragmas#invalid_pragma_invalid_debug_vertex
-dEQP-GLES3.functional.shaders.preprocessor.pragmas#invalid_pragma_invalid_token_fragment
-dEQP-GLES3.functional.shaders.preprocessor.pragmas#invalid_pragma_invalid_token_vertex
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#line_2_fragment
-dEQP-GLES3.functional.shaders.preprocessor.predefined_macros#line_2_vertex
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#interp_invariant_storage
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#interp_invariant_storage_precision
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#interp_storage_invariant_input
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#interp_storage_precision_invariant_input
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#invariant_interp_storage_invariant_input
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#invariant_interp_storage_precision_invariant_input
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#invariant_storage_invariant_input
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#invariant_storage_precision_invariant_input
-dEQP-GLES3.functional.shaders.qualification_order.variables.invalid#storage_precision_invariant_input
-dEQP-GLES3.functional.shaders.qualification_order.variables.valid#invariant_interp_storage
-dEQP-GLES3.functional.shaders.qualification_order.variables.valid#invariant_interp_storage_precision
-dEQP-GLES3.functional.shaders.qualification_order.variables.valid#invariant_storage
-dEQP-GLES3.functional.shaders.qualification_order.variables.valid#invariant_storage_precision
-dEQP-GLES3.functional.shaders.random.all_features.fragment#1
-dEQP-GLES3.functional.shaders.random.all_features.fragment#13
-dEQP-GLES3.functional.shaders.random.all_features.fragment#14
-dEQP-GLES3.functional.shaders.random.all_features.fragment#18
-dEQP-GLES3.functional.shaders.random.all_features.fragment#20
-dEQP-GLES3.functional.shaders.random.all_features.fragment#21
-dEQP-GLES3.functional.shaders.random.all_features.fragment#22
-dEQP-GLES3.functional.shaders.random.all_features.fragment#25
-dEQP-GLES3.functional.shaders.random.all_features.fragment#30
-dEQP-GLES3.functional.shaders.random.all_features.fragment#32
-dEQP-GLES3.functional.shaders.random.all_features.fragment#34
-dEQP-GLES3.functional.shaders.random.all_features.fragment#37
-dEQP-GLES3.functional.shaders.random.all_features.fragment#38
-dEQP-GLES3.functional.shaders.random.all_features.fragment#39
-dEQP-GLES3.functional.shaders.random.all_features.fragment#40
-dEQP-GLES3.functional.shaders.random.all_features.fragment#46
-dEQP-GLES3.functional.shaders.random.all_features.fragment#47
-dEQP-GLES3.functional.shaders.random.all_features.fragment#48
-dEQP-GLES3.functional.shaders.random.all_features.fragment#5
-dEQP-GLES3.functional.shaders.random.all_features.fragment#53
-dEQP-GLES3.functional.shaders.random.all_features.fragment#55
-dEQP-GLES3.functional.shaders.random.all_features.fragment#56
-dEQP-GLES3.functional.shaders.random.all_features.fragment#6
-dEQP-GLES3.functional.shaders.random.all_features.fragment#61
-dEQP-GLES3.functional.shaders.random.all_features.fragment#62
-dEQP-GLES3.functional.shaders.random.all_features.fragment#64
-dEQP-GLES3.functional.shaders.random.all_features.fragment#65
-dEQP-GLES3.functional.shaders.random.all_features.fragment#66
-dEQP-GLES3.functional.shaders.random.all_features.fragment#69
-dEQP-GLES3.functional.shaders.random.all_features.fragment#7
-dEQP-GLES3.functional.shaders.random.all_features.fragment#70
-dEQP-GLES3.functional.shaders.random.all_features.fragment#71
-dEQP-GLES3.functional.shaders.random.all_features.fragment#72
-dEQP-GLES3.functional.shaders.random.all_features.fragment#76
-dEQP-GLES3.functional.shaders.random.all_features.fragment#80
-dEQP-GLES3.functional.shaders.random.all_features.fragment#81
-dEQP-GLES3.functional.shaders.random.all_features.fragment#87
-dEQP-GLES3.functional.shaders.random.all_features.fragment#88
-dEQP-GLES3.functional.shaders.random.all_features.fragment#89
-dEQP-GLES3.functional.shaders.random.all_features.fragment#9
-dEQP-GLES3.functional.shaders.random.all_features.fragment#92
-dEQP-GLES3.functional.shaders.random.all_features.fragment#94
-dEQP-GLES3.functional.shaders.random.all_features.fragment#96
-dEQP-GLES3.functional.shaders.random.all_features.vertex#13
-dEQP-GLES3.functional.shaders.random.all_features.vertex#17
-dEQP-GLES3.functional.shaders.random.all_features.vertex#18
-dEQP-GLES3.functional.shaders.random.all_features.vertex#2
-dEQP-GLES3.functional.shaders.random.all_features.vertex#23
-dEQP-GLES3.functional.shaders.random.all_features.vertex#26
-dEQP-GLES3.functional.shaders.random.all_features.vertex#29
-dEQP-GLES3.functional.shaders.random.all_features.vertex#34
-dEQP-GLES3.functional.shaders.random.all_features.vertex#37
-dEQP-GLES3.functional.shaders.random.all_features.vertex#4
-dEQP-GLES3.functional.shaders.random.all_features.vertex#40
-dEQP-GLES3.functional.shaders.random.all_features.vertex#41
-dEQP-GLES3.functional.shaders.random.all_features.vertex#42
-dEQP-GLES3.functional.shaders.random.all_features.vertex#44
-dEQP-GLES3.functional.shaders.random.all_features.vertex#46
-dEQP-GLES3.functional.shaders.random.all_features.vertex#47
-dEQP-GLES3.functional.shaders.random.all_features.vertex#49
-dEQP-GLES3.functional.shaders.random.all_features.vertex#50
-dEQP-GLES3.functional.shaders.random.all_features.vertex#53
-dEQP-GLES3.functional.shaders.random.all_features.vertex#54
-dEQP-GLES3.functional.shaders.random.all_features.vertex#58
-dEQP-GLES3.functional.shaders.random.all_features.vertex#6
-dEQP-GLES3.functional.shaders.random.all_features.vertex#62
-dEQP-GLES3.functional.shaders.random.all_features.vertex#65
-dEQP-GLES3.functional.shaders.random.all_features.vertex#66
-dEQP-GLES3.functional.shaders.random.all_features.vertex#70
-dEQP-GLES3.functional.shaders.random.all_features.vertex#72
-dEQP-GLES3.functional.shaders.random.all_features.vertex#74
-dEQP-GLES3.functional.shaders.random.all_features.vertex#76
-dEQP-GLES3.functional.shaders.random.all_features.vertex#77
-dEQP-GLES3.functional.shaders.random.all_features.vertex#79
-dEQP-GLES3.functional.shaders.random.all_features.vertex#81
-dEQP-GLES3.functional.shaders.random.all_features.vertex#87
-dEQP-GLES3.functional.shaders.random.all_features.vertex#88
-dEQP-GLES3.functional.shaders.random.all_features.vertex#90
-dEQP-GLES3.functional.shaders.random.all_features.vertex#92
-dEQP-GLES3.functional.shaders.random.all_features.vertex#93
-dEQP-GLES3.functional.shaders.random.all_features.vertex#94
-dEQP-GLES3.functional.shaders.random.all_features.vertex#96
-dEQP-GLES3.functional.shaders.random.all_features.vertex#98
-dEQP-GLES3.functional.shaders.random.scalar_conversion.combined#72
-dEQP-GLES3.functional.shaders.random.scalar_conversion.fragment#72
-dEQP-GLES3.functional.shaders.random.texture.fragment#72
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#10
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#37
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#40
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#49
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#83
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#89
-dEQP-GLES3.functional.shaders.random.trigonometric.fragment#94
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#10
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#11
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#15
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#37
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#49
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#83
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#89
-dEQP-GLES3.functional.shaders.random.trigonometric.vertex#94
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_for_init_statement_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redeclare_for_init_statement_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#redefine_builtin_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#redefine_builtin_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_else_in_outer_scope_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_else_in_outer_scope_vertex
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_if_in_outer_scope_fragment
-dEQP-GLES3.functional.shaders.scoping.invalid#use_variable_from_if_in_outer_scope_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#for_init_statement_variable_hides_global_variable_vertex
-dEQP-GLES3.functional.shaders.scoping.valid#variable_in_if_hides_global_variable_fragment
-dEQP-GLES3.functional.shaders.scoping.valid#variable_in_if_hides_global_variable_vertex
-dEQP-GLES3.functional.shaders.struct.local#basic_equal_fragment
-dEQP-GLES3.functional.shaders.struct.local#basic_equal_vertex
-dEQP-GLES3.functional.shaders.struct.local#basic_not_equal_fragment
-dEQP-GLES3.functional.shaders.struct.local#basic_not_equal_vertex
-dEQP-GLES3.functional.shaders.struct.local#nested_equal_fragment
-dEQP-GLES3.functional.shaders.struct.local#nested_equal_vertex
-dEQP-GLES3.functional.shaders.struct.local#nested_not_equal_fragment
-dEQP-GLES3.functional.shaders.struct.local#nested_not_equal_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darrayshadow_vec4_ivec2_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#textureoffset_sampler2darrayshadow_vec4_ivec2_vertex
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texture_sampler2darrayshadow_vec4_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.invalid#texture_sampler2darrayshadow_vec4_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#isampler2darray_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#isampler2darray_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#isampler2d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#isampler2d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#isampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#isampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2darray_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2darray_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2darray_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2darray_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler2d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#usampler2darray_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#usampler2darray_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#usampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset#usampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#isamplercube_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#samplercubeshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturegrad#samplercubeshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.textureoffset#isampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.textureoffset#isampler3d_vertex
-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
-dEQP-GLES3.functional.shaders.texture_functions.texture#sampler2darrayshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#isampler2darray_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#isampler2darray_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#isampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#isampler3d_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler2darray_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler2darray_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler2darray_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler2darray_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler2darrayshadow_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler2darrayshadow_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler3d_fixed_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler3d_fixed_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler3d_float_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#sampler3d_float_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#usampler2darray_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#usampler2darray_vertex
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#usampler3d_fragment
-dEQP-GLES3.functional.shaders.texture_functions.texturesize#usampler3d_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#double_underscore_block_name_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#double_underscore_block_name_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#double_underscore_instance_name_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#double_underscore_instance_name_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#invalid_identifier_block_name_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#invalid_identifier_block_name_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#invalid_identifier_instance_name_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#invalid_identifier_instance_name_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#member_in_interface_qualifier_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#member_in_interface_qualifier_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#member_out_interface_qualifier_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#member_out_interface_qualifier_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#structure_definition_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#structure_definition_vertex
-dEQP-GLES3.functional.shaders.uniform_block.invalid#too_long_block_name_fragment
-dEQP-GLES3.functional.shaders.uniform_block.invalid#too_long_block_name_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_all_8_times_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_all_8_times_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_all_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_all_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_column_major_vec4_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_column_major_vec4_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_row_major_vec4_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#member_layout_row_major_vec4_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#repeated_block_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#repeated_block_no_instance_name_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#repeated_block_no_instance_name_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#repeated_block_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_all_8_times_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_all_8_times_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_all_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_all_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_column_major_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_column_major_vertex
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_row_major_fragment
-dEQP-GLES3.functional.shaders.uniform_block.valid#struct_member_layout_row_major_vertex
-dEQP-GLES3.functional.state_query.fbo#draw_framebuffer_default_framebuffer
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_texture_cube_map_face
-dEQP-GLES3.functional.state_query.fbo#framebuffer_attachment_x_size_initial
-dEQP-GLES3.functional.state_query.fbo#framebuffer_unspecified_attachment_component_type
-dEQP-GLES3.functional.state_query.fbo#framebuffer_unspecified_attachment_x_size_rbo
-dEQP-GLES3.functional.state_query.fbo#read_framebuffer_default_framebuffer
-dEQP-GLES3.functional.state_query.floats#blend_color_getinteger
-dEQP-GLES3.functional.state_query.floats#blend_color_getinteger64
-dEQP-GLES3.functional.state_query.floats#color_clear_value_getinteger
-dEQP-GLES3.functional.state_query.floats#color_clear_value_getinteger64
-dEQP-GLES3.functional.state_query.floats#depth_clear_value_getinteger
-dEQP-GLES3.functional.state_query.floats#depth_clear_value_getinteger64
-dEQP-GLES3.functional.state_query.floats#depth_range_getinteger
-dEQP-GLES3.functional.state_query.floats#depth_range_getinteger64
-dEQP-GLES3.functional.state_query.floats#line_width_getinteger
-dEQP-GLES3.functional.state_query.floats#line_width_getinteger64
-dEQP-GLES3.functional.state_query.floats#polygon_offset_factor_getinteger
-dEQP-GLES3.functional.state_query.floats#polygon_offset_factor_getinteger64
-dEQP-GLES3.functional.state_query.floats#polygon_offset_units_getinteger
-dEQP-GLES3.functional.state_query.floats#polygon_offset_units_getinteger64
-dEQP-GLES3.functional.state_query.floats#sample_coverage_value_getinteger
-dEQP-GLES3.functional.state_query.floats#sample_coverage_value_getinteger64
-dEQP-GLES3.functional.state_query.integers64#max_server_wait_timeout_getfloat
-dEQP-GLES3.functional.state_query.integers#draw_buffer_getboolean
-dEQP-GLES3.functional.state_query.integers#draw_buffer_getfloat
-dEQP-GLES3.functional.state_query.integers#draw_buffer_getinteger
-dEQP-GLES3.functional.state_query.integers#draw_buffer_getinteger64
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_back_value_mask_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_both_getfloat
-dEQP-GLES3.functional.state_query.integers#stencil_value_mask_separate_getfloat
-dEQP-GLES3.functional.state_query.integers#transform_feedback_buffer_binding_getboolean
-dEQP-GLES3.functional.state_query.integers#transform_feedback_buffer_binding_getfloat
-dEQP-GLES3.functional.state_query.integers#transform_feedback_buffer_binding_getinteger
-dEQP-GLES3.functional.state_query.integers#transform_feedback_buffer_binding_getinteger64
-dEQP-GLES3.functional.state_query.internal_format#rgba_samples
-dEQP-GLES3.functional.state_query.internal_format#rgb_samples
-dEQP-GLES3.functional.state_query.rbo#renderbuffer_internal_format
-dEQP-GLES3.functional.state_query.rbo#renderbuffer_size
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_max_lod_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_max_lod_getsamplerparameteri
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_min_lod_getsamplerparameterf
-dEQP-GLES3.functional.state_query.sampler#sampler_texture_min_lod_getsamplerparameteri
-dEQP-GLES3.functional.state_query.shader#program_active_uniform_types
-dEQP-GLES3.functional.state_query.shader#shader_info_log_length
-dEQP-GLES3.functional.state_query.shader#shader_source_length
-dEQP-GLES3.functional.state_query.shader#uniform_value_boolean
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_integer
-dEQP-GLES3.functional.state_query.shader#vertex_attrib_type
-dEQP-GLES3.functional.state_query.string#extensions
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_linear_linear_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_linear_nearest_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_linear_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_linear_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_linear_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_nearest_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_nearest_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#linear_mipmap_nearest_nearest_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_mipmap_linear_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_mipmap_linear_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_mipmap_nearest_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d_array.combinations#nearest_mipmap_nearest_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_mipmap_linear_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_mipmap_linear_linear_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_mipmap_linear_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_mipmap_nearest_linear_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.2d.combinations#linear_mipmap_nearest_nearest_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_linear_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_linear_clamp_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_linear_clamp_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_linear_clamp_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_linear_clamp_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_nearest_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_nearest_clamp_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_nearest_clamp_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_nearest_clamp_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_linear_nearest_clamp_repeat_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_linear_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_linear_clamp_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_linear_clamp_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_linear_clamp_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_linear_clamp_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_nearest_clamp_clamp_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_nearest_clamp_clamp_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_nearest_clamp_mirror_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_nearest_clamp_mirror_mirror
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_nearest_clamp_repeat_clamp
-dEQP-GLES3.functional.texture.filtering.3d.combinations#linear_mipmap_nearest_nearest_clamp_repeat_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.projected#linear_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.projected#linear_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.projected#linear_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.projected#linear_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.projected#linear_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.projected#linear_nearest_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.projected#nearest_linear_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.projected#nearest_linear_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.projected#nearest_linear_repeat
-dEQP-GLES3.functional.texture.mipmap.2d.projected#nearest_nearest_clamp
-dEQP-GLES3.functional.texture.mipmap.2d.projected#nearest_nearest_mirror
-dEQP-GLES3.functional.texture.mipmap.2d.projected#nearest_nearest_repeat
-dEQP-GLES3.functional.texture.size.cube#256x256_rgba4444
-dEQP-GLES3.functional.texture.size.cube#512x512_rgba4444
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r16f_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r16ui_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r32f_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r32i_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r32ui_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r8_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r8i_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#r8_snorm_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg16ui_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rg8i_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb10_a2_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb10_a2ui_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb8_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb8i_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgb8ui_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba16i_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#rgba32f_3d
-dEQP-GLES3.functional.texture.specification.basic_teximage3d#srgb8_alpha8_3d
-dEQP-GLES3.functional.texture.specification.teximage3d_depth_pbo#depth_component16_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth24_stencil8_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth32f_stencil8_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth_component16_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth_component24_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#depth_component32f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r11f_g11f_b10f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r16f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r16i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r32i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8_snorm_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#r8ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg16f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg16i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg16ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg32ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg8_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg8i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rg8_snorm_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb10_a2_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb10_a2ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb16f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb16i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb16ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb32f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb32i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb32ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb8_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb8i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgb8ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba16f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba16ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba32f_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba32i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8i_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8_snorm_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#rgba8ui_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.format#srgb8_alpha8_2d
-dEQP-GLES3.functional.texture.specification.texstorage2d.size#2d_57x63_6_levels
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#depth32f_stencil8_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r11f_g11f_b10f_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r16f_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r16i_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r16i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r16ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r32f_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r32i_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r32i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r32ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r8_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r8i_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r8i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#r8ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg16i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg32f_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg32i_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg32i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg32ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg8_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg8i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg8_snorm_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rg8ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb10_a2_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb10_a2_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb16f_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb16i_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb16i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb16ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb32i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb8_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb8i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgb8ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba16f_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba16i_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba16i_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba16ui_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba32f_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba32ui_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba8_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba8i_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba8_snorm_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba8ui_2d_array
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#rgba8ui_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#srgb8_3d
-dEQP-GLES3.functional.texture.specification.texstorage3d.format#srgb8_alpha8_3d
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.lines#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.points#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#highp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.lines#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.points#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#highp_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#lowp_vec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_float
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_int
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_ivec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_ivec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_uvec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_uvec4
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_vec3
-dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles#mediump_vec4
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_float
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_int
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#highp_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_float
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_int
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_float
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_int
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.lines#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_float
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_int
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#highp_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_float
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_int
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_float
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_int
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.points#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_float
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_int
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#highp_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_float
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_int
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#lowp_vec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_float
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_int
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_ivec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_uint
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_uvec2
-dEQP-GLES3.functional.transform_feedback.array.separate.triangles#mediump_vec2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#highp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#highp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.points#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#highp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#lowp_mat2
-dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles#mediump_mat2
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#1
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#3
-dEQP-GLES3.functional.transform_feedback.random.interleaved.lines#7
-dEQP-GLES3.functional.transform_feedback.random.interleaved.points#2
-dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles#10
-dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles#8
-dEQP-GLES3.functional.transform_feedback.random.separate.lines#1
-dEQP-GLES3.functional.transform_feedback.random.separate.lines#8
-dEQP-GLES3.functional.transform_feedback.random.separate.lines#9
-dEQP-GLES3.functional.transform_feedback.random.separate.points#2
-dEQP-GLES3.functional.transform_feedback.random.separate.points#4
-dEQP-GLES3.functional.transform_feedback.random.separate.points#7
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#1
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#10
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#6
-dEQP-GLES3.functional.transform_feedback.random.separate.triangles#9
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#28
-dEQP-GLES3.functional.ubo.random.all_per_block_buffers#35
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays#9
-dEQP-GLES3.functional.ubo.random.nested_structs_arrays_instance_arrays#24
-dEQP-GLES3.functional.ubo.single_nested_struct_array.per_block_buffer#std140_instance_array_both
-dEQP-GLES3.functional.ubo.single_nested_struct_array.per_block_buffer#std140_instance_array_fragment
-dEQP-GLES3.functional.ubo.single_nested_struct_array.single_buffer#std140_instance_array_both
-dEQP-GLES3.functional.ubo.single_nested_struct_array.single_buffer#std140_instance_array_fragment
-dEQP-GLES3.functional.uniform_api.random#22
-dEQP-GLES3.functional.uniform_api.random#23
-dEQP-GLES3.functional.uniform_api.random#4
-dEQP-GLES3.functional.uniform_api.random#8
-dEQP-GLES3.functional.uniform_api.random#81
-dEQP-GLES3.functional.uniform_api.random#93
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES3.functional.uniform_api.value.assigned.basic_array_assign_full.basic_array#sampler2D_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.basic_struct#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#mat4_mat2_both
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#mat4_mat2_fragment
-dEQP-GLES3.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array#mat4_mat2_vertex
diff --git a/tests/tests/deqp/gles31-golden-tests.txt b/tests/tests/deqp/gles31-golden-tests.txt
deleted file mode 100644
index 8f3a5ef..0000000
--- a/tests/tests/deqp/gles31-golden-tests.txt
+++ /dev/null
@@ -1,17202 +0,0 @@
-dEQP-GLES31.info#vendor
-dEQP-GLES31.info#renderer
-dEQP-GLES31.info#version
-dEQP-GLES31.info#shading_language_version
-dEQP-GLES31.info#extensions
-dEQP-GLES31.info#render_target
-dEQP-GLES31.functional.shaders.builtin_var.compute#num_work_groups
-dEQP-GLES31.functional.shaders.builtin_var.compute#work_group_size
-dEQP-GLES31.functional.shaders.builtin_var.compute#work_group_id
-dEQP-GLES31.functional.shaders.builtin_var.compute#local_invocation_id
-dEQP-GLES31.functional.shaders.builtin_var.compute#global_invocation_id
-dEQP-GLES31.functional.shaders.builtin_var.compute#local_invocation_index
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.abs#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.sign#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floor#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.trunc#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.round#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ceil#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fract#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.modf#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isnan#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.isinf#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.frexp#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#float_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.fma#vec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm4x8_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm4x8_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm4x8_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm4x8_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm4x8_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm4x8_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm4x8_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm4x8_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm4x8_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm4x8_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm4x8_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm4x8_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm4x8_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm4x8_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packsnorm2x16_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm2x16_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpacksnorm2x16_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packunorm2x16_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm2x16_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackunorm2x16_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packhalf2x16_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#packhalf2x16_compute
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackhalf2x16_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack#unpackhalf2x16_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#int_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#int_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#ivec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uint_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec2_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec3_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_lowp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_lowp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_lowp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_lowp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_lowp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_mediump_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_mediump_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_mediump_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_mediump_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_mediump_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_highp_vertex
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_highp_fragment
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_highp_geometry
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_highp_tess_control
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_highp_tess_eval
-dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb#uvec4_highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_1_texture_2d
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_4_texture_2d
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_1_texture_2d_array
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_4_texture_2d_array
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_1_texture_int_2d
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_4_texture_int_2d
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_1_texture_int_2d_array
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_4_texture_int_2d_array
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_1_texture_uint_2d
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_4_texture_uint_2d
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_1_texture_uint_2d_array
-dEQP-GLES31.functional.shaders.builtin_functions.texture_size#samples_4_texture_uint_2d_array
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.mediump_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
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.round.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.min.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.max.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.step.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.length.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cross#lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cross#mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cross#highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.mediump_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat2x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat2x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat3x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat3x4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat4x2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat4x3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute#mat4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.lowp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.mediump_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.determinant.highp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inverse.lowp_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.inverse.mediump_compute#mat2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_vertex#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_vertex#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_vertex#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_fragment#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_vertex#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_fragment#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_vertex#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_fragment#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_vertex#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_vertex#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_vertex#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_vertex#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_fragment#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_fragment#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_fragment#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_fragment#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_vertex#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_vertex#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_vertex#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_vertex#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_fragment#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_fragment#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_fragment#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_fragment#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.fma.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.max_samples#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.sample_mask#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_pixel#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_pixel#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_sample#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.discard_half_per_two_samples#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_pixel#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_sample#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask.inverse_per_two_samples#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.sample_qualifier#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.static_sample_number#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.non_multisample_buffer#sample_0_default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.non_multisample_buffer#sample_0_singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.non_multisample_buffer#sample_0_singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.non_multisample_buffer#sample_n_default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.non_multisample_buffer#sample_n_singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.non_multisample_buffer#sample_n_singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.centroid_qualified#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.at_sample_id#multisample_rbo_16
-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_offset.no_qualifiers#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_rbo_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#singlesample_texture
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_texture_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_texture_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_texture_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_texture_8
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#singlesample_rbo
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_rbo_1
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_rbo_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_rbo_4
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_rbo_8
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.vertex#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.fragment#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.vertex#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.fragment#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.vertex#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.fragment#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.uniform.compute#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.vertex#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.fragment#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#sampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#samplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#sampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#sampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#sampler2dshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#samplercubeshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#sampler2darrayshadow
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#isampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#isamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#isampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#isampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#usampler2d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#usamplercube
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#usampler2darray
-dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.dynamically_uniform.compute#usampler3d
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#const_literal_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#const_literal_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#const_literal_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#const_expression_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#const_expression_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#const_expression_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#uniform_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#uniform_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#uniform_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#dynamically_uniform_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#dynamically_uniform_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo#dynamically_uniform_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo#const_literal_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo#const_literal_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo#const_literal_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo#const_expression_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo#const_expression_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo#const_expression_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#const_literal_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#const_literal_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#const_literal_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#const_expression_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#const_expression_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#const_expression_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#uniform_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#uniform_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#uniform_compute
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#dynamically_uniform_vertex
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#dynamically_uniform_fragment
-dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter#dynamically_uniform_compute
-dEQP-GLES31.functional.shaders.functions.overloading#arrays_of_arrays_size_vertex
-dEQP-GLES31.functional.shaders.functions.overloading#arrays_of_arrays_size_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#float_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#float_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#int_3x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#int_3x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#int_4x4x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#int_4x4x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#bool_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#bool_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#bool_2x1x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#bool_2x1x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#struct_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#struct_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#struct_4x1x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#struct_4x1x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#vec3_4x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#vec3_4x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#ivec3_3x2x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#ivec3_3x2x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#bvec3_1x2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#bvec3_1x2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#high_dimensional_array_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.explicit#high_dimensional_array_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#float_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#float_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#int_3x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#int_3x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#int_4x4x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#int_4x4x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#bool_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#bool_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#bool_2x1x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#bool_2x1x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#struct_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#struct_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#struct_4x1x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#struct_4x1x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#vec3_4x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#vec3_4x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#ivec3_3x2x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#ivec3_3x2x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#bvec3_1x2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#bvec3_1x2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#int_high_dimensional_array_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.constructor.implicit#int_high_dimensional_array_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#int_2x2x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#int_2x2x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#bool_3x2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#bool_3x2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#vec3_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#vec3_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#struct_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#struct_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#ivec3_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#ivec3_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#bvec4_4x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#bvec4_4x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.explicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#int_2x2x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#int_2x2x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#bool_3x2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#bool_3x2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#vec3_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#vec3_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#struct_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#struct_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#ivec3_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#ivec3_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#bvec4_4x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#bvec4_4x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.return.implicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#int_2x2x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#int_2x2x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#bool_3x2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#bool_3x2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#vec3_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#vec3_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#struct_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#struct_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#ivec3_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#ivec3_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#bvec4_4x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#bvec4_4x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.in#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#int_2x2x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#int_2x2x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#bool_3x2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#bool_3x2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#vec3_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#vec3_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#struct_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#struct_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#ivec3_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#ivec3_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#bvec4_4x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#bvec4_4x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.out#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#int_2x2x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#int_2x2x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#bool_3x2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#bool_3x2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#vec3_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#vec3_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#struct_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#struct_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#ivec3_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#ivec3_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#bvec4_4x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#bvec4_4x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.parameter.unnamed#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#int_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#int_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#bool_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#bool_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#struct_5x5x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#struct_5x5x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#vec3_1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#vec3_1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#ivec3_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#ivec3_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#bvec3_3x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#bvec3_3x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.implicit_size#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#int_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#int_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#bool_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#bool_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#struct_5x5x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#struct_5x5x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#vec3_1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#vec3_1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#ivec3_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#ivec3_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#bvec3_3x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#bvec3_3x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_explicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#int_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#int_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#bool_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#bool_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#struct_5x5x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#struct_5x5x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#vec3_1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#vec3_1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#ivec3_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#ivec3_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#bvec3_3x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#bvec3_3x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_explicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#float_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#float_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#int_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#int_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#bool_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#bool_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#struct_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#struct_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#mat3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#mat3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#constant_expression_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.length#constant_expression_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access#constant_expression_access_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access#constant_expression_access_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access#dynamic_expression_access_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.array_access#dynamic_expression_access_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor#float_2_dimensions_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor#float_2_dimensions_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor#int_3_dimensions_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.explicit_constructor#int_3_dimensions_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor#float_2_dimensions_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor#float_2_dimensions_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor#int_3_dimensions_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.single_statement_multiple_declarations.implicit_constructor#int_3_dimensions_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#dynamic_expression_array_size_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#dynamic_expression_array_size_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#empty_declaration_with_var_name_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#empty_declaration_with_var_name_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#uniform_block_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#uniform_block_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#storage_block_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#storage_block_fragment
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_type_mismatch
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#output_type_mismatch
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_different_precision
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#output_different_precision
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_superfluous_declaration
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#output_superfluous_declaration
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_array_explicit_size
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_non_array
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_block
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_block_explicit_size
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_block_non_array
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#output_block
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#output_block_array
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#unspecified_input_primitive_type
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#unspecified_output_primitive_type
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#access_more_than_available_input_vertices
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#float
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#vec2
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#vec3
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#vec4
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat2
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat2x3
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat2x4
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat3x2
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat3
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat3x4
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat4x2
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat4x3
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#mat4
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#int
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#ivec2
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#ivec3
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#ivec4
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#uint
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#uvec2
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#uvec3
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#uvec4
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#float_struct
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.types#float_array
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.qualifiers#smooth
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.qualifiers#flat
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.qualifiers#centroid
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.qualifiers#sample
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.rules#type_mismatch_1
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.rules#type_mismatch_2
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.rules#precision_mismatch
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.rules#struct_partial_usage
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#float
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#vec2
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#vec3
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#vec4
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat2
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat2x3
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat2x4
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat3x2
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat3
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat3x4
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat4x2
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat4x3
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#mat4
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#int
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#ivec2
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#ivec3
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#ivec4
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#uint
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#uvec2
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#uvec3
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#uvec4
-dEQP-GLES31.functional.shaders.linkage.geometry.uniform.types#float_struct
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_type_mismatch
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#output_type_mismatch
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#internal_type_mismatch
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_different_precision
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#output_different_precision
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#internal_different_precision
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_superfluous_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#output_superfluous_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#internal_superfluous_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#vertex_fragment_same_varying_name_1
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#vertex_fragment_same_varying_name_2
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#invalid_vertex_index
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_non_array
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_array_size_mismatch
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#internal_array_size_mismatch
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#per_patch_qualifier_mismatch_1
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_block
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_block_non_array
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_block_array_size_mismatch
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#output_block
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#output_block_array
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#unspecified_vertex_count
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#unspecified_primitive_mode
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.qualifiers#smooth
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.qualifiers#flat
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.qualifiers#centroid
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.qualifiers#sample
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.qualifiers#patch
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#float
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#vec2
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#vec3
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#vec4
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat2
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat2x3
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat2x4
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat3x2
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat3
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat3x4
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat4x2
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat4x3
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#mat4
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#int
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#ivec2
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#ivec3
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#ivec4
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#uint
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#uvec2
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#uvec3
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#uvec4
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#float_struct
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.types#float_array
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.rules#type_mismatch_1
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.rules#type_mismatch_2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.rules#type_mismatch_3
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.rules#type_mismatch_4
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.rules#precision_mismatch_1
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.rules#precision_mismatch_2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.rules#struct_partial_usage
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#float
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#vec2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#vec3
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#vec4
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat2x3
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat2x4
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat3x2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat3
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat3x4
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat4x2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat4x3
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#mat4
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#int
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#ivec2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#ivec3
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#ivec4
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#uint
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#uvec2
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#uvec3
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#uvec4
-dEQP-GLES31.functional.shaders.linkage.tessellation.uniform.types#float_struct
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#type_mismatch
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#different_precision
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#superfluous_output_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#vertex_geometry_same_varying_name_1
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#vertex_geometry_same_varying_name_2
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#io_block
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#array_in_io_block
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#float
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#vec2
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#vec3
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#vec4
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat2
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat2x3
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat2x4
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat3x2
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat3
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat3x4
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat4x2
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat4x3
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#mat4
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#int
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#ivec2
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#ivec3
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#ivec4
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#uint
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#uvec2
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#uvec3
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#uvec4
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#float_struct
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.types#float_array
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.uniform.rules#type_mismatch_1
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.uniform.rules#precision_mismatch_1
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.uniform.rules#struct_partial_usage
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_number_of_declarations
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_order
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_type
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_member_name
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_member_unsized_sized_array
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_member_array_size
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_with_and_without_instance_name
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#mismatch_block_array_size
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#ambiguous_variable_name_1
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#ambiguous_variable_name_2
-dEQP-GLES31.functional.shaders.linkage.io_block#mismatch_number_of_declarations
-dEQP-GLES31.functional.shaders.linkage.io_block#mismatch_order
-dEQP-GLES31.functional.shaders.linkage.io_block#mismatch_type
-dEQP-GLES31.functional.shaders.linkage.io_block#mismatch_member_array_size
-dEQP-GLES31.functional.shaders.linkage.io_block#ambiguous_variable_name_1
-dEQP-GLES31.functional.shaders.linkage.io_block#ambiguous_variable_name_2
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_vertex_attribs
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_vertex_uniform_vectors
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_vertex_output_vectors
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_fragment_input_vectors
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_fragment_uniform_vectors
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_draw_buffers
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_vertex_texture_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_combined_texture_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_texture_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.core#min_program_texel_offset
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_program_texel_offset
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_vertex_image_uniforms
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_fragment_image_uniforms
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_compute_image_uniforms
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_combined_image_uniforms
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_combined_shader_output_resources
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_compute_uniform_components
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_compute_texture_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_compute_atomic_counters
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_compute_atomic_counter_buffers
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_vertex_atomic_counters
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_fragment_atomic_counters
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_combined_atomic_counters
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_atomic_counter_bindings
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_fragment_atomic_counter_buffers
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_compute_work_group_count
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_compute_work_group_size
-dEQP-GLES31.functional.shaders.builtin_constants.sample_variables#max_samples
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_input_components
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_output_components
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_image_uniforms
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_texture_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_output_vertices
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_total_output_components
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_uniform_components
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_atomic_counters
-dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader#max_geometry_atomic_counter_buffers
-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.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less_or_equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less_or_equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less_or_equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less_or_equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater_or_equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater_or_equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater_or_equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater_or_equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less_or_equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less_or_equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less_or_equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less_or_equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater_or_equal#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater_or_equal#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater_or_equal#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater_or_equal#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.input_before_subscript#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.array_subscripts.subscript_before_input#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.functions#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.input_before_field#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.struct_fields.field_before_input#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#int_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uint_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec2_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec3_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#uvec4_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#float_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec2_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec3_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_int_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_int_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_ivec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_ivec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_ivec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_ivec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_ivec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_ivec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#vec4_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.arrays#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#int_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#int_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#int_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#int_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uvec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uvec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uvec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uvec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uvec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.structs#uvec4_to_vec4_fragment
-dEQP-GLES31.functional.compute.basic#empty
-dEQP-GLES31.functional.compute.basic#ubo_to_ssbo_single_invocation
-dEQP-GLES31.functional.compute.basic#ubo_to_ssbo_single_group
-dEQP-GLES31.functional.compute.basic#ubo_to_ssbo_multiple_invocations
-dEQP-GLES31.functional.compute.basic#ubo_to_ssbo_multiple_groups
-dEQP-GLES31.functional.compute.basic#copy_ssbo_single_invocation
-dEQP-GLES31.functional.compute.basic#copy_ssbo_multiple_invocations
-dEQP-GLES31.functional.compute.basic#copy_ssbo_multiple_groups
-dEQP-GLES31.functional.compute.basic#ssbo_rw_single_invocation
-dEQP-GLES31.functional.compute.basic#ssbo_rw_multiple_groups
-dEQP-GLES31.functional.compute.basic#ssbo_unsized_arr_single_invocation
-dEQP-GLES31.functional.compute.basic#ssbo_unsized_arr_multiple_groups
-dEQP-GLES31.functional.compute.basic#write_multiple_arr_single_invocation
-dEQP-GLES31.functional.compute.basic#write_multiple_arr_multiple_groups
-dEQP-GLES31.functional.compute.basic#write_multiple_unsized_arr_single_invocation
-dEQP-GLES31.functional.compute.basic#write_multiple_unsized_arr_multiple_groups
-dEQP-GLES31.functional.compute.basic#ssbo_local_barrier_single_invocation
-dEQP-GLES31.functional.compute.basic#ssbo_local_barrier_single_group
-dEQP-GLES31.functional.compute.basic#ssbo_local_barrier_multiple_groups
-dEQP-GLES31.functional.compute.basic#ssbo_cmd_barrier_single
-dEQP-GLES31.functional.compute.basic#ssbo_cmd_barrier_multiple
-dEQP-GLES31.functional.compute.basic#shared_var_single_invocation
-dEQP-GLES31.functional.compute.basic#shared_var_single_group
-dEQP-GLES31.functional.compute.basic#shared_var_multiple_invocations
-dEQP-GLES31.functional.compute.basic#shared_var_multiple_groups
-dEQP-GLES31.functional.compute.basic#shared_atomic_op_single_invocation
-dEQP-GLES31.functional.compute.basic#shared_atomic_op_single_group
-dEQP-GLES31.functional.compute.basic#shared_atomic_op_multiple_invocations
-dEQP-GLES31.functional.compute.basic#shared_atomic_op_multiple_groups
-dEQP-GLES31.functional.compute.basic#copy_image_to_ssbo_small
-dEQP-GLES31.functional.compute.basic#copy_ssbo_to_image_small
-dEQP-GLES31.functional.compute.basic#image_atomic_op_local_size_1
-dEQP-GLES31.functional.compute.basic#image_atomic_op_local_size_8
-dEQP-GLES31.functional.compute.basic#image_barrier_single
-dEQP-GLES31.functional.compute.basic#image_barrier_multiple
-dEQP-GLES31.functional.compute.basic#atomic_counter_single_invocation
-dEQP-GLES31.functional.compute.basic#atomic_counter_single_group
-dEQP-GLES31.functional.compute.basic#atomic_counter_multiple_invocations
-dEQP-GLES31.functional.compute.basic#atomic_counter_multiple_groups
-dEQP-GLES31.functional.compute.shared_var.basic_type#float_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#float_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#float_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec2_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec2_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec2_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec3_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec3_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec3_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec4_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec4_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#vec4_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2x3_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2x3_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2x3_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2x4_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2x4_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat2x4_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3x2_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3x2_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3x2_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3x4_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3x4_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat3x4_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4x2_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4x2_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4x2_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4x3_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4x3_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4x3_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#mat4_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#int_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#int_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#int_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec2_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec2_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec2_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec3_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec3_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec3_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec4_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec4_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#ivec4_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uint_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uint_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#uint_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec2_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec2_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec2_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec3_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec3_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec3_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec4_lowp
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec4_mediump
-dEQP-GLES31.functional.compute.shared_var.basic_type#uvec4_highp
-dEQP-GLES31.functional.compute.shared_var.basic_type#bool
-dEQP-GLES31.functional.compute.shared_var.basic_type#bvec2
-dEQP-GLES31.functional.compute.shared_var.basic_type#bvec3
-dEQP-GLES31.functional.compute.shared_var.basic_type#bvec4
-dEQP-GLES31.functional.compute.shared_var.work_group_size#float_1_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#float_64_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#float_1_64_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#float_1_1_64
-dEQP-GLES31.functional.compute.shared_var.work_group_size#float_128_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#float_1_128_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#float_13_2_4
-dEQP-GLES31.functional.compute.shared_var.work_group_size#vec4_1_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#vec4_64_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#vec4_1_64_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#vec4_1_1_64
-dEQP-GLES31.functional.compute.shared_var.work_group_size#vec4_128_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#vec4_1_128_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#vec4_13_2_4
-dEQP-GLES31.functional.compute.shared_var.work_group_size#mat4_1_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#mat4_64_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#mat4_1_64_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#mat4_1_1_64
-dEQP-GLES31.functional.compute.shared_var.work_group_size#mat4_128_1_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#mat4_1_128_1
-dEQP-GLES31.functional.compute.shared_var.work_group_size#mat4_13_2_4
-dEQP-GLES31.functional.compute.shared_var.atomic.add#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.add#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.add#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.add#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.add#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.add#highp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.min#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.min#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.min#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.min#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.min#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.min#highp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.max#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.max#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.max#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.max#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.max#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.max#highp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.and#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.and#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.and#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.and#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.and#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.and#highp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.or#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.or#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.or#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.or#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.or#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.or#highp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.xor#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.xor#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.xor#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.xor#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.xor#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.xor#highp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.exchange#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.exchange#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.exchange#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.exchange#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.exchange#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.exchange#highp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.compswap#lowp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.compswap#lowp_int
-dEQP-GLES31.functional.compute.shared_var.atomic.compswap#mediump_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.compswap#mediump_int
-dEQP-GLES31.functional.compute.shared_var.atomic.compswap#highp_uint
-dEQP-GLES31.functional.compute.shared_var.atomic.compswap#highp_int
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#single_invocation
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#multiple_groups
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#multiple_groups_multiple_invocations
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#small_offset
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#large_offset
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#large_offset_multiple_invocations
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#empty_command
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#multi_dispatch
-dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer#multi_dispatch_reuse_command
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#single_invocation
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#multiple_groups
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#multiple_groups_multiple_invocations
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#small_offset
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#empty_command
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#multi_dispatch
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#multi_dispatch_reuse_command
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.first#first_1
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.first#first_3
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.first#first_17
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.points#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangles#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_fan#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.triangle_strip#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.lines#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_loop#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.indices#index_byte
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.indices#index_short
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.indices#index_int
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex#index_byte
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex#index_short
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex#index_int
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex#index_neg_byte
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex#index_neg_short
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.base_vertex#index_neg_int
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.points#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangles#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_fan#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.triangle_strip#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.lines#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip#default_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop#single_attribute
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop#multiple_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop#instanced_attributes
-dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_loop#default_attribute
-dEQP-GLES31.functional.draw_indirect.instancing#draw_arrays_indirect_grid_2x2
-dEQP-GLES31.functional.draw_indirect.instancing#draw_arrays_indirect_grid_5x5
-dEQP-GLES31.functional.draw_indirect.instancing#draw_arrays_indirect_grid_10x10
-dEQP-GLES31.functional.draw_indirect.instancing#draw_arrays_indirect_grid_32x32
-dEQP-GLES31.functional.draw_indirect.instancing#draw_arrays_indirect_grid_100x100
-dEQP-GLES31.functional.draw_indirect.instancing#draw_elements_indirect_grid_2x2
-dEQP-GLES31.functional.draw_indirect.instancing#draw_elements_indirect_grid_5x5
-dEQP-GLES31.functional.draw_indirect.instancing#draw_elements_indirect_grid_10x10
-dEQP-GLES31.functional.draw_indirect.instancing#draw_elements_indirect_grid_32x32
-dEQP-GLES31.functional.draw_indirect.instancing#draw_elements_indirect_grid_100x100
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawarrays_compute_cmd
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawarrays_compute_data
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawarrays_compute_cmd_and_data
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawelements_compute_cmd
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawelements_compute_data
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawelements_compute_indices
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawelements_compute_cmd_and_data
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawelements_compute_cmd_and_indices
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawelements_compute_data_and_indices
-dEQP-GLES31.functional.draw_indirect.compute_interop.separate#drawelements_compute_cmd_and_data_and_indices
-dEQP-GLES31.functional.draw_indirect.compute_interop.combined#drawarrays_compute_cmd_and_data
-dEQP-GLES31.functional.draw_indirect.compute_interop.combined#drawelements_compute_cmd_and_data
-dEQP-GLES31.functional.draw_indirect.compute_interop.combined#drawelements_compute_cmd_and_indices
-dEQP-GLES31.functional.draw_indirect.compute_interop.combined#drawelements_compute_data_and_indices
-dEQP-GLES31.functional.draw_indirect.compute_interop.combined#drawelements_compute_cmd_and_data_and_indices
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_100x100_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_200x200_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_500x500_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_1200x1200_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_1500x1500_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_100x100_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_200x200_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_500x500_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_1200x1200_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_1500x1500_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_100x100_drawcount_200
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_200x200_drawcount_800
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_separate_grid_500x500_drawcount_2500
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_100x100_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_200x200_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_500x500_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_1200x1200_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_1500x1500_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_100x100_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_200x200_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_500x500_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_1200x1200_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_1500x1500_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_100x100_drawcount_200
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_200x200_drawcount_800
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawarrays_combined_grid_500x500_drawcount_2500
-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
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_separate_grid_100x100_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_separate_grid_200x200_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_separate_grid_500x500_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_separate_grid_100x100_drawcount_200
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_separate_grid_200x200_drawcount_800
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_separate_grid_500x500_drawcount_2500
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_100x100_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_200x200_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_500x500_drawcount_1
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_100x100_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_200x200_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_500x500_drawcount_8
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_100x100_drawcount_200
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_200x200_drawcount_800
-dEQP-GLES31.functional.draw_indirect.compute_interop.large#drawelements_combined_grid_500x500_drawcount_2500
-dEQP-GLES31.functional.draw_indirect.random#2
-dEQP-GLES31.functional.draw_indirect.random#3
-dEQP-GLES31.functional.draw_indirect.random#4
-dEQP-GLES31.functional.draw_indirect.random#5
-dEQP-GLES31.functional.draw_indirect.random#6
-dEQP-GLES31.functional.draw_indirect.random#7
-dEQP-GLES31.functional.draw_indirect.random#8
-dEQP-GLES31.functional.draw_indirect.random#11
-dEQP-GLES31.functional.draw_indirect.random#12
-dEQP-GLES31.functional.draw_indirect.random#13
-dEQP-GLES31.functional.draw_indirect.random#14
-dEQP-GLES31.functional.draw_indirect.random#17
-dEQP-GLES31.functional.draw_indirect.random#19
-dEQP-GLES31.functional.draw_indirect.random#20
-dEQP-GLES31.functional.draw_indirect.random#21
-dEQP-GLES31.functional.draw_indirect.random#22
-dEQP-GLES31.functional.draw_indirect.random#24
-dEQP-GLES31.functional.draw_indirect.random#25
-dEQP-GLES31.functional.draw_indirect.random#27
-dEQP-GLES31.functional.draw_indirect.random#28
-dEQP-GLES31.functional.draw_indirect.random#29
-dEQP-GLES31.functional.draw_indirect.random#30
-dEQP-GLES31.functional.draw_indirect.random#31
-dEQP-GLES31.functional.draw_indirect.random#32
-dEQP-GLES31.functional.draw_indirect.random#35
-dEQP-GLES31.functional.draw_indirect.random#36
-dEQP-GLES31.functional.draw_indirect.random#37
-dEQP-GLES31.functional.draw_indirect.random#38
-dEQP-GLES31.functional.draw_indirect.random#39
-dEQP-GLES31.functional.draw_indirect.random#40
-dEQP-GLES31.functional.draw_indirect.random#42
-dEQP-GLES31.functional.draw_indirect.random#43
-dEQP-GLES31.functional.draw_indirect.random#44
-dEQP-GLES31.functional.draw_indirect.random#45
-dEQP-GLES31.functional.draw_indirect.random#46
-dEQP-GLES31.functional.draw_indirect.random#47
-dEQP-GLES31.functional.draw_indirect.random#48
-dEQP-GLES31.functional.draw_indirect.random#49
-dEQP-GLES31.functional.draw_indirect.random#50
-dEQP-GLES31.functional.draw_indirect.random#51
-dEQP-GLES31.functional.draw_indirect.random#52
-dEQP-GLES31.functional.draw_indirect.random#53
-dEQP-GLES31.functional.draw_indirect.random#54
-dEQP-GLES31.functional.draw_indirect.random#55
-dEQP-GLES31.functional.draw_indirect.random#56
-dEQP-GLES31.functional.draw_indirect.random#57
-dEQP-GLES31.functional.draw_indirect.random#61
-dEQP-GLES31.functional.draw_indirect.negative#command_bad_alignment_1
-dEQP-GLES31.functional.draw_indirect.negative#command_bad_alignment_2
-dEQP-GLES31.functional.draw_indirect.negative#command_bad_alignment_3
-dEQP-GLES31.functional.draw_indirect.negative#command_offset_partially_in_buffer
-dEQP-GLES31.functional.draw_indirect.negative#command_offset_not_in_buffer
-dEQP-GLES31.functional.draw_indirect.negative#client_vertex_attrib_array
-dEQP-GLES31.functional.draw_indirect.negative#client_command_array
-dEQP-GLES31.functional.draw_indirect.negative#default_vao
-dEQP-GLES31.functional.draw_indirect.negative#invalid_mode_draw_arrays
-dEQP-GLES31.functional.draw_indirect.negative#invalid_mode_draw_elements
-dEQP-GLES31.functional.draw_indirect.negative#invalid_type_draw_elements
-dEQP-GLES31.functional.tessellation.tesscoord#triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.tesscoord#triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.tesscoord#quads_equal_spacing
-dEQP-GLES31.functional.tessellation.tesscoord#quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.tesscoord#quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.tesscoord#isolines_equal_spacing
-dEQP-GLES31.functional.tessellation.tesscoord#isolines_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.tesscoord#isolines_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.winding#triangles_ccw
-dEQP-GLES31.functional.tessellation.winding#triangles_cw
-dEQP-GLES31.functional.tessellation.winding#quads_ccw
-dEQP-GLES31.functional.tessellation.winding#quads_cw
-dEQP-GLES31.functional.tessellation.shader_input_output#patch_vertices_5_in_10_out
-dEQP-GLES31.functional.tessellation.shader_input_output#patch_vertices_10_in_5_out
-dEQP-GLES31.functional.tessellation.shader_input_output#primitive_id_tcs
-dEQP-GLES31.functional.tessellation.shader_input_output#primitive_id_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#patch_vertices_in_tcs
-dEQP-GLES31.functional.tessellation.shader_input_output#patch_vertices_in_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#tess_level_inner_0_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#tess_level_inner_1_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#tess_level_outer_0_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#tess_level_outer_1_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#tess_level_outer_2_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#tess_level_outer_3_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#gl_position_vs_to_tcs
-dEQP-GLES31.functional.tessellation.shader_input_output#gl_position_tcs_to_tes
-dEQP-GLES31.functional.tessellation.shader_input_output#gl_position_vs_to_tcs_to_tes
-dEQP-GLES31.functional.tessellation.misc_draw#fill_overlap_triangles_equal_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_overlap_triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_overlap_triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_overlap_quads_equal_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_overlap_quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_overlap_quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#isolines_equal_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#isolines_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#isolines_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.common_edge#triangles_equal_spacing
-dEQP-GLES31.functional.tessellation.common_edge#triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.common_edge#triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.common_edge#quads_equal_spacing
-dEQP-GLES31.functional.tessellation.common_edge#quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.common_edge#quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.fractional_spacing#odd
-dEQP-GLES31.functional.tessellation.fractional_spacing#even
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#triangles_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#quads_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.primitive_discard#isolines_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#triangles_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#quads_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.primitive_set#isolines_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_division#triangles_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_division#triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_division#triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_division#quads_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_division#quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_division#quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#triangles_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#quads_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry#isolines_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#triangles_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence#quads_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.triangle_set#triangles_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.triangle_set#triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.triangle_set#triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.triangle_set#quads_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.triangle_set#quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.triangle_set#quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set#triangles_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set#triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set#triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set#quads_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set#quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.inner_triangle_set#quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set#triangles_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set#triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set#triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set#quads_equal_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set#quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set#quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#triangles_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#quads_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range#isolines_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#triangles_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#quads_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_equal_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_equal_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_equal_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_equal_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_odd_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_odd_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_odd_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_odd_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_even_spacing_ccw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_even_spacing_ccw_point_mode
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_even_spacing_cw
-dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component#isolines_fractional_even_spacing_cw_point_mode
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_implicit#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_query#isolines
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#row_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared#column_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#row_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed#column_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#row_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140#column_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_float
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_int
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#row_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_lowp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_mediump_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430#column_major_highp_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#float
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#int
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#float
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#int
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#float
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#int
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#float
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#vec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#vec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#vec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#int
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#ivec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#ivec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#ivec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#uint
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#uvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#uvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#uvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#bool
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#bvec2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#bvec3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#bvec4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#float
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#vec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#vec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#vec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#int
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#ivec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#ivec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#ivec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#uint
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#uvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#uvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#uvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#bool
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#bvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#bvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#bvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#float
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#vec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#vec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#vec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#int
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#ivec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#ivec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#ivec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#uint
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#uvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#uvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#uvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#bool
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#bvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#bvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#bvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#float
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#vec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#vec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#vec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#int
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#ivec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#ivec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#ivec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#uint
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#uvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#uvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#uvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#bool
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#bvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#bvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#bvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#float
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#vec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#vec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#vec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#int
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#ivec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#ivec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#ivec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#uint
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#uvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#uvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#uvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#bool
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#bvec2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#bvec3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#bvec4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#float
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#vec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#vec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#vec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#int
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#ivec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#ivec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#ivec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#uint
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#uvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#uvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#uvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#bool
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#bvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#bvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#bvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.shared#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#float
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#vec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#vec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#vec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#int
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#ivec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#ivec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#ivec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#uint
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#uvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#uvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#uvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#bool
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#bvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#bvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#bvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.packed#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#float
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#vec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#vec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#vec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#int
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#ivec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#ivec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#ivec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#uint
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#uvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#uvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#uvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#bool
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#bvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#bvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#bvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std140#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#float
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#vec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#vec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#vec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#int
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#ivec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#ivec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#ivec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#uint
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#uvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#uvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#uvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#bool
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#bvec2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#bvec3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#bvec4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.2_level_array.std430#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#float
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#int
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.shared#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#float
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#int
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.packed#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#float
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#int
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std140#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#float
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#int
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_array.std430#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#float
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#int
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#float
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#int
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#float
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#int
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#float
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#vec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#vec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#vec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#int
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#ivec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#ivec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#ivec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#uint
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#uvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#uvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#uvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#bool
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#bvec2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#bvec3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#bvec4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#float
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#vec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#vec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#vec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#int
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#ivec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#ivec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#ivec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#uint
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#uvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#uvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#uvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#bool
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#bvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#bvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#bvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#float
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#vec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#vec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#vec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#int
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#ivec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#ivec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#ivec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#uint
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#uvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#uvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#uvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#bool
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#bvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#bvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#bvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#float
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#vec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#vec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#vec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#int
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#ivec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#ivec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#ivec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#uint
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#uvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#uvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#uvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#bool
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#bvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#bvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#bvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#float
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#vec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#vec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#vec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#int
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#ivec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#ivec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#ivec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#uint
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#uvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#uvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#uvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#bool
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#bvec2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#bvec3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#bvec4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat2x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat2x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat3x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat3x4
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat4x2
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#row_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430#column_major_mat4x3
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#shared
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#shared_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#packed
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#packed_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#std140
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#std140_instance_array
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#std430
-dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer#std430_instance_array
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#0
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#1
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#2
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#3
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#4
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#5
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#6
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#7
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#8
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#9
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#10
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#11
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#12
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#13
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#14
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#15
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#16
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#17
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#18
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#19
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#20
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#21
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#22
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#23
-dEQP-GLES31.functional.ssbo.layout.random.scalar_types#24
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#0
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#1
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#2
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#3
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#4
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#5
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#6
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#7
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#8
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#9
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#10
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#11
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#12
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#13
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#14
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#15
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#16
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#17
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#18
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#19
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#20
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#21
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#22
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#23
-dEQP-GLES31.functional.ssbo.layout.random.vector_types#24
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#0
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#1
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#2
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#3
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#4
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#5
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#6
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#7
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#8
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#9
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#10
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#11
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#12
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#13
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#14
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#15
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#16
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#17
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#18
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#19
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#20
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#21
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#22
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#23
-dEQP-GLES31.functional.ssbo.layout.random.basic_types#24
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#0
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#1
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#2
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#3
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#4
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#5
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#6
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#7
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#8
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#9
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#10
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#11
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#12
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#13
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#14
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#15
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#16
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#17
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#18
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#19
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#20
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#21
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#22
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#23
-dEQP-GLES31.functional.ssbo.layout.random.basic_arrays#24
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#0
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#1
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#2
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#3
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#4
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#5
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#6
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#7
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#8
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#9
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#10
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#11
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#12
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#13
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#14
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#15
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#16
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#17
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#18
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#19
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#20
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#21
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#22
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#23
-dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays#24
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#0
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#2
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#3
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#4
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#5
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#6
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#7
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#8
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#9
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#10
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#11
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#12
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#13
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#14
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#15
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#16
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#17
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#18
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#19
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#20
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#21
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#22
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#23
-dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays#24
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#0
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#1
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#2
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#3
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#4
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#5
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#6
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#7
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#8
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#9
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#10
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#11
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#12
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#13
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#14
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#15
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#16
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#17
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#18
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#19
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#20
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#21
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#22
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#23
-dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays#24
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#0
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#1
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#2
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#3
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#4
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#5
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#6
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#7
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#8
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#9
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#10
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#11
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#12
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#13
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#14
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#15
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#16
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#17
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#18
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#19
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#20
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#21
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#22
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#23
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs#24
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#0
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#1
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#2
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#3
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#4
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#5
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#6
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#7
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#8
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#9
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#10
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#11
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#12
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#13
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#14
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#15
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#16
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#17
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#18
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#19
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#20
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#21
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#22
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#23
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays#24
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#0
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#1
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#2
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#3
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#4
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#5
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#6
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#7
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#8
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#9
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#10
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#11
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#12
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#13
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#14
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#15
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#16
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#17
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#18
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#19
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#20
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#21
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#22
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#23
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays#24
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#0
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#1
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#2
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#3
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#4
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#5
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#6
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#7
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#8
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#9
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#10
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#11
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#12
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#13
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#14
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#15
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#16
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#17
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#18
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#19
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#20
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#21
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#22
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#23
-dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays#24
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#0
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#1
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#2
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#3
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#4
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#5
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#6
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#7
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#8
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#9
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#10
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#11
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#12
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#13
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#14
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#15
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#16
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#17
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#18
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#19
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#21
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#22
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#23
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#24
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#25
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#26
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#27
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#28
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#29
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#30
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#31
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#32
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#33
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#34
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#35
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#36
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#37
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#38
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#39
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#40
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#41
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#42
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#43
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#44
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#45
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#46
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#47
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#48
-dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers#49
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#0
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#1
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#2
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#3
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#4
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#6
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#7
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#8
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#9
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#10
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#11
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#12
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#13
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#14
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#15
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#16
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#17
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#18
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#19
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#20
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#21
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#22
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#24
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#25
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#26
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#27
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#28
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#29
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#30
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#31
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#32
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#33
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#34
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#35
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#36
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#37
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#38
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#39
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#40
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#41
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#42
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#43
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#44
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#45
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#46
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#47
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#48
-dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer#49
-dEQP-GLES31.functional.ssbo.atomic.add#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.add#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.add#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.add#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.add#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.add#highp_int
-dEQP-GLES31.functional.ssbo.atomic.min#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.min#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.min#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.min#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.min#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.min#highp_int
-dEQP-GLES31.functional.ssbo.atomic.max#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.max#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.max#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.max#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.max#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.max#highp_int
-dEQP-GLES31.functional.ssbo.atomic.and#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.and#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.and#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.and#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.and#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.and#highp_int
-dEQP-GLES31.functional.ssbo.atomic.or#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.or#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.or#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.or#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.or#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.or#highp_int
-dEQP-GLES31.functional.ssbo.atomic.xor#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.xor#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.xor#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.xor#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.xor#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.xor#highp_int
-dEQP-GLES31.functional.ssbo.atomic.exchange#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.exchange#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.exchange#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.exchange#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.exchange#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.exchange#highp_int
-dEQP-GLES31.functional.ssbo.atomic.compswap#lowp_uint
-dEQP-GLES31.functional.ssbo.atomic.compswap#lowp_int
-dEQP-GLES31.functional.ssbo.atomic.compswap#mediump_uint
-dEQP-GLES31.functional.ssbo.atomic.compswap#mediump_int
-dEQP-GLES31.functional.ssbo.atomic.compswap#highp_uint
-dEQP-GLES31.functional.ssbo.atomic.compswap#highp_int
-dEQP-GLES31.functional.ssbo.array_length#sized_array
-dEQP-GLES31.functional.ssbo.array_length#sized_writeonly_array
-dEQP-GLES31.functional.ssbo.array_length#sized_readonly_array
-dEQP-GLES31.functional.ssbo.array_length#unsized_array
-dEQP-GLES31.functional.ssbo.array_length#unsized_readonly_array
-dEQP-GLES31.functional.ubo.2_level_array.shared#float_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#float_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#float_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#vec4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#int_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#int_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#int_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#ivec4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#uint_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#uint_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#uint_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#uvec4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#bool_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#bool_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#bool_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#bvec4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2x3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2x3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2x3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat2x4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat2x4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat2x4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3x2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3x2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3x2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat3x4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat3x4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat3x4_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4x2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4x2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4x2_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#mat4x3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#row_major_mat4x3_both
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.shared#column_major_mat4x3_both
-dEQP-GLES31.functional.ubo.2_level_array.packed#float_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#float_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#vec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#vec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#vec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#vec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#vec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#vec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#int_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#int_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#ivec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#ivec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#ivec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#ivec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#ivec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#ivec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#uint_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#uint_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#uvec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#uvec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#uvec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#uvec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#uvec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#uvec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#bool_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#bool_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#bvec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#bvec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#bvec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#bvec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#bvec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#bvec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#row_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.packed#column_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#float_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#float_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#float_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#vec4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#int_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#int_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#int_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#ivec4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#uint_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#uint_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#uint_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#uvec4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#bool_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#bool_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#bool_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#bvec4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2x3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2x3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2x3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat2x4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat2x4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat2x4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3x2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3x2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3x2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat3x4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat3x4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat3x4_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4x2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4x2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4x2_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#mat4x3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#row_major_mat4x3_both
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.2_level_array.std140#column_major_mat4x3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#float_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#float_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#float_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#vec4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#int_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#int_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#int_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#ivec4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#uint_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#uint_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#uint_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#uvec4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#bool_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#bool_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#bool_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#bvec4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2x3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2x3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2x3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat2x4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat2x4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat2x4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3x2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3x2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3x2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat3x4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat3x4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat3x4_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4x2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4x2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4x2_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#mat4x3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#row_major_mat4x3_both
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.shared#column_major_mat4x3_both
-dEQP-GLES31.functional.ubo.3_level_array.packed#float_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#float_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#vec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#vec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#vec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#vec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#vec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#vec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#int_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#int_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#ivec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#ivec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#ivec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#ivec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#ivec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#ivec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#uint_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#uint_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#uvec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#uvec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#uvec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#uvec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#uvec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#uvec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#bool_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#bool_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#bvec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#bvec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#bvec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#bvec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#bvec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#bvec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#row_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.packed#column_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#float_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#float_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#float_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#vec4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#int_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#int_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#int_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#ivec4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#uint_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#uint_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#uint_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#uvec4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#bool_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#bool_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#bool_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#bvec4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2x3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2x3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2x3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat2x4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat2x4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat2x4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3x2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3x2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3x2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat3x4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat3x4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3x4_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3x4_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat3x4_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4x2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4x2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4x2_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4x2_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4x2_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#mat4x3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#row_major_mat4x3_both
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4x3_vertex
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4x3_fragment
-dEQP-GLES31.functional.ubo.3_level_array.std140#column_major_mat4x3_both
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#shared_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#shared_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#shared_both
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#shared_instance_array_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#shared_instance_array_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#shared_instance_array_both
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#packed_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#packed_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#packed_instance_array_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#packed_instance_array_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#std140_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#std140_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#std140_both
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#std140_instance_array_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#std140_instance_array_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.per_block_buffer#std140_instance_array_both
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#shared_instance_array_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#shared_instance_array_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#shared_instance_array_both
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#packed_instance_array_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#packed_instance_array_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#std140_instance_array_vertex
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#std140_instance_array_fragment
-dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer#std140_instance_array_both
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#0
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#1
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#2
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#3
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#4
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#5
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#6
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#7
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#8
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#9
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#10
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#11
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#12
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#13
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#14
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#15
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#16
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#17
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#18
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#19
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#20
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#21
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#22
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#23
-dEQP-GLES31.functional.ubo.random.basic_type_arrays#24
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#0
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#1
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#2
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#3
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#4
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#5
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#6
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#7
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#8
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#9
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#10
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#11
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#12
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#13
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#14
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#15
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#16
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#17
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#18
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#19
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#21
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#22
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#23
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#24
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#25
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#26
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#27
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#28
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#29
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#30
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#31
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#32
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#33
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#34
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#35
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#36
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#37
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#38
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#39
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#40
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#42
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#43
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#44
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#45
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#46
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#47
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#48
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#49
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#0
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#1
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#2
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#3
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#4
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#5
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#6
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#7
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#8
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#9
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#10
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#11
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#12
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#13
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#14
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#15
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#16
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#17
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#18
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#19
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#20
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#21
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#22
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#23
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#24
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#25
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#26
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#27
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#28
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#29
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#30
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#31
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#32
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#33
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#34
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#35
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#36
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#37
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#38
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#39
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#40
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#41
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#42
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#43
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#44
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#45
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#46
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#47
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#48
-dEQP-GLES31.functional.ubo.random.all_shared_buffer#49
-dEQP-GLES31.functional.image_load_store.2d.store#rgba32f
-dEQP-GLES31.functional.image_load_store.2d.store#rgba16f
-dEQP-GLES31.functional.image_load_store.2d.store#r32f
-dEQP-GLES31.functional.image_load_store.2d.store#rgba32ui
-dEQP-GLES31.functional.image_load_store.2d.store#rgba16ui
-dEQP-GLES31.functional.image_load_store.2d.store#rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.store#r32ui
-dEQP-GLES31.functional.image_load_store.2d.store#rgba32i
-dEQP-GLES31.functional.image_load_store.2d.store#rgba16i
-dEQP-GLES31.functional.image_load_store.2d.store#rgba8i
-dEQP-GLES31.functional.image_load_store.2d.store#r32i
-dEQP-GLES31.functional.image_load_store.2d.store#rgba8
-dEQP-GLES31.functional.image_load_store.2d.store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba32f
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba16f
-dEQP-GLES31.functional.image_load_store.2d.load_store#r32f
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba32ui
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba16ui
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.load_store#r32ui
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba32i
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba16i
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba8i
-dEQP-GLES31.functional.image_load_store.2d.load_store#r32i
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba8
-dEQP-GLES31.functional.image_load_store.2d.load_store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.atomic#exchange_r32f_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#exchange_r32f_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#add_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#add_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#min_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#min_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#max_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#max_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#and_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#and_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#or_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#or_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#xor_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#xor_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#exchange_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#exchange_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#comp_swap_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#add_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#add_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#min_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#min_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#max_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#max_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#and_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#and_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#or_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#or_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#xor_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#xor_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#exchange_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.atomic#exchange_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d.atomic#comp_swap_r32i_result
-dEQP-GLES31.functional.image_load_store.2d.qualifiers#coherent_r32f
-dEQP-GLES31.functional.image_load_store.2d.qualifiers#volatile_r32f
-dEQP-GLES31.functional.image_load_store.2d.qualifiers#coherent_r32ui
-dEQP-GLES31.functional.image_load_store.2d.qualifiers#volatile_r32ui
-dEQP-GLES31.functional.image_load_store.2d.qualifiers#coherent_r32i
-dEQP-GLES31.functional.image_load_store.2d.qualifiers#volatile_r32i
-dEQP-GLES31.functional.image_load_store.2d.qualifiers#restrict
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba32f_rgba32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba32f_rgba32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba16f_rgba16ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba16f_rgba16i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32f_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32f_r32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32f_rgba8i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32f_r32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32f_rgba8
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32f_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba32ui_rgba32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba32ui_rgba32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba16ui_rgba16f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba16ui_rgba16i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8ui_r32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8ui_r32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8ui_rgba8i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8ui_r32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8ui_rgba8
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32ui_r32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32ui_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32ui_rgba8i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32ui_r32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32ui_rgba8
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba32i_rgba32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba32i_rgba32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba16i_rgba16f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba16i_rgba16ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8i_r32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8i_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8i_r32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8i_r32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8i_rgba8
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32i_r32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32i_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32i_r32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32i_rgba8i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32i_rgba8
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#r32i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_r32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_r32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_rgba8i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_r32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_snorm_r32f
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_snorm_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_snorm_r32ui
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_snorm_rgba8i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_snorm_r32i
-dEQP-GLES31.functional.image_load_store.2d.format_reinterpret#rgba8_snorm_rgba8
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_32x32
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_12x34
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_1x1
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_7x1
-dEQP-GLES31.functional.image_load_store.2d.image_size#writeonly_32x32
-dEQP-GLES31.functional.image_load_store.2d.image_size#writeonly_12x34
-dEQP-GLES31.functional.image_load_store.2d.image_size#writeonly_1x1
-dEQP-GLES31.functional.image_load_store.2d.image_size#writeonly_7x1
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_writeonly_32x32
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_writeonly_12x34
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_writeonly_1x1
-dEQP-GLES31.functional.image_load_store.2d.image_size#readonly_writeonly_7x1
-dEQP-GLES31.functional.image_load_store.cube.store#rgba32f
-dEQP-GLES31.functional.image_load_store.cube.store#rgba32f_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba16f
-dEQP-GLES31.functional.image_load_store.cube.store#rgba16f_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#r32f
-dEQP-GLES31.functional.image_load_store.cube.store#r32f_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba32ui
-dEQP-GLES31.functional.image_load_store.cube.store#rgba32ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba16ui
-dEQP-GLES31.functional.image_load_store.cube.store#rgba16ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#r32ui
-dEQP-GLES31.functional.image_load_store.cube.store#r32ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba32i
-dEQP-GLES31.functional.image_load_store.cube.store#rgba32i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba16i
-dEQP-GLES31.functional.image_load_store.cube.store#rgba16i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8i
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#r32i
-dEQP-GLES31.functional.image_load_store.cube.store#r32i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8_single_layer
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.store#rgba8_snorm_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba32f
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba32f_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba16f
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba16f_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#r32f
-dEQP-GLES31.functional.image_load_store.cube.load_store#r32f_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba32ui
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba32ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba16ui
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba16ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#r32ui
-dEQP-GLES31.functional.image_load_store.cube.load_store#r32ui_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba32i
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba32i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba16i
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba16i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8i
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#r32i
-dEQP-GLES31.functional.image_load_store.cube.load_store#r32i_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8_single_layer
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.load_store#rgba8_snorm_single_layer
-dEQP-GLES31.functional.image_load_store.cube.atomic#exchange_r32f_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#exchange_r32f_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#add_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#add_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#min_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#min_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#max_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#max_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#and_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#and_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#or_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#or_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#xor_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#xor_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#exchange_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#exchange_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#comp_swap_r32ui_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#add_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#add_r32i_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#min_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#min_r32i_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#max_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#max_r32i_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#and_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#and_r32i_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#or_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#or_r32i_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#xor_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#xor_r32i_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#exchange_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.atomic#exchange_r32i_return_value
-dEQP-GLES31.functional.image_load_store.cube.atomic#comp_swap_r32i_result
-dEQP-GLES31.functional.image_load_store.cube.qualifiers#coherent_r32f
-dEQP-GLES31.functional.image_load_store.cube.qualifiers#volatile_r32f
-dEQP-GLES31.functional.image_load_store.cube.qualifiers#coherent_r32ui
-dEQP-GLES31.functional.image_load_store.cube.qualifiers#volatile_r32ui
-dEQP-GLES31.functional.image_load_store.cube.qualifiers#coherent_r32i
-dEQP-GLES31.functional.image_load_store.cube.qualifiers#volatile_r32i
-dEQP-GLES31.functional.image_load_store.cube.qualifiers#restrict
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba32f_rgba32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba32f_rgba32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba16f_rgba16ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba16f_rgba16i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32f_rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32f_r32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32f_rgba8i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32f_r32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32f_rgba8
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32f_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba32ui_rgba32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba32ui_rgba32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba16ui_rgba16f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba16ui_rgba16i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8ui_r32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8ui_r32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8ui_rgba8i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8ui_r32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8ui_rgba8
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32ui_r32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32ui_rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32ui_rgba8i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32ui_r32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32ui_rgba8
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba32i_rgba32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba32i_rgba32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba16i_rgba16f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba16i_rgba16ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8i_r32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8i_rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8i_r32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8i_r32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8i_rgba8
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32i_r32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32i_rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32i_r32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32i_rgba8i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32i_rgba8
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#r32i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_r32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_r32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_rgba8i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_r32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_snorm_r32f
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_snorm_rgba8ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_snorm_r32ui
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_snorm_rgba8i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_snorm_r32i
-dEQP-GLES31.functional.image_load_store.cube.format_reinterpret#rgba8_snorm_rgba8
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_32x32
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_12x12
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_1x1
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_7x7
-dEQP-GLES31.functional.image_load_store.cube.image_size#writeonly_32x32
-dEQP-GLES31.functional.image_load_store.cube.image_size#writeonly_12x12
-dEQP-GLES31.functional.image_load_store.cube.image_size#writeonly_1x1
-dEQP-GLES31.functional.image_load_store.cube.image_size#writeonly_7x7
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_writeonly_32x32
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_writeonly_12x12
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_writeonly_1x1
-dEQP-GLES31.functional.image_load_store.cube.image_size#readonly_writeonly_7x7
-dEQP-GLES31.functional.image_load_store.3d.store#rgba32f
-dEQP-GLES31.functional.image_load_store.3d.store#rgba32f_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba16f
-dEQP-GLES31.functional.image_load_store.3d.store#rgba16f_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#r32f
-dEQP-GLES31.functional.image_load_store.3d.store#r32f_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba32ui
-dEQP-GLES31.functional.image_load_store.3d.store#rgba32ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba16ui
-dEQP-GLES31.functional.image_load_store.3d.store#rgba16ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#r32ui
-dEQP-GLES31.functional.image_load_store.3d.store#r32ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba32i
-dEQP-GLES31.functional.image_load_store.3d.store#rgba32i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba16i
-dEQP-GLES31.functional.image_load_store.3d.store#rgba16i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8i
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#r32i
-dEQP-GLES31.functional.image_load_store.3d.store#r32i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8_single_layer
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.store#rgba8_snorm_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba32f
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba32f_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba16f
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba16f_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#r32f
-dEQP-GLES31.functional.image_load_store.3d.load_store#r32f_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba32ui
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba32ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba16ui
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba16ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#r32ui
-dEQP-GLES31.functional.image_load_store.3d.load_store#r32ui_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba32i
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba32i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba16i
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba16i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8i
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#r32i
-dEQP-GLES31.functional.image_load_store.3d.load_store#r32i_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8_single_layer
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.load_store#rgba8_snorm_single_layer
-dEQP-GLES31.functional.image_load_store.3d.atomic#exchange_r32f_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#exchange_r32f_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#add_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#add_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#min_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#min_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#max_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#max_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#and_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#and_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#or_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#or_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#xor_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#xor_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#exchange_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#exchange_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#comp_swap_r32ui_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#add_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#add_r32i_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#min_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#min_r32i_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#max_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#max_r32i_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#and_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#and_r32i_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#or_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#or_r32i_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#xor_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#xor_r32i_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#exchange_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.atomic#exchange_r32i_return_value
-dEQP-GLES31.functional.image_load_store.3d.atomic#comp_swap_r32i_result
-dEQP-GLES31.functional.image_load_store.3d.qualifiers#coherent_r32f
-dEQP-GLES31.functional.image_load_store.3d.qualifiers#volatile_r32f
-dEQP-GLES31.functional.image_load_store.3d.qualifiers#coherent_r32ui
-dEQP-GLES31.functional.image_load_store.3d.qualifiers#volatile_r32ui
-dEQP-GLES31.functional.image_load_store.3d.qualifiers#coherent_r32i
-dEQP-GLES31.functional.image_load_store.3d.qualifiers#volatile_r32i
-dEQP-GLES31.functional.image_load_store.3d.qualifiers#restrict
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba32f_rgba32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba32f_rgba32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba16f_rgba16ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba16f_rgba16i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32f_rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32f_r32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32f_rgba8i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32f_r32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32f_rgba8
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32f_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba32ui_rgba32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba32ui_rgba32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba16ui_rgba16f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba16ui_rgba16i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8ui_r32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8ui_r32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8ui_rgba8i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8ui_r32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8ui_rgba8
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32ui_r32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32ui_rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32ui_rgba8i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32ui_r32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32ui_rgba8
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba32i_rgba32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba32i_rgba32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba16i_rgba16f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba16i_rgba16ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8i_r32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8i_rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8i_r32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8i_r32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8i_rgba8
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32i_r32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32i_rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32i_r32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32i_rgba8i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32i_rgba8
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#r32i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_r32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_r32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_rgba8i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_r32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_snorm_r32f
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_snorm_rgba8ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_snorm_r32ui
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_snorm_rgba8i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_snorm_r32i
-dEQP-GLES31.functional.image_load_store.3d.format_reinterpret#rgba8_snorm_rgba8
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_32x32x32
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_12x34x56
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_1x1x1
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_7x1x1
-dEQP-GLES31.functional.image_load_store.3d.image_size#writeonly_32x32x32
-dEQP-GLES31.functional.image_load_store.3d.image_size#writeonly_12x34x56
-dEQP-GLES31.functional.image_load_store.3d.image_size#writeonly_1x1x1
-dEQP-GLES31.functional.image_load_store.3d.image_size#writeonly_7x1x1
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_writeonly_32x32x32
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_writeonly_12x34x56
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_writeonly_1x1x1
-dEQP-GLES31.functional.image_load_store.3d.image_size#readonly_writeonly_7x1x1
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba32f
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba32f_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba16f
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba16f_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#r32f
-dEQP-GLES31.functional.image_load_store.2d_array.store#r32f_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba32ui
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba32ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba16ui
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba16ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.store#r32ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba32i
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba32i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba16i
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba16i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#r32i
-dEQP-GLES31.functional.image_load_store.2d_array.store#r32i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.store#rgba8_snorm_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba32f
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba32f_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba16f
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba16f_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#r32f
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#r32f_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba32ui
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba32ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba16ui
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba16ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#r32ui_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba32i
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba32i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba16i
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba16i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#r32i
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#r32i_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.load_store#rgba8_snorm_single_layer
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#exchange_r32f_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#exchange_r32f_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#add_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#add_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#min_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#min_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#max_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#max_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#and_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#and_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#or_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#or_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#xor_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#xor_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#exchange_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#exchange_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#comp_swap_r32ui_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#add_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#add_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#min_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#min_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#max_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#max_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#and_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#and_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#or_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#or_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#xor_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#xor_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#exchange_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#exchange_r32i_return_value
-dEQP-GLES31.functional.image_load_store.2d_array.atomic#comp_swap_r32i_result
-dEQP-GLES31.functional.image_load_store.2d_array.qualifiers#coherent_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.qualifiers#volatile_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.qualifiers#coherent_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.qualifiers#volatile_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.qualifiers#coherent_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.qualifiers#volatile_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.qualifiers#restrict
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba32f_rgba32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba32f_rgba32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba16f_rgba16ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba16f_rgba16i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32f_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32f_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32f_rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32f_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32f_rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32f_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba32ui_rgba32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba32ui_rgba32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba16ui_rgba16f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba16ui_rgba16i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8ui_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8ui_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8ui_rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8ui_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8ui_rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32ui_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32ui_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32ui_rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32ui_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32ui_rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba32i_rgba32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba32i_rgba32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba16i_rgba16f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba16i_rgba16ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8i_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8i_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8i_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8i_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8i_rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32i_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32i_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32i_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32i_rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32i_rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#r32i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_snorm_r32f
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_snorm_rgba8ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_snorm_r32ui
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_snorm_rgba8i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_snorm_r32i
-dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret#rgba8_snorm_rgba8
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_32x32x32
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_12x34x56
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_1x1x1
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_7x1x1
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#writeonly_32x32x32
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#writeonly_12x34x56
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#writeonly_1x1x1
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#writeonly_7x1x1
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_writeonly_32x32x32
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_writeonly_12x34x56
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_writeonly_1x1x1
-dEQP-GLES31.functional.image_load_store.2d_array.image_size#readonly_writeonly_7x1x1
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba32f
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba16f
-dEQP-GLES31.functional.image_load_store.buffer.store#r32f
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba32ui
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba16ui
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba8ui
-dEQP-GLES31.functional.image_load_store.buffer.store#r32ui
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba32i
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba16i
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba8i
-dEQP-GLES31.functional.image_load_store.buffer.store#r32i
-dEQP-GLES31.functional.image_load_store.buffer.store#rgba8
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba32f
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba16f
-dEQP-GLES31.functional.image_load_store.buffer.load_store#r32f
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba32ui
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba16ui
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba8ui
-dEQP-GLES31.functional.image_load_store.buffer.load_store#r32ui
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba32i
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba16i
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba8i
-dEQP-GLES31.functional.image_load_store.buffer.load_store#r32i
-dEQP-GLES31.functional.image_load_store.buffer.load_store#rgba8
-dEQP-GLES31.functional.image_load_store.buffer.atomic#exchange_r32f_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#exchange_r32f_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#add_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#add_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#min_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#min_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#max_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#max_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#and_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#and_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#or_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#or_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#xor_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#xor_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#exchange_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#exchange_r32ui_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#comp_swap_r32ui_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#add_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#add_r32i_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#min_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#min_r32i_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#max_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#max_r32i_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#and_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#and_r32i_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#or_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#or_r32i_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#xor_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#xor_r32i_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#exchange_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.atomic#exchange_r32i_return_value
-dEQP-GLES31.functional.image_load_store.buffer.atomic#comp_swap_r32i_result
-dEQP-GLES31.functional.image_load_store.buffer.qualifiers#coherent_r32f
-dEQP-GLES31.functional.image_load_store.buffer.qualifiers#volatile_r32f
-dEQP-GLES31.functional.image_load_store.buffer.qualifiers#coherent_r32ui
-dEQP-GLES31.functional.image_load_store.buffer.qualifiers#volatile_r32ui
-dEQP-GLES31.functional.image_load_store.buffer.qualifiers#coherent_r32i
-dEQP-GLES31.functional.image_load_store.buffer.qualifiers#volatile_r32i
-dEQP-GLES31.functional.image_load_store.buffer.qualifiers#restrict
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba32f_rgba32ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba32f_rgba32i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba16f_rgba16ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba16f_rgba16i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32f_rgba8ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32f_r32ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32f_rgba8i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32f_r32i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32f_rgba8
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32f_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba32ui_rgba32f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba32ui_rgba32i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba16ui_rgba16f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba16ui_rgba16i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8ui_r32f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8ui_r32ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8ui_rgba8i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8ui_r32i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8ui_rgba8
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32ui_r32f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32ui_rgba8ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32ui_rgba8i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32ui_r32i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32ui_rgba8
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32ui_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba32i_rgba32f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba32i_rgba32ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba16i_rgba16f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba16i_rgba16ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8i_r32f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8i_rgba8ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8i_r32ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8i_r32i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8i_rgba8
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32i_r32f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32i_rgba8ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32i_r32ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32i_rgba8i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32i_rgba8
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#r32i_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8_r32f
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8_rgba8ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8_r32ui
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8_rgba8i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8_r32i
-dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret#rgba8_rgba8_snorm
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_32
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_12
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_1
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_7
-dEQP-GLES31.functional.image_load_store.buffer.image_size#writeonly_32
-dEQP-GLES31.functional.image_load_store.buffer.image_size#writeonly_12
-dEQP-GLES31.functional.image_load_store.buffer.image_size#writeonly_1
-dEQP-GLES31.functional.image_load_store.buffer.image_size#writeonly_7
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_writeonly_32
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_writeonly_12
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_writeonly_1
-dEQP-GLES31.functional.image_load_store.buffer.image_size#readonly_writeonly_7
-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
-dEQP-GLES31.functional.image_load_store.early_fragment_tests#early_fragment_tests_stencil
-dEQP-GLES31.functional.atomic_counter.get#1_counter_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get#4_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_branch#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_branch#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_branch#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_branch#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_branch#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_branch#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_branch#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#1_counter_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.inc#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#4_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_branch#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_branch#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_branch#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_branch#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_branch#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_branch#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_branch#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#1_counter_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.dec#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#4_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec_branch#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec_branch#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec_branch#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec_branch#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec_branch#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.dec_branch#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.dec_branch#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#1_counter_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#4_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_branch#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec#1_counter_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get_dec#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_dec_branch#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#1_counter_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#4_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.inc_dec_branch#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#1_counter_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#4_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#1_counter_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#1_counter_1_call_5000_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#1_counter_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#1_counter_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#1_counter_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#1_counter_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#4_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#4_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#4_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#4_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#4_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#8_counters_1_call_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#8_counters_5_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#8_counters_100_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch#8_counters_100_calls_10_threads
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.get_inc#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_inc#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.inc_dec#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_inc#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec#8_counters_1_call_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec#8_counters_1_call_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec#8_counters_5_calls_1_thread
-dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.inc_dec#8_counters_5_calls_1000_threads
-dEQP-GLES31.functional.atomic_counter.layout.invalid#invalid_binding
-dEQP-GLES31.functional.atomic_counter.layout.invalid#invalid_default_binding
-dEQP-GLES31.functional.atomic_counter.layout.invalid#invalid_offset_align
-dEQP-GLES31.functional.atomic_counter.layout.invalid#invalid_offset_overlap
-dEQP-GLES31.functional.atomic_counter.layout.invalid#invalid_default_offset
-dEQP-GLES31.functional.stencil_texturing.format#depth32f_stencil8_2d
-dEQP-GLES31.functional.stencil_texturing.format#depth32f_stencil8_2d_array
-dEQP-GLES31.functional.stencil_texturing.format#depth32f_stencil8_cube
-dEQP-GLES31.functional.stencil_texturing.format#depth24_stencil8_2d
-dEQP-GLES31.functional.stencil_texturing.format#depth24_stencil8_2d_array
-dEQP-GLES31.functional.stencil_texturing.format#depth24_stencil8_cube
-dEQP-GLES31.functional.stencil_texturing.format#stencil_index8_2d
-dEQP-GLES31.functional.stencil_texturing.format#stencil_index8_2d_array
-dEQP-GLES31.functional.stencil_texturing.format#stencil_index8_cube
-dEQP-GLES31.functional.stencil_texturing.render#depth32f_stencil8_clear
-dEQP-GLES31.functional.stencil_texturing.render#depth32f_stencil8_draw
-dEQP-GLES31.functional.stencil_texturing.render#depth24_stencil8_clear
-dEQP-GLES31.functional.stencil_texturing.render#depth24_stencil8_draw
-dEQP-GLES31.functional.stencil_texturing.misc#compare_mode_effect
-dEQP-GLES31.functional.stencil_texturing.misc#base_level
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba16f_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba16f_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba16f_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba16f_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba16f_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba16f_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#r11f_g11f_b10f_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#r11f_g11f_b10f_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#r11f_g11f_b10f_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#r11f_g11f_b10f_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#r11f_g11f_b10f_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#r11f_g11f_b10f_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb9_e5_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb9_e5_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb9_e5_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb9_e5_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb9_e5_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb9_e5_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_snorm_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_snorm_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_snorm_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_snorm_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_snorm_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba8_snorm_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb565_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb565_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb565_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb565_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb565_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb565_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba4_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba4_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba4_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba4_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba4_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgba4_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb5_a1_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb5_a1_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb5_a1_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb5_a1_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb5_a1_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb5_a1_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#srgb8_alpha8_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#srgb8_alpha8_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#srgb8_alpha8_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#srgb8_alpha8_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#srgb8_alpha8_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#srgb8_alpha8_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb10_a2_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb10_a2_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb10_a2_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb10_a2_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb10_a2_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.formats#rgb10_a2_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#8x8x6_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#8x8x6_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#8x8x6_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#8x8x6_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#8x8x6_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#8x8x6_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#64x64x12_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#64x64x12_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#64x64x12_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#64x64x12_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#64x64x12_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#64x64x12_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#128x128x12_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#128x128x12_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#128x128x12_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#128x128x12_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#128x128x12_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#128x128x12_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#7x7x12_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#7x7x12_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#7x7x12_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#7x7x12_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#7x7x12_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#7x7x12_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#63x63x18_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#63x63x18_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#63x63x18_nearest_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#63x63x18_linear_mipmap_nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#63x63x18_nearest_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.sizes#63x63x18_linear_mipmap_linear
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_nearest_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_linear_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_nearest_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_linear_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_nearest_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_nearest_linear_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_nearest_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_nearest_linear_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_nearest_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#nearest_mipmap_linear_linear_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_nearest_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_clamp_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_clamp_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_clamp_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_repeat_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_repeat_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_repeat_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_mirror_clamp
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_mirror_repeat
-dEQP-GLES31.functional.texture.filtering.cube_array.combinations#linear_mipmap_linear_linear_mirror_mirror
-dEQP-GLES31.functional.texture.filtering.cube_array.no_edges_visible#nearest
-dEQP-GLES31.functional.texture.filtering.cube_array.no_edges_visible#linear
-dEQP-GLES31.functional.texture.format.unsized#alpha_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#alpha_cube_array_npot
-dEQP-GLES31.functional.texture.format.unsized#luminance_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#luminance_cube_array_npot
-dEQP-GLES31.functional.texture.format.unsized#luminance_alpha_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#luminance_alpha_cube_array_npot
-dEQP-GLES31.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#rgb_unsigned_short_5_6_5_cube_array_npot
-dEQP-GLES31.functional.texture.format.unsized#rgb_unsigned_byte_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#rgb_unsigned_byte_cube_array_npot
-dEQP-GLES31.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#rgba_unsigned_short_4_4_4_4_cube_array_npot
-dEQP-GLES31.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#rgba_unsigned_short_5_5_5_1_cube_array_npot
-dEQP-GLES31.functional.texture.format.unsized#rgba_unsigned_byte_cube_array_pot
-dEQP-GLES31.functional.texture.format.unsized#rgba_unsigned_byte_cube_array_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba32f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba32f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba32i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba32i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba32ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba32ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba16f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba16f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba16i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba16i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba16ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba16ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#srgb8_alpha8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#srgb8_alpha8_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb10_a2_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb10_a2_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb10_a2ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb10_a2ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba4_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba4_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb5_a1_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb5_a1_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8_snorm_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgba8_snorm_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb565_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb565_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r11f_g11f_b10f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r11f_g11f_b10f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb32f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb32f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb32i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb32i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb32ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb32ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb16f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb16f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb16i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb16i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb16ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb16ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8_snorm_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8_snorm_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb8ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#srgb8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#srgb8_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb9_e5_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rgb9_e5_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg32f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg32f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg32i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg32i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg32ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg32ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg16f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg16f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg16i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg16i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg16ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg16ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8_snorm_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#rg8_snorm_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r32f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r32f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r32i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r32i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r32ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r32ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r16f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r16f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r16i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r16i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r16ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r16ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8i_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8i_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8ui_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8ui_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8_snorm_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#r8_snorm_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth_component32f_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth_component32f_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth_component24_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth_component24_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth_component16_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth_component16_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth32f_stencil8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth32f_stencil8_npot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth24_stencil8_pot
-dEQP-GLES31.functional.texture.format.sized.cube_array#depth24_stencil8_npot
-dEQP-GLES31.functional.texture.format.buffer#r8_pot
-dEQP-GLES31.functional.texture.format.buffer#r8_npot
-dEQP-GLES31.functional.texture.format.buffer#r16f_pot
-dEQP-GLES31.functional.texture.format.buffer#r16f_npot
-dEQP-GLES31.functional.texture.format.buffer#r32f_pot
-dEQP-GLES31.functional.texture.format.buffer#r32f_npot
-dEQP-GLES31.functional.texture.format.buffer#r8i_pot
-dEQP-GLES31.functional.texture.format.buffer#r8i_npot
-dEQP-GLES31.functional.texture.format.buffer#r16i_pot
-dEQP-GLES31.functional.texture.format.buffer#r16i_npot
-dEQP-GLES31.functional.texture.format.buffer#r32i_pot
-dEQP-GLES31.functional.texture.format.buffer#r32i_npot
-dEQP-GLES31.functional.texture.format.buffer#r8ui_pot
-dEQP-GLES31.functional.texture.format.buffer#r8ui_npot
-dEQP-GLES31.functional.texture.format.buffer#r16ui_pot
-dEQP-GLES31.functional.texture.format.buffer#r16ui_npot
-dEQP-GLES31.functional.texture.format.buffer#r32ui_pot
-dEQP-GLES31.functional.texture.format.buffer#r32ui_npot
-dEQP-GLES31.functional.texture.format.buffer#rg8_pot
-dEQP-GLES31.functional.texture.format.buffer#rg8_npot
-dEQP-GLES31.functional.texture.format.buffer#rg16f_pot
-dEQP-GLES31.functional.texture.format.buffer#rg16f_npot
-dEQP-GLES31.functional.texture.format.buffer#rg32f_pot
-dEQP-GLES31.functional.texture.format.buffer#rg32f_npot
-dEQP-GLES31.functional.texture.format.buffer#rg8i_pot
-dEQP-GLES31.functional.texture.format.buffer#rg8i_npot
-dEQP-GLES31.functional.texture.format.buffer#rg16i_pot
-dEQP-GLES31.functional.texture.format.buffer#rg16i_npot
-dEQP-GLES31.functional.texture.format.buffer#rg32i_pot
-dEQP-GLES31.functional.texture.format.buffer#rg32i_npot
-dEQP-GLES31.functional.texture.format.buffer#rg8ui_pot
-dEQP-GLES31.functional.texture.format.buffer#rg8ui_npot
-dEQP-GLES31.functional.texture.format.buffer#rg16ui_pot
-dEQP-GLES31.functional.texture.format.buffer#rg16ui_npot
-dEQP-GLES31.functional.texture.format.buffer#rg32ui_pot
-dEQP-GLES31.functional.texture.format.buffer#rg32ui_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba8_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba8_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba16f_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba16f_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba32f_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba32f_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba8i_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba8i_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba16i_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba16i_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba32i_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba32i_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba8ui_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba8ui_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba16ui_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba16ui_npot
-dEQP-GLES31.functional.texture.format.buffer#rgba32ui_pot
-dEQP-GLES31.functional.texture.format.buffer#rgba32ui_npot
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba32f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba32i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba32ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba16f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba16i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba16ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba8_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba8i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba8ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#srgb8_alpha8_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb10_a2_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb10_a2ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba4_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb5_a1_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgba8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb8_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb565_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r11f_g11f_b10f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb32f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb32i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb32ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb16f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb16i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb16ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb8i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb8ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#srgb8_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rgb9_e5_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg32f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg32i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg32ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg16f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg16i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg16ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg8_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg8i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg8ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#rg8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r32f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r32i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r32ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r16f_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r16i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r16ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r8_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r8i_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r8ui_cube_array
-dEQP-GLES31.functional.texture.specification.basic_teximage3d#r8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba32f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba32i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba32ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba16f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba16i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba16ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba8i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba8ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#srgb8_alpha8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb10_a2_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb10_a2ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba4_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb5_a1_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgba8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb565_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r11f_g11f_b10f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb32f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb32i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb32ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb16f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb16i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb16ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#srgb8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb9_e5_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg32f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg32i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg32ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg16f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg16i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg16ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg8i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg8ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rg8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r32f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r32i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r32ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r16f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r16i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r16ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r8i_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r8ui_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#r8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_offset_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_alignment_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_image_height_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_row_length_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_skip_images_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_skip_rows_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_pbo#rgb8_skip_pixels_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth#depth_component32f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth#depth_component24_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth#depth_component16_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth#depth32f_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth#depth24_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth_pbo#depth_component32f_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth_pbo#depth_component24_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth_pbo#depth_component16_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth_pbo#depth32f_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.teximage3d_depth_pbo#depth24_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba32f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba32i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba16f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba16i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba8i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#srgb8_alpha8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb10_a2_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb10_a2ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba4_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb5_a1_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgba8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb565_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r11f_g11f_b10f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb32f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb32i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb16f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb16i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#srgb8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb9_e5_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg32f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg32i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg16f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg16i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg8i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rg8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r32f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r32i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r16f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r16i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r8i_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#r8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_offset_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_image_height_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_row_length_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_images_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_rows_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_pbo#rgb8_skip_pixels_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_depth#depth_component32f_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_depth#depth_component24_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_depth#depth_component16_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_depth#depth32f_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.texsubimage3d_depth#depth24_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba32f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba32i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba16f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba16i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba8i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#srgb8_alpha8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb10_a2_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb10_a2ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba4_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb5_a1_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgba8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb565_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r11f_g11f_b10f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb32f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb32i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb16f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb16i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb8i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#srgb8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rgb9_e5_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg32f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg32i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg16f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg16i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg8i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#rg8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r32f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r32i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r32ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r16f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r16i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r16ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r8i_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r8ui_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#r8_snorm_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#depth_component32f_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#depth_component24_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#depth_component16_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#depth32f_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.format#depth24_stencil8_cube_array
-dEQP-GLES31.functional.texture.specification.texstorage3d.size#cube_array_1x1x6_1_levels
-dEQP-GLES31.functional.texture.specification.texstorage3d.size#cube_array_2x2x6_2_levels
-dEQP-GLES31.functional.texture.specification.texstorage3d.size#cube_array_32x32x6_3_levels
-dEQP-GLES31.functional.texture.specification.texstorage3d.size#cube_array_64x64x6_4_levels
-dEQP-GLES31.functional.texture.specification.texstorage3d.size#cube_array_57x57x12_1_levels
-dEQP-GLES31.functional.texture.specification.texstorage3d.size#cube_array_57x57x12_2_levels
-dEQP-GLES31.functional.texture.specification.texstorage3d.size#cube_array_57x57x12_6_levels
-dEQP-GLES31.functional.texture.multisample.samples_1#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_1#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_2#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_2#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_2#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_2#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_2#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_2#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_2#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_3#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_3#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_3#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_3#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_3#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_3#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_3#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_4#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_4#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_4#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_4#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_4#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_4#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_4#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_8#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_8#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_8#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_8#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_8#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_8#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_8#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_10#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_10#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_10#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_10#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_10#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_10#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_10#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_12#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_12#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_12#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_12#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_12#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_12#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_12#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_13#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_13#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_13#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_13#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_13#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_13#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_13#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_16#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_16#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_16#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_16#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_16#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_16#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_16#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_64#sample_position
-dEQP-GLES31.functional.texture.multisample.samples_64#sample_mask_only
-dEQP-GLES31.functional.texture.multisample.samples_64#sample_mask_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_64#sample_mask_and_sample_coverage
-dEQP-GLES31.functional.texture.multisample.samples_64#sample_mask_and_sample_coverage_and_alpha_to_coverage
-dEQP-GLES31.functional.texture.multisample.samples_64#sample_mask_non_effective_bits
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_color_2d
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_color_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_int_2d
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_int_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_uint_2d
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_uint_2d_array
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_depth_2d
-dEQP-GLES31.functional.texture.multisample.samples_64#use_texture_depth_2d_array
-dEQP-GLES31.functional.texture.multisample.negative#fbo_attach_different_sample_count_tex_tex
-dEQP-GLES31.functional.texture.multisample.negative#fbo_attach_different_sample_count_tex_rbo
-dEQP-GLES31.functional.texture.multisample.negative#fbo_attach_different_fixed_state_tex_tex
-dEQP-GLES31.functional.texture.multisample.negative#fbo_attach_different_fixed_state_tex_rbo
-dEQP-GLES31.functional.texture.multisample.negative#fbo_attach_non_zero_level
-dEQP-GLES31.functional.texture.multisample.negative#texture_min_filter
-dEQP-GLES31.functional.texture.multisample.negative#texture_mag_filter
-dEQP-GLES31.functional.texture.multisample.negative#texture_wrap_s
-dEQP-GLES31.functional.texture.multisample.negative#texture_wrap_t
-dEQP-GLES31.functional.texture.multisample.negative#texture_wrap_r
-dEQP-GLES31.functional.texture.multisample.negative#texture_min_lod
-dEQP-GLES31.functional.texture.multisample.negative#texture_max_lod
-dEQP-GLES31.functional.texture.multisample.negative#texture_compare_mode
-dEQP-GLES31.functional.texture.multisample.negative#texture_compare_func
-dEQP-GLES31.functional.texture.multisample.negative#texture_base_level
-dEQP-GLES31.functional.texture.multisample.negative#texture_high_sample_count
-dEQP-GLES31.functional.texture.multisample.negative#texture_zero_sample_count
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.2d_array.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.basic.cube.depth32f.no_corners.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d_array.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.min_required_offset.2d_array.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.size_pot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.size_pot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.size_pot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.size_npot#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.size_npot#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.size_npot#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle#green_blue_alpha_zero
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle#blue_alpha_zero_one
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle#alpha_zero_one_red
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle#zero_one_red_green
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle#one_red_green_blue
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.filter_mode#min_nearest_mipmap_nearest_mag_nearest
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.base_level#level_2
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_pot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_pot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_pot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_pot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_pot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_pot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_npot.compare_less#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_npot.compare_less#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_npot.compare_less#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_npot.compare_greater#clamp_to_edge_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_npot.compare_greater#repeat_mirrored_repeat
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.size_npot.compare_greater#mirrored_repeat_clamp_to_edge
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.filter_mode#min_nearest_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.filter_mode#min_nearest_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mipmap_nearest_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.filter_mode#min_linear_mipmap_linear_mag_linear
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.base_level#level_1
-dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.depth32f.base_level#level_2
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_texture_as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_vertex_texture_as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_index_array_as_vertex_texture_as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.render.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.bufferdata#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.buffersubdata#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_write#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#buffer_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#buffer_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#buffer_size_65536
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#buffer_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#buffer_size_131071
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#range_size_512
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#range_size_513
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#range_size_65537
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#range_size_98304
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#offset_1_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify.mapbuffer_readwrite#offset_7_alignments
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array_as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array_as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array_as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.bufferdata#as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array_as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array_as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array_as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.buffersubdata#as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array_as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array_as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array_as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_write#as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array_as_index_array
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array_as_index_array_as_vertex_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array_as_index_array_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.modify_render.mapbuffer_readwrite#as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture_as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture_as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture_as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_texture_as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture_as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture_as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture_as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_vertex_texture_as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture_as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture_as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture_as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_index_array_as_vertex_texture_as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#bufferdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#buffersubdata
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#mapbuffer_write
-dEQP-GLES31.functional.texture.texture_buffer.render_modify.as_vertex_array_as_index_array_as_vertex_texture_as_fragment_texture#mapbuffer_readwrite
-dEQP-GLES31.functional.state_query.integer#max_color_texture_samples_getboolean
-dEQP-GLES31.functional.state_query.integer#max_color_texture_samples_getinteger
-dEQP-GLES31.functional.state_query.integer#max_color_texture_samples_getinteger64
-dEQP-GLES31.functional.state_query.integer#max_color_texture_samples_getfloat
-dEQP-GLES31.functional.state_query.integer#max_depth_texture_samples_getboolean
-dEQP-GLES31.functional.state_query.integer#max_depth_texture_samples_getinteger
-dEQP-GLES31.functional.state_query.integer#max_depth_texture_samples_getinteger64
-dEQP-GLES31.functional.state_query.integer#max_depth_texture_samples_getfloat
-dEQP-GLES31.functional.state_query.integer#max_integer_samples_getboolean
-dEQP-GLES31.functional.state_query.integer#max_integer_samples_getinteger
-dEQP-GLES31.functional.state_query.integer#max_integer_samples_getinteger64
-dEQP-GLES31.functional.state_query.integer#max_integer_samples_getfloat
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_getboolean
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_getinteger
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_getinteger64
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_getfloat
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_array_getboolean
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_array_getinteger
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_array_getinteger64
-dEQP-GLES31.functional.state_query.integer#texture_binding_2d_multisample_array_getfloat
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_relative_offset_getboolean
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_relative_offset_getinteger
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_relative_offset_getinteger64
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_relative_offset_getfloat
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_bindings_getboolean
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_bindings_getinteger
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_bindings_getinteger64
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_bindings_getfloat
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_stride_getboolean
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_stride_getinteger
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_stride_getinteger64
-dEQP-GLES31.functional.state_query.integer#max_vertex_attrib_stride_getfloat
-dEQP-GLES31.functional.state_query.integer#shader_storage_buffer_offset_alignment_getboolean
-dEQP-GLES31.functional.state_query.integer#shader_storage_buffer_offset_alignment_getinteger
-dEQP-GLES31.functional.state_query.integer#shader_storage_buffer_offset_alignment_getinteger64
-dEQP-GLES31.functional.state_query.integer#shader_storage_buffer_offset_alignment_getfloat
-dEQP-GLES31.functional.state_query.indexed#sample_mask_value_getintegeri_v
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#samples_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#samples_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#fixed_sample_locations_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#fixed_sample_locations_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#width_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#width_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#height_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#height_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#red_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#red_size_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#green_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#green_size_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#blue_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#blue_size_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#alpha_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#alpha_size_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#depth_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#depth_size_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#stencil_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#stencil_size_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#shared_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#shared_size_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#red_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#red_type_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#green_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#green_type_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#blue_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#blue_type_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#alpha_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#alpha_type_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#depth_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#depth_type_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#compressed_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#compressed_float
-dEQP-GLES31.functional.state_query.shader#sampler_type
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#r8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rg8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgb8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgb565_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba4_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgb5_a1_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgb10_a2_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgb10_a2ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#srgb8_alpha8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#r8i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#r8ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#r16i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#r16ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#r32i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#r32ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rg8i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rg8ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rg16i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rg16ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rg32i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rg32ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba8i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba8ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba16i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba16ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba32i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#rgba32ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#depth_component16_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#depth_component24_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#depth_component32f_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#depth24_stencil8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#depth32f_stencil8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample#stencil_index8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#r8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rg8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgb8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgb565_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba4_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgb5_a1_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgb10_a2_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgb10_a2ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#srgb8_alpha8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#r8i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#r8ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#r16i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#r16ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#r32i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#r32ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rg8i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rg8ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rg16i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rg16ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rg32i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rg32ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba8i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba8ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba16i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba16ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba32i_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#rgba32ui_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#depth_component16_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#depth_component24_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#depth_component32f_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#depth24_stencil8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#depth32f_stencil8_samples
-dEQP-GLES31.functional.state_query.internal_format.texture_2d_multisample_array#stencil_index8_samples
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib#vertex_attrib_binding
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.vertex_attrib#vertex_attrib_relative_offset
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_divisor_getintegeri
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_divisor_getintegeri64
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_divisor_mixed
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_stride_mixed
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_buffer_mixed
-dEQP-GLES31.functional.state_query.multisample_interpolation.min_fragment_interpolation_offset#get_boolean
-dEQP-GLES31.functional.state_query.multisample_interpolation.min_fragment_interpolation_offset#get_integer
-dEQP-GLES31.functional.state_query.multisample_interpolation.min_fragment_interpolation_offset#get_float
-dEQP-GLES31.functional.state_query.multisample_interpolation.min_fragment_interpolation_offset#get_integer64
-dEQP-GLES31.functional.state_query.multisample_interpolation.max_fragment_interpolation_offset#get_boolean
-dEQP-GLES31.functional.state_query.multisample_interpolation.max_fragment_interpolation_offset#get_integer
-dEQP-GLES31.functional.state_query.multisample_interpolation.max_fragment_interpolation_offset#get_float
-dEQP-GLES31.functional.state_query.multisample_interpolation.max_fragment_interpolation_offset#get_integer64
-dEQP-GLES31.functional.state_query.multisample_interpolation.fragment_interpolation_offset_bits#get_boolean
-dEQP-GLES31.functional.state_query.multisample_interpolation.fragment_interpolation_offset_bits#get_integer
-dEQP-GLES31.functional.state_query.multisample_interpolation.fragment_interpolation_offset_bits#get_float
-dEQP-GLES31.functional.state_query.multisample_interpolation.fragment_interpolation_offset_bits#get_integer64
-dEQP-GLES31.functional.multisample.default_framebuffer#proportionality_sample_mask
-dEQP-GLES31.functional.multisample.default_framebuffer#constancy_sample_mask
-dEQP-GLES31.functional.multisample.default_framebuffer#constancy_alpha_to_coverage_sample_mask
-dEQP-GLES31.functional.multisample.default_framebuffer#constancy_sample_coverage_sample_mask
-dEQP-GLES31.functional.multisample.default_framebuffer#constancy_alpha_to_coverage_sample_coverage_sample_mask
-dEQP-GLES31.functional.multisample.default_framebuffer#sample_mask_non_effective_bits
-dEQP-GLES31.functional.synchronization.in_invocation#image_write_read
-dEQP-GLES31.functional.synchronization.in_invocation#image_read_write
-dEQP-GLES31.functional.synchronization.in_invocation#image_overwrite
-dEQP-GLES31.functional.synchronization.in_invocation#image_alias_write
-dEQP-GLES31.functional.synchronization.in_invocation#image_alias_overwrite
-dEQP-GLES31.functional.synchronization.in_invocation#image_atomic_write_read
-dEQP-GLES31.functional.synchronization.in_invocation#image_atomic_read_write
-dEQP-GLES31.functional.synchronization.in_invocation#image_atomic_overwrite
-dEQP-GLES31.functional.synchronization.in_invocation#image_atomic_alias_write
-dEQP-GLES31.functional.synchronization.in_invocation#image_atomic_alias_overwrite
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_write_read
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_read_write
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_overwrite
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_alias_write
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_atomic_write_read
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_atomic_read_write
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_atomic_overwrite
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_atomic_alias_write
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_atomic_alias_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#image_write_read
-dEQP-GLES31.functional.synchronization.inter_invocation#image_read_write
-dEQP-GLES31.functional.synchronization.inter_invocation#image_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#image_alias_write
-dEQP-GLES31.functional.synchronization.inter_invocation#image_alias_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#image_atomic_write_read
-dEQP-GLES31.functional.synchronization.inter_invocation#image_atomic_read_write
-dEQP-GLES31.functional.synchronization.inter_invocation#image_atomic_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#image_atomic_alias_write
-dEQP-GLES31.functional.synchronization.inter_invocation#image_atomic_alias_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_write_read
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_read_write
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_alias_write
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_alias_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_atomic_write_read
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_atomic_read_write
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_atomic_overwrite
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_atomic_alias_write
-dEQP-GLES31.functional.synchronization.inter_invocation#ssbo_atomic_alias_overwrite
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_read_write
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_overwrite
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_multiple_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_multiple_interleaved_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_multiple_unrelated_write_read_ordered
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_multiple_unrelated_write_read_non_ordered
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_atomic_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_atomic_read_write
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_atomic_overwrite
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_atomic_multiple_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_atomic_multiple_interleaved_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_atomic_multiple_unrelated_write_read_ordered
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#image_atomic_multiple_unrelated_write_read_non_ordered
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_read_write
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_overwrite
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_multiple_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_multiple_interleaved_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_multiple_unrelated_write_read_ordered
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_multiple_unrelated_write_read_non_ordered
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_atomic_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_atomic_read_write
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_atomic_overwrite
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_atomic_multiple_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_atomic_multiple_interleaved_write_read
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_atomic_multiple_unrelated_write_read_ordered
-dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier#ssbo_atomic_multiple_unrelated_write_read_non_ordered
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_2_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_5_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_100_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_2_calls_4k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_5_calls_4k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_100_calls_4k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_2_calls_32k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_5_calls_32k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_dispatch_100_calls_32k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_2_calls_8x8_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_5_calls_8x8_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_100_calls_8x8_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_2_calls_32x32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_5_calls_32x32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_100_calls_32x32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_2_calls_128x128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_5_calls_128x128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#image_atomic_dispatch_100_calls_128x128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_2_calls_32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_5_calls_32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_100_calls_32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_2_calls_128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_5_calls_128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_100_calls_128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_2_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_5_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#atomic_counter_dispatch_100_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_2_calls_32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_5_calls_32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_100_calls_32_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_2_calls_128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_5_calls_128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_100_calls_128_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_2_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_5_calls_1k_invocations
-dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier#ssbo_atomic_counter_mixed_dispatch_100_calls_1k_invocations
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_input_components
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_output_components
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_image_uniforms
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_texture_image_units
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_output_vertices
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_total_output_components
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_uniform_components
-dEQP-GLES31.functional.geometry_shading.query#geometry_linked_vertices_out
-dEQP-GLES31.functional.geometry_shading.query#geometry_linked_input_type
-dEQP-GLES31.functional.geometry_shading.query#geometry_linked_output_type
-dEQP-GLES31.functional.geometry_shading.query#geometry_shader_invocations
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_shader_invocations
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_uniform_blocks
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_shader_storage_blocks
-dEQP-GLES31.functional.geometry_shading.query#layer_provoking_vertex
-dEQP-GLES31.functional.geometry_shading.query#primitives_generated_no_geometry
-dEQP-GLES31.functional.geometry_shading.query#primitives_generated_no_amplification
-dEQP-GLES31.functional.geometry_shading.query#primitives_generated_amplification
-dEQP-GLES31.functional.geometry_shading.query#primitives_generated_partial_primitives
-dEQP-GLES31.functional.geometry_shading.query#primitives_generated_instanced
-dEQP-GLES31.functional.geometry_shading.query#max_framebuffer_layers
-dEQP-GLES31.functional.geometry_shading.query#framebuffer_default_layers
-dEQP-GLES31.functional.geometry_shading.query#framebuffer_attachment_layered
-dEQP-GLES31.functional.geometry_shading.query#framebuffer_incomplete_layer_targets
-dEQP-GLES31.functional.geometry_shading.query#referenced_by_geometry_shader
-dEQP-GLES31.functional.geometry_shading.basic#output_10
-dEQP-GLES31.functional.geometry_shading.basic#output_128
-dEQP-GLES31.functional.geometry_shading.basic#output_256
-dEQP-GLES31.functional.geometry_shading.basic#output_max
-dEQP-GLES31.functional.geometry_shading.basic#output_10_and_100
-dEQP-GLES31.functional.geometry_shading.basic#output_100_and_10
-dEQP-GLES31.functional.geometry_shading.basic#output_0_and_128
-dEQP-GLES31.functional.geometry_shading.basic#output_128_and_0
-dEQP-GLES31.functional.geometry_shading.basic#output_vary_by_attribute
-dEQP-GLES31.functional.geometry_shading.basic#output_vary_by_uniform
-dEQP-GLES31.functional.geometry_shading.basic#output_vary_by_texture
-dEQP-GLES31.functional.geometry_shading.basic#point_size
-dEQP-GLES31.functional.geometry_shading.basic#primitive_id_in
-dEQP-GLES31.functional.geometry_shading.basic#primitive_id_in_restarted
-dEQP-GLES31.functional.geometry_shading.basic#primitive_id
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#points
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#lines
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#line_loop
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#line_strip
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#triangles
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#triangle_strip
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#triangle_fan
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#lines_adjacency
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#line_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.input.basic_primitive#triangles_adjacency
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_0
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_1
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_2
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_3
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_4
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_5
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_6
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_7
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_8
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_9
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_10
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_11
-dEQP-GLES31.functional.geometry_shading.input.triangle_strip_adjacency#vertex_count_12
-dEQP-GLES31.functional.geometry_shading.conversion#triangles_to_points
-dEQP-GLES31.functional.geometry_shading.conversion#lines_to_points
-dEQP-GLES31.functional.geometry_shading.conversion#points_to_lines
-dEQP-GLES31.functional.geometry_shading.conversion#triangles_to_lines
-dEQP-GLES31.functional.geometry_shading.conversion#points_to_triangles
-dEQP-GLES31.functional.geometry_shading.conversion#lines_to_triangles
-dEQP-GLES31.functional.geometry_shading.emit#points_emit_1_end_1
-dEQP-GLES31.functional.geometry_shading.emit#points_emit_1_end_2
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_1_end_1
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_2_end_1
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_1_end_2
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_2_end_2
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_2_end_2_emit_2_end_0
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_1_end_1
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_2_end_1
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_3_end_1
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_1_end_2
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_2_end_2
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_3_end_2
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_3_end_2_emit_3_end_0
-dEQP-GLES31.functional.geometry_shading.varying#vertex_no_op_geometry_out_1
-dEQP-GLES31.functional.geometry_shading.varying#vertex_out_0_geometry_out_1
-dEQP-GLES31.functional.geometry_shading.varying#vertex_out_0_geometry_out_2
-dEQP-GLES31.functional.geometry_shading.varying#vertex_out_1_geometry_out_0
-dEQP-GLES31.functional.geometry_shading.varying#vertex_out_1_geometry_out_2
-dEQP-GLES31.functional.geometry_shading.layered#render_with_default_layer_cubemap
-dEQP-GLES31.functional.geometry_shading.layered#render_with_default_layer_3d
-dEQP-GLES31.functional.geometry_shading.layered#render_with_default_layer_2d_array
-dEQP-GLES31.functional.geometry_shading.layered#render_with_default_layer_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.layered#render_to_one_cubemap
-dEQP-GLES31.functional.geometry_shading.layered#render_to_one_3d
-dEQP-GLES31.functional.geometry_shading.layered#render_to_one_2d_array
-dEQP-GLES31.functional.geometry_shading.layered#render_to_one_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.layered#render_to_all_cubemap
-dEQP-GLES31.functional.geometry_shading.layered#render_to_all_3d
-dEQP-GLES31.functional.geometry_shading.layered#render_to_all_2d_array
-dEQP-GLES31.functional.geometry_shading.layered#render_to_all_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.layered#render_different_to_cubemap
-dEQP-GLES31.functional.geometry_shading.layered#render_different_to_3d
-dEQP-GLES31.functional.geometry_shading.layered#render_different_to_2d_array
-dEQP-GLES31.functional.geometry_shading.layered#render_different_to_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.layered#fragment_layer_cubemap
-dEQP-GLES31.functional.geometry_shading.layered#fragment_layer_3d
-dEQP-GLES31.functional.geometry_shading.layered#fragment_layer_2d_array
-dEQP-GLES31.functional.geometry_shading.layered#fragment_layer_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.layered#layer_provoking_vertex_cubemap
-dEQP-GLES31.functional.geometry_shading.layered#layer_provoking_vertex_3d
-dEQP-GLES31.functional.geometry_shading.layered#layer_provoking_vertex_2d_array
-dEQP-GLES31.functional.geometry_shading.layered#layer_provoking_vertex_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_1_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_2_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_8_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_32_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_max_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_output_different_2_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_output_different_8_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_output_different_32_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#geometry_output_different_max_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#invocation_per_layer_cubemap
-dEQP-GLES31.functional.geometry_shading.instanced#invocation_per_layer_3d
-dEQP-GLES31.functional.geometry_shading.instanced#invocation_per_layer_2d_array
-dEQP-GLES31.functional.geometry_shading.instanced#invocation_per_layer_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.instanced#multiple_layers_per_invocation_cubemap
-dEQP-GLES31.functional.geometry_shading.instanced#multiple_layers_per_invocation_3d
-dEQP-GLES31.functional.geometry_shading.instanced#multiple_layers_per_invocation_2d_array
-dEQP-GLES31.functional.geometry_shading.instanced#multiple_layers_per_invocation_2d_multisample_array
-dEQP-GLES31.functional.geometry_shading.instanced#invocation_output_vary_by_attribute
-dEQP-GLES31.functional.geometry_shading.instanced#invocation_output_vary_by_uniform
-dEQP-GLES31.functional.geometry_shading.instanced#invocation_output_vary_by_texture
-dEQP-GLES31.functional.geometry_shading.instanced#draw_2_instances_geometry_2_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#draw_2_instances_geometry_8_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#draw_4_instances_geometry_2_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#draw_4_instances_geometry_8_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#draw_8_instances_geometry_2_invocations
-dEQP-GLES31.functional.geometry_shading.instanced#draw_8_instances_geometry_8_invocations
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_lines
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_line_loop
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_line_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_lines_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_line_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_triangles
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_triangle_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_triangle_fan
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_triangles_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_points_primitive_triangle_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_points
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_lines_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_line_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_triangles
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_triangle_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_triangle_fan
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_triangles_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_primitive_triangle_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_points
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_lines
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_line_loop
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_line_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_triangles
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_triangle_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_triangle_fan
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_triangles_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_lines_adjacency_primitive_triangle_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_points
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_lines
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_line_loop
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_line_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_lines_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_line_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_triangles_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_primitive_triangle_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_points
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_lines
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_line_loop
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_line_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_lines_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_line_strip_adjacency
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_triangles
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_triangle_strip
-dEQP-GLES31.functional.geometry_shading.negative#type_triangles_adjacency_primitive_triangle_fan
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_line_loop
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_line_strip
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_triangle_strip
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_triangle_fan
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_arrays
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_arrays_instanced
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_arrays_indirect
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_elements
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_elements_instanced
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_elements_indirect
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_arrays_overflow_single_buffer
-dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback#capture_vertex_draw_elements_overflow_single_buffer
-dEQP-GLES31.functional.sample_shading.state_query#sample_shading_is_enabled
-dEQP-GLES31.functional.sample_shading.state_query#sample_shading_get_boolean
-dEQP-GLES31.functional.sample_shading.state_query#sample_shading_get_integer
-dEQP-GLES31.functional.sample_shading.state_query#sample_shading_get_float
-dEQP-GLES31.functional.sample_shading.state_query#sample_shading_get_integer64
-dEQP-GLES31.functional.sample_shading.state_query#min_sample_shading_value_get_boolean
-dEQP-GLES31.functional.sample_shading.state_query#min_sample_shading_value_get_integer
-dEQP-GLES31.functional.sample_shading.state_query#min_sample_shading_value_get_float
-dEQP-GLES31.functional.sample_shading.state_query#min_sample_shading_value_get_integer64
-dEQP-GLES31.functional.sample_shading.state_query#min_sample_shading_value_clamping
-dEQP-GLES31.functional.sample_shading.min_sample_shading#default_framebuffer_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#default_framebuffer_discard
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_2_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_2_discard
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_4_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_4_discard
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_8_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_8_discard
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_2_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_2_discard
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_4_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_4_discard
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_8_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_8_discard
-dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding#elements_1
-dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding#elements_2
-dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding#elements_2_share_elements
-dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding#offset_elements_1
-dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding#offset_elements_2
-dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding#offset_elements_2_share_elements
-dEQP-GLES31.functional.vertex_attribute_binding.usage.single_binding#unaligned_offset_elements_1_aligned_elements
-dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings#basic
-dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings#zero_stride
-dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings#instanced
-dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings#aliasing_buffer_zero_stride
-dEQP-GLES31.functional.vertex_attribute_binding.usage.multiple_bindings#aliasing_buffer_instanced
-dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage#mixed_attribs_basic
-dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage#mixed_attribs_instanced_binding
-dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage#mixed_attribs_instanced_attrib
-dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage#mixed_api_change_buffer
-dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage#mixed_api_change_buffer_offset
-dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage#mixed_api_change_buffer_stride
-dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage#mixed_api_change_binding_point
-dEQP-GLES31.functional.vertex_attribute_binding.negative#default_vao_bind_vertex_buffer
-dEQP-GLES31.functional.vertex_attribute_binding.negative#default_vao_vertex_attrib_format
-dEQP-GLES31.functional.vertex_attribute_binding.negative#default_vao_vertex_attrib_i_format
-dEQP-GLES31.functional.vertex_attribute_binding.negative#default_vao_vertex_attrib_binding
-dEQP-GLES31.functional.vertex_attribute_binding.negative#default_vao_vertex_binding_divisor
-dEQP-GLES31.functional.vertex_attribute_binding.negative#bind_create_new_buffer
-dEQP-GLES31.functional.vertex_attribute_binding.negative#vertex_attrib_format_large_offset
-dEQP-GLES31.functional.vertex_attribute_binding.negative#vertex_attrib_binding_invalid_attr
-dEQP-GLES31.functional.vertex_attribute_binding.negative#vertex_attrib_binding_invalid_binding
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x3_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x3_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x3_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat2x4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x2_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x2_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x2_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat3x4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x2_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x2_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x2_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x3_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x3_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4x3_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#mat4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bool_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec2_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec3_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#bvec4_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic#samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#mat4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#mat4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#mat4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#mat4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#mat4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#mat4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bool_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#bvec4_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#mat4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_array_first_elem_without_brackets#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic#vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic#fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic#both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic_array#vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic_array#fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_basic_array#both
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_nested_structs_arrays#vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_nested_structs_arrays#fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.get_uniform.multiple_nested_structs_arrays#both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x3_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x3_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x3_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat2x4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x2_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x2_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x2_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat3x4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x2_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x2_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x2_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x3_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x3_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4x3_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#mat4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bool_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bool_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bool_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec3_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec3_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec3_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic#samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#float_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#float_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#float_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#mat4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#mat4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#mat4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#mat4_row_major_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#mat4_row_major_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#mat4_row_major_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#int_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#int_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#int_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#uint_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#bool_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#bool_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#bool_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_array#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic#vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic#fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic#both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic_array#vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic_array#fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_basic_array#both
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_nested_structs_arrays#vertex
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_nested_structs_arrays#fragment
-dEQP-GLES31.functional.program_uniform.by_pointer.render.multiple_nested_structs_arrays#both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec2_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec2_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec2_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec3_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec3_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec3_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec2_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec2_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec2_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec3_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec3_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec3_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec2_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec2_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec2_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec3_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec3_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec3_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bool_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec2_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec3_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#bvec4_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic#samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bool_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#bvec4_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bool_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_float_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_int_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#bvec4_api_uint_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_array_first_elem_without_brackets#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_basic_array#vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_basic_array#fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_basic_array#both
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_nested_structs_arrays#vertex
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_nested_structs_arrays#fragment
-dEQP-GLES31.functional.program_uniform.by_value.get_uniform.multiple_nested_structs_arrays#both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#float_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec2_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec2_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec2_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec3_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec3_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec3_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#int_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec2_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec2_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec2_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec3_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec3_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec3_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uint_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec2_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec2_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec2_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec3_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec3_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec3_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bool_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bool_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bool_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec2_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec2_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec2_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec3_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec3_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec3_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic#samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#float_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#float_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#float_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#int_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#int_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#int_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#uint_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#uint_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#uint_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#bool_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#bool_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#bool_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_array#sampler2D_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.basic_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.struct_in_array#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#float_vec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.by_value.render.multiple_basic_array#vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.multiple_basic_array#fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.multiple_basic_array#both
-dEQP-GLES31.functional.program_uniform.by_value.render.multiple_nested_structs_arrays#vertex
-dEQP-GLES31.functional.program_uniform.by_value.render.multiple_nested_structs_arrays#fragment
-dEQP-GLES31.functional.program_uniform.by_value.render.multiple_nested_structs_arrays#both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#float_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#float_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#float_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#vec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#vec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#vec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#mat4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#mat4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#mat4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#int_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#int_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#int_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#ivec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#uint_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#uint_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#uint_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#uvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#bool_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#bool_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#bool_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#bvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#bvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#bvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.basic_array#sampler2D_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.multiple_basic_array#vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.multiple_basic_array#fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_full.multiple_basic_array#both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#float_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#float_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#float_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#vec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#vec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#vec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#mat4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#mat4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#mat4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#int_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#int_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#int_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#ivec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#ivec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#ivec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#uint_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#uint_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#uint_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#uvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#uvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#uvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#bool_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#bool_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#bool_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#bvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#bvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#bvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#sampler2D_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#sampler2D_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.basic_array#sampler2D_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#float_vec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct#sampler2D_samplerCube_both
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.multiple_basic_array#vertex
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.multiple_basic_array#fragment
-dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.multiple_basic_array#both
-dEQP-GLES31.functional.program_uniform.unused_uniforms#float_vec4_vertex
-dEQP-GLES31.functional.program_uniform.unused_uniforms#float_vec4_fragment
-dEQP-GLES31.functional.program_uniform.unused_uniforms#float_vec4_both
-dEQP-GLES31.functional.program_uniform.unused_uniforms#mat4_mat2_vertex
-dEQP-GLES31.functional.program_uniform.unused_uniforms#mat4_mat2_fragment
-dEQP-GLES31.functional.program_uniform.unused_uniforms#mat4_mat2_both
-dEQP-GLES31.functional.program_uniform.unused_uniforms#int_ivec4_vertex
-dEQP-GLES31.functional.program_uniform.unused_uniforms#int_ivec4_fragment
-dEQP-GLES31.functional.program_uniform.unused_uniforms#int_ivec4_both
-dEQP-GLES31.functional.program_uniform.unused_uniforms#uint_uvec4_vertex
-dEQP-GLES31.functional.program_uniform.unused_uniforms#uint_uvec4_fragment
-dEQP-GLES31.functional.program_uniform.unused_uniforms#uint_uvec4_both
-dEQP-GLES31.functional.program_uniform.unused_uniforms#bool_bvec4_vertex
-dEQP-GLES31.functional.program_uniform.unused_uniforms#bool_bvec4_fragment
-dEQP-GLES31.functional.program_uniform.unused_uniforms#bool_bvec4_both
-dEQP-GLES31.functional.program_uniform.unused_uniforms#sampler2D_samplerCube_vertex
-dEQP-GLES31.functional.program_uniform.unused_uniforms#sampler2D_samplerCube_fragment
-dEQP-GLES31.functional.program_uniform.unused_uniforms#sampler2D_samplerCube_both
-dEQP-GLES31.functional.blend_equation_advanced.basic#multiply
-dEQP-GLES31.functional.blend_equation_advanced.basic#screen
-dEQP-GLES31.functional.blend_equation_advanced.basic#overlay
-dEQP-GLES31.functional.blend_equation_advanced.basic#darken
-dEQP-GLES31.functional.blend_equation_advanced.basic#lighten
-dEQP-GLES31.functional.blend_equation_advanced.basic#colordodge
-dEQP-GLES31.functional.blend_equation_advanced.basic#colorburn
-dEQP-GLES31.functional.blend_equation_advanced.basic#hardlight
-dEQP-GLES31.functional.blend_equation_advanced.basic#difference
-dEQP-GLES31.functional.blend_equation_advanced.basic#exclusion
-dEQP-GLES31.functional.blend_equation_advanced.basic#hsl_hue
-dEQP-GLES31.functional.blend_equation_advanced.basic#hsl_saturation
-dEQP-GLES31.functional.blend_equation_advanced.basic#hsl_color
-dEQP-GLES31.functional.blend_equation_advanced.basic#hsl_luminosity
-dEQP-GLES31.functional.blend_equation_advanced.srgb#multiply
-dEQP-GLES31.functional.blend_equation_advanced.srgb#screen
-dEQP-GLES31.functional.blend_equation_advanced.srgb#overlay
-dEQP-GLES31.functional.blend_equation_advanced.srgb#darken
-dEQP-GLES31.functional.blend_equation_advanced.srgb#lighten
-dEQP-GLES31.functional.blend_equation_advanced.srgb#colordodge
-dEQP-GLES31.functional.blend_equation_advanced.srgb#colorburn
-dEQP-GLES31.functional.blend_equation_advanced.srgb#hardlight
-dEQP-GLES31.functional.blend_equation_advanced.srgb#difference
-dEQP-GLES31.functional.blend_equation_advanced.srgb#exclusion
-dEQP-GLES31.functional.blend_equation_advanced.srgb#hsl_hue
-dEQP-GLES31.functional.blend_equation_advanced.srgb#hsl_saturation
-dEQP-GLES31.functional.blend_equation_advanced.srgb#hsl_color
-dEQP-GLES31.functional.blend_equation_advanced.srgb#hsl_luminosity
-dEQP-GLES31.functional.blend_equation_advanced.msaa#multiply
-dEQP-GLES31.functional.blend_equation_advanced.msaa#screen
-dEQP-GLES31.functional.blend_equation_advanced.msaa#overlay
-dEQP-GLES31.functional.blend_equation_advanced.msaa#darken
-dEQP-GLES31.functional.blend_equation_advanced.msaa#lighten
-dEQP-GLES31.functional.blend_equation_advanced.msaa#colordodge
-dEQP-GLES31.functional.blend_equation_advanced.msaa#colorburn
-dEQP-GLES31.functional.blend_equation_advanced.msaa#hardlight
-dEQP-GLES31.functional.blend_equation_advanced.msaa#difference
-dEQP-GLES31.functional.blend_equation_advanced.msaa#exclusion
-dEQP-GLES31.functional.blend_equation_advanced.msaa#hsl_hue
-dEQP-GLES31.functional.blend_equation_advanced.msaa#hsl_saturation
-dEQP-GLES31.functional.blend_equation_advanced.msaa#hsl_color
-dEQP-GLES31.functional.blend_equation_advanced.msaa#hsl_luminosity
-dEQP-GLES31.functional.blend_equation_advanced.barrier#multiply
-dEQP-GLES31.functional.blend_equation_advanced.barrier#screen
-dEQP-GLES31.functional.blend_equation_advanced.barrier#overlay
-dEQP-GLES31.functional.blend_equation_advanced.barrier#darken
-dEQP-GLES31.functional.blend_equation_advanced.barrier#lighten
-dEQP-GLES31.functional.blend_equation_advanced.barrier#colordodge
-dEQP-GLES31.functional.blend_equation_advanced.barrier#colorburn
-dEQP-GLES31.functional.blend_equation_advanced.barrier#hardlight
-dEQP-GLES31.functional.blend_equation_advanced.barrier#difference
-dEQP-GLES31.functional.blend_equation_advanced.barrier#exclusion
-dEQP-GLES31.functional.blend_equation_advanced.barrier#hsl_hue
-dEQP-GLES31.functional.blend_equation_advanced.barrier#hsl_saturation
-dEQP-GLES31.functional.blend_equation_advanced.barrier#hsl_color
-dEQP-GLES31.functional.blend_equation_advanced.barrier#hsl_luminosity
-dEQP-GLES31.functional.blend_equation_advanced.coherent#multiply
-dEQP-GLES31.functional.blend_equation_advanced.coherent#screen
-dEQP-GLES31.functional.blend_equation_advanced.coherent#overlay
-dEQP-GLES31.functional.blend_equation_advanced.coherent#darken
-dEQP-GLES31.functional.blend_equation_advanced.coherent#lighten
-dEQP-GLES31.functional.blend_equation_advanced.coherent#colordodge
-dEQP-GLES31.functional.blend_equation_advanced.coherent#colorburn
-dEQP-GLES31.functional.blend_equation_advanced.coherent#hardlight
-dEQP-GLES31.functional.blend_equation_advanced.coherent#difference
-dEQP-GLES31.functional.blend_equation_advanced.coherent#exclusion
-dEQP-GLES31.functional.blend_equation_advanced.coherent#hsl_hue
-dEQP-GLES31.functional.blend_equation_advanced.coherent#hsl_saturation
-dEQP-GLES31.functional.blend_equation_advanced.coherent#hsl_color
-dEQP-GLES31.functional.blend_equation_advanced.coherent#hsl_luminosity
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#multiply
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#screen
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#overlay
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#darken
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#lighten
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#colordodge
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#colorburn
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#hardlight
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#difference
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#exclusion
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#hsl_hue
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#hsl_saturation
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#hsl_color
-dEQP-GLES31.functional.blend_equation_advanced.coherent_msaa#hsl_luminosity
-dEQP-GLES31.functional.separate_shader.pipeline#different_constant_separate_programs
-dEQP-GLES31.functional.separate_shader.pipeline#different_constant_separate_programs_add_fragment
-dEQP-GLES31.functional.separate_shader.pipeline#different_constant_separate_programs_add_vertex
-dEQP-GLES31.functional.separate_shader.pipeline#different_constant_separate_programs_add_both
-dEQP-GLES31.functional.separate_shader.pipeline#different_constant_single_program
-dEQP-GLES31.functional.separate_shader.pipeline#different_constant_single_program_add_both
-dEQP-GLES31.functional.separate_shader.pipeline#different_uniform_separate_programs
-dEQP-GLES31.functional.separate_shader.pipeline#different_uniform_separate_programs_add_fragment
-dEQP-GLES31.functional.separate_shader.pipeline#different_uniform_separate_programs_add_vertex
-dEQP-GLES31.functional.separate_shader.pipeline#different_uniform_separate_programs_add_both
-dEQP-GLES31.functional.separate_shader.pipeline#different_uniform_single_program
-dEQP-GLES31.functional.separate_shader.pipeline#different_uniform_single_program_add_both
-dEQP-GLES31.functional.separate_shader.pipeline#same_constant_separate_programs
-dEQP-GLES31.functional.separate_shader.pipeline#same_constant_separate_programs_add_fragment
-dEQP-GLES31.functional.separate_shader.pipeline#same_constant_separate_programs_add_vertex
-dEQP-GLES31.functional.separate_shader.pipeline#same_constant_separate_programs_add_both
-dEQP-GLES31.functional.separate_shader.pipeline#same_uniform_separate_programs
-dEQP-GLES31.functional.separate_shader.pipeline#same_uniform_separate_programs_add_fragment
-dEQP-GLES31.functional.separate_shader.pipeline#same_uniform_separate_programs_add_vertex
-dEQP-GLES31.functional.separate_shader.pipeline#same_uniform_separate_programs_add_both
-dEQP-GLES31.functional.separate_shader.program_uniform#separate_programs
-dEQP-GLES31.functional.separate_shader.program_uniform#separate_programs_add_fragment
-dEQP-GLES31.functional.separate_shader.program_uniform#separate_programs_add_vertex
-dEQP-GLES31.functional.separate_shader.program_uniform#separate_programs_add_both
-dEQP-GLES31.functional.separate_shader.program_uniform#single_program
-dEQP-GLES31.functional.separate_shader.program_uniform#single_program_add_both
-dEQP-GLES31.functional.separate_shader.create_shader_program#separate_programs
-dEQP-GLES31.functional.separate_shader.create_shader_program#separate_programs_add_fragment
-dEQP-GLES31.functional.separate_shader.create_shader_program#separate_programs_add_vertex
-dEQP-GLES31.functional.separate_shader.create_shader_program#separate_programs_add_both
-dEQP-GLES31.functional.separate_shader.create_shader_program#single_program_add_both
-dEQP-GLES31.functional.separate_shader.interface#same_name_vertex_smooth_fragment_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_name_vertex_smooth_fragment_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_name_vertex_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_name_vertex_flat_fragment_flat
-dEQP-GLES31.functional.separate_shader.interface#same_name_vertex_centroid_fragment_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_name_vertex_centroid_fragment_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_name_vertex_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_name_fragment_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_name_fragment_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_name
-dEQP-GLES31.functional.separate_shader.interface#same_location_vertex_smooth_fragment_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_location_vertex_smooth_fragment_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_location_vertex_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_location_vertex_flat_fragment_flat
-dEQP-GLES31.functional.separate_shader.interface#same_location_vertex_centroid_fragment_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_location_vertex_centroid_fragment_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_location_vertex_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_location_fragment_smooth
-dEQP-GLES31.functional.separate_shader.interface#same_location_fragment_centroid
-dEQP-GLES31.functional.separate_shader.interface#same_location
-dEQP-GLES31.functional.separate_shader.random#0
-dEQP-GLES31.functional.separate_shader.random#1
-dEQP-GLES31.functional.separate_shader.random#2
-dEQP-GLES31.functional.separate_shader.random#3
-dEQP-GLES31.functional.separate_shader.random#4
-dEQP-GLES31.functional.separate_shader.random#5
-dEQP-GLES31.functional.separate_shader.random#6
-dEQP-GLES31.functional.separate_shader.random#7
-dEQP-GLES31.functional.separate_shader.random#8
-dEQP-GLES31.functional.separate_shader.random#9
-dEQP-GLES31.functional.separate_shader.random#10
-dEQP-GLES31.functional.separate_shader.random#11
-dEQP-GLES31.functional.separate_shader.random#12
-dEQP-GLES31.functional.separate_shader.random#13
-dEQP-GLES31.functional.separate_shader.random#14
-dEQP-GLES31.functional.separate_shader.random#15
-dEQP-GLES31.functional.separate_shader.random#16
-dEQP-GLES31.functional.separate_shader.random#17
-dEQP-GLES31.functional.separate_shader.random#18
-dEQP-GLES31.functional.separate_shader.random#19
-dEQP-GLES31.functional.separate_shader.random#20
-dEQP-GLES31.functional.separate_shader.random#21
-dEQP-GLES31.functional.separate_shader.random#22
-dEQP-GLES31.functional.separate_shader.random#23
-dEQP-GLES31.functional.separate_shader.random#24
-dEQP-GLES31.functional.separate_shader.random#25
-dEQP-GLES31.functional.separate_shader.random#26
-dEQP-GLES31.functional.separate_shader.random#27
-dEQP-GLES31.functional.separate_shader.random#28
-dEQP-GLES31.functional.separate_shader.random#29
-dEQP-GLES31.functional.separate_shader.random#30
-dEQP-GLES31.functional.separate_shader.random#31
-dEQP-GLES31.functional.separate_shader.random#32
-dEQP-GLES31.functional.separate_shader.random#33
-dEQP-GLES31.functional.separate_shader.random#34
-dEQP-GLES31.functional.separate_shader.random#35
-dEQP-GLES31.functional.separate_shader.random#36
-dEQP-GLES31.functional.separate_shader.random#37
-dEQP-GLES31.functional.separate_shader.random#38
-dEQP-GLES31.functional.separate_shader.random#39
-dEQP-GLES31.functional.separate_shader.random#40
-dEQP-GLES31.functional.separate_shader.random#41
-dEQP-GLES31.functional.separate_shader.random#42
-dEQP-GLES31.functional.separate_shader.random#43
-dEQP-GLES31.functional.separate_shader.random#44
-dEQP-GLES31.functional.separate_shader.random#45
-dEQP-GLES31.functional.separate_shader.random#46
-dEQP-GLES31.functional.separate_shader.random#47
-dEQP-GLES31.functional.separate_shader.random#48
-dEQP-GLES31.functional.separate_shader.random#49
-dEQP-GLES31.functional.separate_shader.random#50
-dEQP-GLES31.functional.separate_shader.random#51
-dEQP-GLES31.functional.separate_shader.random#52
-dEQP-GLES31.functional.separate_shader.random#53
-dEQP-GLES31.functional.separate_shader.random#54
-dEQP-GLES31.functional.separate_shader.random#55
-dEQP-GLES31.functional.separate_shader.random#56
-dEQP-GLES31.functional.separate_shader.random#57
-dEQP-GLES31.functional.separate_shader.random#58
-dEQP-GLES31.functional.separate_shader.random#59
-dEQP-GLES31.functional.separate_shader.random#60
-dEQP-GLES31.functional.separate_shader.random#61
-dEQP-GLES31.functional.separate_shader.random#62
-dEQP-GLES31.functional.separate_shader.random#63
-dEQP-GLES31.functional.separate_shader.random#64
-dEQP-GLES31.functional.separate_shader.random#65
-dEQP-GLES31.functional.separate_shader.random#66
-dEQP-GLES31.functional.separate_shader.random#67
-dEQP-GLES31.functional.separate_shader.random#68
-dEQP-GLES31.functional.separate_shader.random#69
-dEQP-GLES31.functional.separate_shader.random#70
-dEQP-GLES31.functional.separate_shader.random#71
-dEQP-GLES31.functional.separate_shader.random#72
-dEQP-GLES31.functional.separate_shader.random#73
-dEQP-GLES31.functional.separate_shader.random#74
-dEQP-GLES31.functional.separate_shader.random#75
-dEQP-GLES31.functional.separate_shader.random#76
-dEQP-GLES31.functional.separate_shader.random#77
-dEQP-GLES31.functional.separate_shader.random#78
-dEQP-GLES31.functional.separate_shader.random#79
-dEQP-GLES31.functional.separate_shader.random#80
-dEQP-GLES31.functional.separate_shader.random#81
-dEQP-GLES31.functional.separate_shader.random#82
-dEQP-GLES31.functional.separate_shader.random#83
-dEQP-GLES31.functional.separate_shader.random#84
-dEQP-GLES31.functional.separate_shader.random#85
-dEQP-GLES31.functional.separate_shader.random#86
-dEQP-GLES31.functional.separate_shader.random#87
-dEQP-GLES31.functional.separate_shader.random#88
-dEQP-GLES31.functional.separate_shader.random#89
-dEQP-GLES31.functional.separate_shader.random#90
-dEQP-GLES31.functional.separate_shader.random#91
-dEQP-GLES31.functional.separate_shader.random#92
-dEQP-GLES31.functional.separate_shader.random#93
-dEQP-GLES31.functional.separate_shader.random#94
-dEQP-GLES31.functional.separate_shader.random#95
-dEQP-GLES31.functional.separate_shader.random#96
-dEQP-GLES31.functional.separate_shader.random#97
-dEQP-GLES31.functional.separate_shader.random#98
-dEQP-GLES31.functional.separate_shader.random#99
-dEQP-GLES31.functional.separate_shader.random#100
-dEQP-GLES31.functional.separate_shader.random#101
-dEQP-GLES31.functional.separate_shader.random#102
-dEQP-GLES31.functional.separate_shader.random#103
-dEQP-GLES31.functional.separate_shader.random#104
-dEQP-GLES31.functional.separate_shader.random#105
-dEQP-GLES31.functional.separate_shader.random#106
-dEQP-GLES31.functional.separate_shader.random#107
-dEQP-GLES31.functional.separate_shader.random#108
-dEQP-GLES31.functional.separate_shader.random#109
-dEQP-GLES31.functional.separate_shader.random#110
-dEQP-GLES31.functional.separate_shader.random#111
-dEQP-GLES31.functional.separate_shader.random#112
-dEQP-GLES31.functional.separate_shader.random#113
-dEQP-GLES31.functional.separate_shader.random#114
-dEQP-GLES31.functional.separate_shader.random#115
-dEQP-GLES31.functional.separate_shader.random#116
-dEQP-GLES31.functional.separate_shader.random#117
-dEQP-GLES31.functional.separate_shader.random#118
-dEQP-GLES31.functional.separate_shader.random#119
-dEQP-GLES31.functional.separate_shader.random#120
-dEQP-GLES31.functional.separate_shader.random#121
-dEQP-GLES31.functional.separate_shader.random#122
-dEQP-GLES31.functional.separate_shader.random#123
-dEQP-GLES31.functional.separate_shader.random#124
-dEQP-GLES31.functional.separate_shader.random#125
-dEQP-GLES31.functional.separate_shader.random#126
-dEQP-GLES31.functional.separate_shader.random#127
-dEQP-GLES31.functional.separate_shader.api#current_program_priority
-dEQP-GLES31.functional.separate_shader.api#active_program_uniform
-dEQP-GLES31.functional.separate_shader.api#pipeline_programs
-dEQP-GLES31.functional.separate_shader.api#pipeline_active
-dEQP-GLES31.functional.separate_shader.validation.varying#missing_input
-dEQP-GLES31.functional.separate_shader.validation.varying#missing_output
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_type
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_precision
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_explicit_location_type
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_explicit_location_precision
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_explicit_location
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_implicit_explicit_location_1
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_implicit_explicit_location_2
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_implicit_explicit_location_3
-dEQP-GLES31.functional.separate_shader.validation.varying#match_different_struct_names
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_struct_member_name
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_struct_member_type
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_struct_member_precision
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_struct_member_order
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_array_element_type
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_array_length
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_array_precision
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#missing_input
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#missing_output
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_number_of_declarations
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_order
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_type
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_name
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_precision
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_array_size
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#match_different_member_struct_names
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_struct_member_name
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_struct_member_type
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_struct_member_precision
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_member_struct_member_order
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_array_size
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_variable_and_block_member_1
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_variable_and_block_member_2
-dEQP-GLES31.functional.uniform_location.basic#float_vertex
-dEQP-GLES31.functional.uniform_location.basic#float_fragment
-dEQP-GLES31.functional.uniform_location.basic#vec2_vertex
-dEQP-GLES31.functional.uniform_location.basic#vec2_fragment
-dEQP-GLES31.functional.uniform_location.basic#vec3_vertex
-dEQP-GLES31.functional.uniform_location.basic#vec3_fragment
-dEQP-GLES31.functional.uniform_location.basic#vec4_vertex
-dEQP-GLES31.functional.uniform_location.basic#vec4_fragment
-dEQP-GLES31.functional.uniform_location.basic#int_vertex
-dEQP-GLES31.functional.uniform_location.basic#int_fragment
-dEQP-GLES31.functional.uniform_location.basic#ivec2_vertex
-dEQP-GLES31.functional.uniform_location.basic#ivec2_fragment
-dEQP-GLES31.functional.uniform_location.basic#ivec3_vertex
-dEQP-GLES31.functional.uniform_location.basic#ivec3_fragment
-dEQP-GLES31.functional.uniform_location.basic#ivec4_vertex
-dEQP-GLES31.functional.uniform_location.basic#ivec4_fragment
-dEQP-GLES31.functional.uniform_location.basic#uint_vertex
-dEQP-GLES31.functional.uniform_location.basic#uint_fragment
-dEQP-GLES31.functional.uniform_location.basic#uvec2_vertex
-dEQP-GLES31.functional.uniform_location.basic#uvec2_fragment
-dEQP-GLES31.functional.uniform_location.basic#uvec3_vertex
-dEQP-GLES31.functional.uniform_location.basic#uvec3_fragment
-dEQP-GLES31.functional.uniform_location.basic#uvec4_vertex
-dEQP-GLES31.functional.uniform_location.basic#uvec4_fragment
-dEQP-GLES31.functional.uniform_location.basic#bool_vertex
-dEQP-GLES31.functional.uniform_location.basic#bool_fragment
-dEQP-GLES31.functional.uniform_location.basic#bvec2_vertex
-dEQP-GLES31.functional.uniform_location.basic#bvec2_fragment
-dEQP-GLES31.functional.uniform_location.basic#bvec3_vertex
-dEQP-GLES31.functional.uniform_location.basic#bvec3_fragment
-dEQP-GLES31.functional.uniform_location.basic#bvec4_vertex
-dEQP-GLES31.functional.uniform_location.basic#bvec4_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat2_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat2_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat2x3_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat2x3_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat2x4_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat2x4_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat3x2_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat3x2_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat3_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat3_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat3x4_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat3x4_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat4x2_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat4x2_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat4x3_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat4x3_fragment
-dEQP-GLES31.functional.uniform_location.basic#mat4_vertex
-dEQP-GLES31.functional.uniform_location.basic#mat4_fragment
-dEQP-GLES31.functional.uniform_location.basic#sampler2D_vertex
-dEQP-GLES31.functional.uniform_location.basic#sampler2D_fragment
-dEQP-GLES31.functional.uniform_location.basic#isampler2D_vertex
-dEQP-GLES31.functional.uniform_location.basic#isampler2D_fragment
-dEQP-GLES31.functional.uniform_location.basic#usampler2D_vertex
-dEQP-GLES31.functional.uniform_location.basic#usampler2D_fragment
-dEQP-GLES31.functional.uniform_location.array#float_vertex
-dEQP-GLES31.functional.uniform_location.array#float_fragment
-dEQP-GLES31.functional.uniform_location.array#vec2_vertex
-dEQP-GLES31.functional.uniform_location.array#vec2_fragment
-dEQP-GLES31.functional.uniform_location.array#vec3_vertex
-dEQP-GLES31.functional.uniform_location.array#vec3_fragment
-dEQP-GLES31.functional.uniform_location.array#vec4_vertex
-dEQP-GLES31.functional.uniform_location.array#vec4_fragment
-dEQP-GLES31.functional.uniform_location.array#int_vertex
-dEQP-GLES31.functional.uniform_location.array#int_fragment
-dEQP-GLES31.functional.uniform_location.array#ivec2_vertex
-dEQP-GLES31.functional.uniform_location.array#ivec2_fragment
-dEQP-GLES31.functional.uniform_location.array#ivec3_vertex
-dEQP-GLES31.functional.uniform_location.array#ivec3_fragment
-dEQP-GLES31.functional.uniform_location.array#ivec4_vertex
-dEQP-GLES31.functional.uniform_location.array#ivec4_fragment
-dEQP-GLES31.functional.uniform_location.array#uint_vertex
-dEQP-GLES31.functional.uniform_location.array#uint_fragment
-dEQP-GLES31.functional.uniform_location.array#uvec2_vertex
-dEQP-GLES31.functional.uniform_location.array#uvec2_fragment
-dEQP-GLES31.functional.uniform_location.array#uvec3_vertex
-dEQP-GLES31.functional.uniform_location.array#uvec3_fragment
-dEQP-GLES31.functional.uniform_location.array#uvec4_vertex
-dEQP-GLES31.functional.uniform_location.array#uvec4_fragment
-dEQP-GLES31.functional.uniform_location.array#bool_vertex
-dEQP-GLES31.functional.uniform_location.array#bool_fragment
-dEQP-GLES31.functional.uniform_location.array#bvec2_vertex
-dEQP-GLES31.functional.uniform_location.array#bvec2_fragment
-dEQP-GLES31.functional.uniform_location.array#bvec3_vertex
-dEQP-GLES31.functional.uniform_location.array#bvec3_fragment
-dEQP-GLES31.functional.uniform_location.array#bvec4_vertex
-dEQP-GLES31.functional.uniform_location.array#bvec4_fragment
-dEQP-GLES31.functional.uniform_location.array#mat2_vertex
-dEQP-GLES31.functional.uniform_location.array#mat2_fragment
-dEQP-GLES31.functional.uniform_location.array#mat2x3_vertex
-dEQP-GLES31.functional.uniform_location.array#mat2x3_fragment
-dEQP-GLES31.functional.uniform_location.array#mat2x4_vertex
-dEQP-GLES31.functional.uniform_location.array#mat2x4_fragment
-dEQP-GLES31.functional.uniform_location.array#mat3x2_vertex
-dEQP-GLES31.functional.uniform_location.array#mat3x2_fragment
-dEQP-GLES31.functional.uniform_location.array#mat3_vertex
-dEQP-GLES31.functional.uniform_location.array#mat3_fragment
-dEQP-GLES31.functional.uniform_location.array#mat3x4_vertex
-dEQP-GLES31.functional.uniform_location.array#mat3x4_fragment
-dEQP-GLES31.functional.uniform_location.array#mat4x2_vertex
-dEQP-GLES31.functional.uniform_location.array#mat4x2_fragment
-dEQP-GLES31.functional.uniform_location.array#mat4x3_vertex
-dEQP-GLES31.functional.uniform_location.array#mat4x3_fragment
-dEQP-GLES31.functional.uniform_location.array#mat4_vertex
-dEQP-GLES31.functional.uniform_location.array#mat4_fragment
-dEQP-GLES31.functional.uniform_location.array#sampler2D_vertex
-dEQP-GLES31.functional.uniform_location.array#sampler2D_fragment
-dEQP-GLES31.functional.uniform_location.array#isampler2D_vertex
-dEQP-GLES31.functional.uniform_location.array#isampler2D_fragment
-dEQP-GLES31.functional.uniform_location.array#usampler2D_vertex
-dEQP-GLES31.functional.uniform_location.array#usampler2D_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#float_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#float_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#vec2_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#vec2_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#vec3_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#vec3_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#vec4_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#vec4_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#int_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#int_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#ivec2_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#ivec2_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#ivec3_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#ivec3_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#ivec4_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#ivec4_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#uint_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#uint_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#uvec2_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#uvec2_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#uvec3_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#uvec3_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#uvec4_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#uvec4_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#bool_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#bool_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#bvec2_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#bvec2_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#bvec3_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#bvec3_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#bvec4_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#bvec4_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat2_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat2_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat2x3_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat2x3_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat2x4_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat2x4_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat3x2_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat3x2_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat3_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat3_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat3x4_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat3x4_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat4x2_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat4x2_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat4x3_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat4x3_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#mat4_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#mat4_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#sampler2D_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#sampler2D_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#isampler2D_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#isampler2D_fragment
-dEQP-GLES31.functional.uniform_location.nested_array#usampler2D_vertex
-dEQP-GLES31.functional.uniform_location.nested_array#usampler2D_fragment
-dEQP-GLES31.functional.uniform_location.struct#case_0
-dEQP-GLES31.functional.uniform_location.struct#case_1
-dEQP-GLES31.functional.uniform_location.struct#case_2
-dEQP-GLES31.functional.uniform_location.struct#case_3
-dEQP-GLES31.functional.uniform_location.struct#case_4
-dEQP-GLES31.functional.uniform_location.struct#case_5
-dEQP-GLES31.functional.uniform_location.struct#case_6
-dEQP-GLES31.functional.uniform_location.struct#case_7
-dEQP-GLES31.functional.uniform_location.struct#case_8
-dEQP-GLES31.functional.uniform_location.struct#case_9
-dEQP-GLES31.functional.uniform_location.struct#case_10
-dEQP-GLES31.functional.uniform_location.struct#case_11
-dEQP-GLES31.functional.uniform_location.struct#case_12
-dEQP-GLES31.functional.uniform_location.struct#case_13
-dEQP-GLES31.functional.uniform_location.struct#case_14
-dEQP-GLES31.functional.uniform_location.struct#case_15
-dEQP-GLES31.functional.uniform_location.nested_struct#case_0
-dEQP-GLES31.functional.uniform_location.nested_struct#case_1
-dEQP-GLES31.functional.uniform_location.nested_struct#case_2
-dEQP-GLES31.functional.uniform_location.nested_struct#case_3
-dEQP-GLES31.functional.uniform_location.nested_struct#case_4
-dEQP-GLES31.functional.uniform_location.nested_struct#case_5
-dEQP-GLES31.functional.uniform_location.nested_struct#case_6
-dEQP-GLES31.functional.uniform_location.nested_struct#case_7
-dEQP-GLES31.functional.uniform_location.nested_struct#case_8
-dEQP-GLES31.functional.uniform_location.nested_struct#case_9
-dEQP-GLES31.functional.uniform_location.nested_struct#case_10
-dEQP-GLES31.functional.uniform_location.nested_struct#case_11
-dEQP-GLES31.functional.uniform_location.nested_struct#case_12
-dEQP-GLES31.functional.uniform_location.nested_struct#case_13
-dEQP-GLES31.functional.uniform_location.nested_struct#case_14
-dEQP-GLES31.functional.uniform_location.nested_struct#case_15
-dEQP-GLES31.functional.uniform_location.min_max#float_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#float_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#float_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#float_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#vec2_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#vec2_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#vec2_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#vec2_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#vec3_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#vec3_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#vec3_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#vec3_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#vec4_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#vec4_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#vec4_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#vec4_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#int_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#int_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#int_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#int_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#ivec2_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#ivec2_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#ivec2_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#ivec2_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#ivec3_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#ivec3_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#ivec3_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#ivec3_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#ivec4_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#ivec4_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#ivec4_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#ivec4_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#uint_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#uint_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#uint_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#uint_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#uvec2_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#uvec2_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#uvec2_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#uvec2_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#uvec3_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#uvec3_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#uvec3_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#uvec3_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#uvec4_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#uvec4_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#uvec4_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#uvec4_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#bool_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#bool_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#bool_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#bool_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#bvec2_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#bvec2_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#bvec2_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#bvec2_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#bvec3_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#bvec3_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#bvec3_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#bvec3_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#bvec4_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#bvec4_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#bvec4_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#bvec4_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat2_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat2_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat2_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat2_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat2x3_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat2x3_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat2x3_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat2x3_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat2x4_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat2x4_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat2x4_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat2x4_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat3x2_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat3x2_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat3x2_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat3x2_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat3_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat3_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat3_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat3_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat3x4_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat3x4_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat3x4_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat3x4_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat4x2_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat4x2_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat4x2_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat4x2_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat4x3_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat4x3_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat4x3_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat4x3_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#mat4_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#mat4_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#mat4_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#mat4_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#sampler2D_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#sampler2D_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#sampler2D_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#sampler2D_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#isampler2D_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#isampler2D_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#isampler2D_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#isampler2D_fragment_max
-dEQP-GLES31.functional.uniform_location.min_max#usampler2D_vertex_min
-dEQP-GLES31.functional.uniform_location.min_max#usampler2D_vertex_max
-dEQP-GLES31.functional.uniform_location.min_max#usampler2D_fragment_min
-dEQP-GLES31.functional.uniform_location.min_max#usampler2D_fragment_max
-dEQP-GLES31.functional.uniform_location.link#case_0
-dEQP-GLES31.functional.uniform_location.link#case_1
-dEQP-GLES31.functional.uniform_location.link#case_2
-dEQP-GLES31.functional.uniform_location.link#case_3
-dEQP-GLES31.functional.uniform_location.link#case_4
-dEQP-GLES31.functional.uniform_location.link#case_5
-dEQP-GLES31.functional.uniform_location.link#case_6
-dEQP-GLES31.functional.uniform_location.link#case_7
-dEQP-GLES31.functional.uniform_location.link#case_8
-dEQP-GLES31.functional.uniform_location.link#case_9
-dEQP-GLES31.functional.uniform_location.negative#duplicate_location_vertex
-dEQP-GLES31.functional.uniform_location.negative#duplicate_location_fragment
-dEQP-GLES31.functional.uniform_location.negative#duplicate_location_unused_vertex
-dEQP-GLES31.functional.uniform_location.negative#duplicate_location_unused_fragment
-dEQP-GLES31.functional.uniform_location.negative#duplicate_location_split
-dEQP-GLES31.functional.uniform_location.negative#array_overlap_vertex
-dEQP-GLES31.functional.uniform_location.negative#array_overlap_fragment
-dEQP-GLES31.functional.uniform_location.negative#array_overlap_unused_vertex
-dEQP-GLES31.functional.uniform_location.negative#array_overlap_unused_fragment
-dEQP-GLES31.functional.uniform_location.negative#array_overlap_split
-dEQP-GLES31.functional.uniform_location.negative#struct_overlap_vertex
-dEQP-GLES31.functional.uniform_location.negative#struct_overlap_fragment
-dEQP-GLES31.functional.uniform_location.negative#struct_overlap_unused_vertex
-dEQP-GLES31.functional.uniform_location.negative#struct_overlap_unused_fragment
-dEQP-GLES31.functional.uniform_location.negative#struct_overlap_split
-dEQP-GLES31.functional.uniform_location.negative#complex_overlap_vertex
-dEQP-GLES31.functional.uniform_location.negative#complex_overlap_fragment
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.passthrough#tessellate_tris_passthrough_geometry_no_change
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.passthrough#tessellate_quads_passthrough_geometry_no_change
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.passthrough#tessellate_isolines_passthrough_geometry_no_change
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.passthrough#passthrough_tessellation_geometry_shade_triangles_no_change
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.passthrough#passthrough_tessellation_geometry_shade_lines_no_change
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.limits#output_required_max_tessellation
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.limits#output_implementation_max_tessellation
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.limits#output_required_max_geometry
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.limits#output_implementation_max_geometry
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.limits#output_required_max_invocations
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.limits#output_implementation_max_invocations
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.scatter#geometry_scatter_instances
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.scatter#geometry_scatter_primitives
-dEQP-GLES31.functional.tessellation_geometry_interaction.render.scatter#geometry_scatter_layers
-dEQP-GLES31.functional.tessellation_geometry_interaction.feedback#tessellation_output_triangles_geometry_output_points
-dEQP-GLES31.functional.tessellation_geometry_interaction.feedback#tessellation_output_quads_geometry_output_points
-dEQP-GLES31.functional.tessellation_geometry_interaction.feedback#tessellation_output_isolines_geometry_output_points
-dEQP-GLES31.functional.tessellation_geometry_interaction.feedback#tessellation_output_triangles_point_mode_geometry_output_lines
-dEQP-GLES31.functional.tessellation_geometry_interaction.feedback#tessellation_output_quads_point_mode_geometry_output_lines
-dEQP-GLES31.functional.tessellation_geometry_interaction.feedback#tessellation_output_isolines_point_mode_geometry_output_triangles
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#evaluation_set
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#geometry_set
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set_control_set
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set_evaluation_set
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set_eval_default
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set_geometry_set
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set_evaluation_set_geometry_set
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set_control_pass_eval_add_geometry_add
-dEQP-GLES31.functional.tessellation_geometry_interaction.point_size#vertex_set_evaluation_set_geometry_default
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#bind_buffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#delete_buffers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#gen_buffers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#buffer_data
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#buffer_sub_data
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#buffer_sub_data_size_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#clear
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#read_pixels
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#read_pixels_format_mismatch
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#read_pixels_fbo_format_mismatch
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#bind_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#bind_buffer_base
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#clear_bufferiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#clear_bufferuiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#clear_bufferfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#clear_bufferfi
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#copy_buffer_sub_data
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#draw_buffers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#flush_mapped_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#map_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#read_buffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#unmap_buffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#bind_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#bind_renderbuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#check_framebuffer_status
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#gen_framebuffers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#gen_renderbuffers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#delete_framebuffers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#delete_renderbuffers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#framebuffer_renderbuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#framebuffer_texture2d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#renderbuffer_storage
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#blit_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#blit_framebuffer_multisample
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#framebuffer_texture_layer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#renderbuffer_storage_multisample
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#activetexture
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#bindtexture
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_invalid_format
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_invalid_format
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_inequal_width_height_cube
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copyteximage2d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage2d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#deletetextures
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#generatemipmap
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#gentextures
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#pixelstorei
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d_inequal_width_height_cube
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage2d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texparameteri
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texparameterf
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texparameteriv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texparameterfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage3d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage3d_max_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage3d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#teximage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage3d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texsubimage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage3d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#copytexsubimage3d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d_max_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedteximage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#compressedtexsubimage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texstorage2d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texstorage2d_invalid_binding
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texstorage2d_invalid_levels
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texstorage3d
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texstorage3d_invalid_binding
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture#texstorage3d_invalid_levels
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#create_shader
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#shader_source
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#compile_shader
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#delete_shader
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#shader_binary
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#attach_shader
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#detach_shader
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#delete_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#validate_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#get_program_binary
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#program_binary
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#program_parameteri
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#gen_samplers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#bind_sampler
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#delete_samplers
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#get_sampler_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#get_sampler_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#sampler_parameteri
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#sampler_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#sampler_parameterf
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#sampler_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#get_attrib_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#get_uniform_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#bind_attrib_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniform_block_binding
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformf_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformf_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformf_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformfv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformfv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformfv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformfv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformi_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformi_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformi_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformiv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformiv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformiv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformiv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformui_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformui_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformui_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformuiv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformuiv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformuiv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniformuiv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniform_matrixfv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniform_matrixfv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniform_matrixfv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#uniform_matrixfv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#gen_transform_feedbacks
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#bind_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#delete_transform_feedbacks
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#begin_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#pause_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#resume_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#end_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#get_transform_feedback_varying
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader#transform_feedback_varyings
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#scissor
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#depth_func
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#viewport
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#stencil_func
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#stencil_func_separate
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#stencil_op
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#stencil_op_separate
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#stencil_mask_separate
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#blend_equation
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#blend_equation_separate
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#blend_func
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#blend_func_separate
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#cull_face
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#front_face
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#line_width
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#gen_queries
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#begin_query
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#end_query
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#delete_queries
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#fence_sync
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#wait_sync
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#client_wait_sync
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment#delete_sync
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#vertex_attribf
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#vertex_attribfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#vertex_attribi4
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#vertex_attribi4v
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#vertex_attrib_pointer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#vertex_attrib_i_pointer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#enable_vertex_attrib_array
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#disable_vertex_attrib_array
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#gen_vertex_arrays
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#bind_vertex_array
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#delete_vertex_arrays
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#vertex_attrib_divisor
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_arrays
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_arrays_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_arrays_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_elements
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_elements_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_elements_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_arrays_instanced
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_arrays_instanced_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_arrays_instanced_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_elements_instanced
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_elements_instanced_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_elements_instanced_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_range_elements
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_range_elements_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.vertex_array#draw_range_elements_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#enable
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#disable
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_booleanv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_floatv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_integerv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_integer64v
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_integeri_v
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_integer64i_v
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_string
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_stringi
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_attached_shaders
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_shaderiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_shader_info_log
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_shader_precision_format
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_shader_source
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_programiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_program_info_log
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_tex_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_tex_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_uniformfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_uniformiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_uniformuiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_active_uniform
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_active_uniformsiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_active_uniform_blockiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_active_uniform_block_name
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_active_attrib
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_uniform_indices
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_vertex_attribfv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_vertex_attribiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_vertex_attribi_iv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_vertex_attribi_uiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_vertex_attrib_pointerv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_frag_data_location
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_buffer_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_buffer_parameteri64v
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_buffer_pointerv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_framebuffer_attachment_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_renderbuffer_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_internalformativ
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_queryiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_query_objectuiv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#get_synciv
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#is_enabled
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.state#hint
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#bind_buffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#delete_buffers
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#gen_buffers
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#buffer_data
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#buffer_sub_data
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#buffer_sub_data_size_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#clear
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#read_pixels
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#read_pixels_format_mismatch
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#read_pixels_fbo_format_mismatch
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#bind_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#bind_buffer_base
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#clear_bufferiv
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#clear_bufferuiv
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#clear_bufferfv
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#clear_bufferfi
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#copy_buffer_sub_data
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#draw_buffers
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#flush_mapped_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#map_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#read_buffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#unmap_buffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#bind_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#bind_renderbuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#check_framebuffer_status
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#gen_framebuffers
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#gen_renderbuffers
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#delete_framebuffers
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#delete_renderbuffers
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#framebuffer_renderbuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#framebuffer_texture2d
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#renderbuffer_storage
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#blit_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#blit_framebuffer_multisample
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#framebuffer_texture_layer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#renderbuffer_storage_multisample
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#activetexture
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#bindtexture
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_invalid_format
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_invalid_format
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_inequal_width_height_cube
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copyteximage2d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage2d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#deletetextures
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#generatemipmap
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#gentextures
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#pixelstorei
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d_inequal_width_height_cube
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage2d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texparameteri
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texparameterf
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texparameteriv
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texparameterfv
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage3d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage3d_max_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage3d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#teximage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage3d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texsubimage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage3d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#copytexsubimage3d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d_max_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedteximage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#compressedtexsubimage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texstorage2d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texstorage2d_invalid_binding
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texstorage2d_invalid_levels
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texstorage3d
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texstorage3d_invalid_binding
-dEQP-GLES31.functional.debug.negative_coverage.log.texture#texstorage3d_invalid_levels
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#create_shader
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#shader_source
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#compile_shader
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#delete_shader
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#shader_binary
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#attach_shader
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#detach_shader
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#delete_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#validate_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#get_program_binary
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#program_binary
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#program_parameteri
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#gen_samplers
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#bind_sampler
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#delete_samplers
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#get_sampler_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#get_sampler_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#sampler_parameteri
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#sampler_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#sampler_parameterf
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#sampler_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#get_attrib_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#get_uniform_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#bind_attrib_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniform_block_binding
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformf_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformf_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformf_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformfv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformfv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformfv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformfv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformi_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformi_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformi_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformiv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformiv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformiv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformiv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformui_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformui_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformui_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformuiv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformuiv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformuiv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniformuiv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniform_matrixfv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniform_matrixfv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniform_matrixfv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#uniform_matrixfv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#gen_transform_feedbacks
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#bind_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#delete_transform_feedbacks
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#begin_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#pause_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#resume_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#end_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#get_transform_feedback_varying
-dEQP-GLES31.functional.debug.negative_coverage.log.shader#transform_feedback_varyings
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#scissor
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#depth_func
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#viewport
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#stencil_func
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#stencil_func_separate
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#stencil_op
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#stencil_op_separate
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#stencil_mask_separate
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#blend_equation
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#blend_equation_separate
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#blend_func
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#blend_func_separate
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#cull_face
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#front_face
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#line_width
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#gen_queries
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#begin_query
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#end_query
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#delete_queries
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#fence_sync
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#wait_sync
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#client_wait_sync
-dEQP-GLES31.functional.debug.negative_coverage.log.fragment#delete_sync
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#vertex_attribf
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#vertex_attribfv
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#vertex_attribi4
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#vertex_attribi4v
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#vertex_attrib_pointer
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#vertex_attrib_i_pointer
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#enable_vertex_attrib_array
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#disable_vertex_attrib_array
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#gen_vertex_arrays
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#bind_vertex_array
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#delete_vertex_arrays
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#vertex_attrib_divisor
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_arrays
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_arrays_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_arrays_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_elements
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_elements_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_elements_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_arrays_instanced
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_arrays_instanced_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_arrays_instanced_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_elements_instanced
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_elements_instanced_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_elements_instanced_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_range_elements
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_range_elements_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array#draw_range_elements_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.log.state#enable
-dEQP-GLES31.functional.debug.negative_coverage.log.state#disable
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_booleanv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_floatv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_integerv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_integer64v
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_integeri_v
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_integer64i_v
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_string
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_stringi
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_attached_shaders
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_shaderiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_shader_info_log
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_shader_precision_format
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_shader_source
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_programiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_program_info_log
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_tex_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_tex_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_uniformfv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_uniformiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_uniformuiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_active_uniform
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_active_uniformsiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_active_uniform_blockiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_active_uniform_block_name
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_active_attrib
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_uniform_indices
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_vertex_attribfv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_vertex_attribiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_vertex_attribi_iv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_vertex_attribi_uiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_vertex_attrib_pointerv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_frag_data_location
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_buffer_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_buffer_parameteri64v
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_buffer_pointerv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_framebuffer_attachment_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_renderbuffer_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_internalformativ
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_queryiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_query_objectuiv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#get_synciv
-dEQP-GLES31.functional.debug.negative_coverage.log.state#is_enabled
-dEQP-GLES31.functional.debug.negative_coverage.log.state#hint
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#bind_buffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#delete_buffers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#gen_buffers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#buffer_data
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#buffer_sub_data
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#buffer_sub_data_size_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#read_pixels
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#read_pixels_format_mismatch
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#read_pixels_fbo_format_mismatch
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#bind_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#bind_buffer_base
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#clear_bufferiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#clear_bufferuiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#clear_bufferfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#clear_bufferfi
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#copy_buffer_sub_data
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#flush_mapped_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#map_buffer_range
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#unmap_buffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#bind_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#bind_renderbuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#check_framebuffer_status
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#gen_framebuffers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#gen_renderbuffers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#delete_framebuffers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#delete_renderbuffers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#framebuffer_renderbuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#blit_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#activetexture
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#bindtexture
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_invalid_format
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_invalid_format
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_inequal_width_height_cube
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copyteximage2d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage2d_invalid_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage2d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#deletetextures
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#gentextures
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#pixelstorei
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d_inequal_width_height_cube
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d_max_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage2d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texparameteri
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texparameterf
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texparameteriv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texparameterfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage3d_max_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage3d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage3d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texsubimage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage3d_neg_width_height
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#copytexsubimage3d_incomplete_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d_max_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d_invalid_border
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d_invalid_buffer_target
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage3d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage3d_neg_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage3d_neg_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage3d_invalid_offset
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage3d_neg_width_height_depth
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage3d_invalid_size
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texstorage2d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texstorage2d_invalid_binding
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texstorage2d_invalid_levels
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texstorage3d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texstorage3d_invalid_binding
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#texstorage3d_invalid_levels
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#create_shader
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#shader_source
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#compile_shader
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#delete_shader
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#shader_binary
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#attach_shader
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#detach_shader
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#link_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#use_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#delete_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#validate_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#get_program_binary
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#gen_samplers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#bind_sampler
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#delete_samplers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#get_sampler_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#get_sampler_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#sampler_parameteri
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#sampler_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#sampler_parameterf
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#sampler_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#get_attrib_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#get_uniform_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#bind_attrib_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniform_block_binding
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformf_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformf_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformf_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformfv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformfv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformfv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformfv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformi_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformi_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformi_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformiv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformiv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformiv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformiv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformui_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformui_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformui_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformuiv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformuiv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformuiv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniformuiv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniform_matrixfv_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniform_matrixfv_incompatible_type
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniform_matrixfv_invalid_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#uniform_matrixfv_invalid_count
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#gen_transform_feedbacks
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#bind_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#delete_transform_feedbacks
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#begin_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#pause_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#resume_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#end_transform_feedback
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#get_transform_feedback_varying
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#transform_feedback_varyings
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#scissor
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#depth_func
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#viewport
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#stencil_func
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#stencil_func_separate
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#stencil_op
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#stencil_op_separate
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#stencil_mask_separate
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#blend_equation
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#blend_equation_separate
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#blend_func
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#blend_func_separate
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#cull_face
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#front_face
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#line_width
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#gen_queries
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#begin_query
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#end_query
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#delete_queries
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#fence_sync
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#wait_sync
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#client_wait_sync
-dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment#delete_sync
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#vertex_attribf
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#vertex_attribfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#vertex_attribi4
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#vertex_attribi4v
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#vertex_attrib_pointer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#vertex_attrib_i_pointer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#enable_vertex_attrib_array
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#disable_vertex_attrib_array
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#gen_vertex_arrays
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#bind_vertex_array
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#delete_vertex_arrays
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#vertex_attrib_divisor
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_arrays
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_arrays_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_arrays_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_elements_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_arrays_instanced
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_arrays_instanced_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_arrays_instanced_incomplete_primitive
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_elements_instanced_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array#draw_range_elements_invalid_program
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#enable
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#disable
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_booleanv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_floatv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_integerv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_integer64v
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_integeri_v
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_integer64i_v
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_string
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_stringi
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_attached_shaders
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_shaderiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_shader_info_log
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_shader_precision_format
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_shader_source
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_programiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_program_info_log
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_tex_parameterfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_tex_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_uniformfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_uniformiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_uniformuiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_active_uniform
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_active_uniformsiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_active_uniform_blockiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_active_uniform_block_name
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_active_attrib
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_uniform_indices
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_vertex_attribfv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_vertex_attribiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_vertex_attribi_iv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_vertex_attribi_uiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_vertex_attrib_pointerv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_frag_data_location
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_buffer_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_buffer_parameteri64v
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_buffer_pointerv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_renderbuffer_parameteriv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_queryiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_query_objectuiv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_synciv
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#is_enabled
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#hint
-dEQP-GLES31.functional.debug.externally_generated#application_messages
-dEQP-GLES31.functional.debug.externally_generated#third_party_messages
-dEQP-GLES31.functional.debug.externally_generated#push_pop_stack
-dEQP-GLES31.functional.debug.externally_generated#push_pop_consistency
-dEQP-GLES31.functional.debug.error_filters#case_4
-dEQP-GLES31.functional.debug.error_filters#case_5
-dEQP-GLES31.functional.debug.error_filters#case_6
-dEQP-GLES31.functional.debug.error_filters#case_7
-dEQP-GLES31.functional.debug.error_filters#case_10
-dEQP-GLES31.functional.debug.error_filters#case_12
-dEQP-GLES31.functional.debug.error_filters#case_13
-dEQP-GLES31.functional.debug.error_filters#case_14
-dEQP-GLES31.functional.debug.error_filters#case_15
-dEQP-GLES31.functional.debug.error_filters#case_21
-dEQP-GLES31.functional.debug.error_filters#case_22
-dEQP-GLES31.functional.debug.error_filters#case_23
-dEQP-GLES31.functional.debug.error_filters#case_25
-dEQP-GLES31.functional.debug.error_filters#case_28
-dEQP-GLES31.functional.debug.error_filters#case_29
-dEQP-GLES31.functional.debug.error_filters#case_30
-dEQP-GLES31.functional.debug.async#case_0_log
-dEQP-GLES31.functional.debug.async#case_1_callback
-dEQP-GLES31.functional.debug.async#case_2_log
-dEQP-GLES31.functional.debug.async#case_3_callback
-dEQP-GLES31.functional.debug.async#case_4_log
-dEQP-GLES31.functional.debug.async#case_5_callback
-dEQP-GLES31.functional.debug.async#case_6_log
-dEQP-GLES31.functional.debug.async#case_7_callback
-dEQP-GLES31.functional.debug.async#case_8_log
-dEQP-GLES31.functional.debug.async#case_9_callback
-dEQP-GLES31.functional.debug.async#case_10_log
-dEQP-GLES31.functional.debug.async#case_11_callback
-dEQP-GLES31.functional.debug.async#case_12_log
-dEQP-GLES31.functional.debug.async#case_13_callback
-dEQP-GLES31.functional.debug.async#case_14_log
-dEQP-GLES31.functional.debug.async#case_15_callback
-dEQP-GLES31.functional.debug.object_labels#buffer
-dEQP-GLES31.functional.debug.object_labels#shader
-dEQP-GLES31.functional.debug.object_labels#program
-dEQP-GLES31.functional.debug.object_labels#query
-dEQP-GLES31.functional.debug.object_labels#transform_feedback
-dEQP-GLES31.functional.debug.object_labels#sampler
-dEQP-GLES31.functional.debug.object_labels#texture
-dEQP-GLES31.functional.debug.object_labels#renderbuffer
-dEQP-GLES31.functional.debug.object_labels#framebuffer
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba32i
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba32ui
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba16i
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba16ui
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba8
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba8i
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba8ui
-dEQP-GLES31.functional.fbo.color.texcubearray#srgb8_alpha8
-dEQP-GLES31.functional.fbo.color.texcubearray#rgb10_a2
-dEQP-GLES31.functional.fbo.color.texcubearray#rgb10_a2ui
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba4
-dEQP-GLES31.functional.fbo.color.texcubearray#rgb5_a1
-dEQP-GLES31.functional.fbo.color.texcubearray#rgb8
-dEQP-GLES31.functional.fbo.color.texcubearray#rgb565
-dEQP-GLES31.functional.fbo.color.texcubearray#rg32i
-dEQP-GLES31.functional.fbo.color.texcubearray#rg32ui
-dEQP-GLES31.functional.fbo.color.texcubearray#rg16i
-dEQP-GLES31.functional.fbo.color.texcubearray#rg16ui
-dEQP-GLES31.functional.fbo.color.texcubearray#rg8
-dEQP-GLES31.functional.fbo.color.texcubearray#rg8i
-dEQP-GLES31.functional.fbo.color.texcubearray#rg8ui
-dEQP-GLES31.functional.fbo.color.texcubearray#r32i
-dEQP-GLES31.functional.fbo.color.texcubearray#r32ui
-dEQP-GLES31.functional.fbo.color.texcubearray#r16i
-dEQP-GLES31.functional.fbo.color.texcubearray#r16ui
-dEQP-GLES31.functional.fbo.color.texcubearray#r8
-dEQP-GLES31.functional.fbo.color.texcubearray#r8i
-dEQP-GLES31.functional.fbo.color.texcubearray#r8ui
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba32f
-dEQP-GLES31.functional.fbo.color.texcubearray#rgba16f
-dEQP-GLES31.functional.fbo.color.texcubearray#r11f_g11f_b10f
-dEQP-GLES31.functional.fbo.color.texcubearray#rg32f
-dEQP-GLES31.functional.fbo.color.texcubearray#rg16f
-dEQP-GLES31.functional.fbo.color.texcubearray#r32f
-dEQP-GLES31.functional.fbo.color.texcubearray#r16f
-dEQP-GLES31.functional.fbo.color.texcubearray#rgb16f
-dEQP-GLES31.functional.fbo.no_attachments.size#16x16
-dEQP-GLES31.functional.fbo.no_attachments.size#16x64
-dEQP-GLES31.functional.fbo.no_attachments.size#16x256
-dEQP-GLES31.functional.fbo.no_attachments.size#16x1024
-dEQP-GLES31.functional.fbo.no_attachments.size#64x16
-dEQP-GLES31.functional.fbo.no_attachments.size#64x64
-dEQP-GLES31.functional.fbo.no_attachments.size#64x256
-dEQP-GLES31.functional.fbo.no_attachments.size#64x1024
-dEQP-GLES31.functional.fbo.no_attachments.size#256x16
-dEQP-GLES31.functional.fbo.no_attachments.size#256x64
-dEQP-GLES31.functional.fbo.no_attachments.size#256x256
-dEQP-GLES31.functional.fbo.no_attachments.size#256x1024
-dEQP-GLES31.functional.fbo.no_attachments.size#1024x16
-dEQP-GLES31.functional.fbo.no_attachments.size#1024x64
-dEQP-GLES31.functional.fbo.no_attachments.size#1024x256
-dEQP-GLES31.functional.fbo.no_attachments.size#1024x1024
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#1x1
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#3x3
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#15x15
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#17x17
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#31x31
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#33x33
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#63x63
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#65x65
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#127x127
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#129x129
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#255x255
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#257x257
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#511x511
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#513x513
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#1023x1023
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#1025x1025
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#2047x2047
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#15x511
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#127x15
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#129x127
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#511x127
-dEQP-GLES31.functional.fbo.no_attachments.npot_size#2047x1025
-dEQP-GLES31.functional.fbo.no_attachments.multisample#samples0
-dEQP-GLES31.functional.fbo.no_attachments.multisample#samples1
-dEQP-GLES31.functional.fbo.no_attachments.multisample#samples2
-dEQP-GLES31.functional.fbo.no_attachments.multisample#samples3
-dEQP-GLES31.functional.fbo.no_attachments.multisample#samples4
-dEQP-GLES31.functional.fbo.no_attachments.random#0
-dEQP-GLES31.functional.fbo.no_attachments.random#1
-dEQP-GLES31.functional.fbo.no_attachments.random#2
-dEQP-GLES31.functional.fbo.no_attachments.random#3
-dEQP-GLES31.functional.fbo.no_attachments.random#4
-dEQP-GLES31.functional.fbo.no_attachments.random#5
-dEQP-GLES31.functional.fbo.no_attachments.random#6
-dEQP-GLES31.functional.fbo.no_attachments.random#7
-dEQP-GLES31.functional.fbo.no_attachments.random#8
-dEQP-GLES31.functional.fbo.no_attachments.random#9
-dEQP-GLES31.functional.fbo.no_attachments.random#10
-dEQP-GLES31.functional.fbo.no_attachments.random#11
-dEQP-GLES31.functional.fbo.no_attachments.random#12
-dEQP-GLES31.functional.fbo.no_attachments.random#13
-dEQP-GLES31.functional.fbo.no_attachments.random#14
-dEQP-GLES31.functional.fbo.no_attachments.random#15
-dEQP-GLES31.functional.fbo.no_attachments.interaction#256x256ms0_default_128x128ms1
-dEQP-GLES31.functional.fbo.no_attachments.interaction#256x256ms1_default_128x128ms0
-dEQP-GLES31.functional.fbo.no_attachments.interaction#256x256ms0_default_512x512ms2
-dEQP-GLES31.functional.fbo.no_attachments.interaction#256x256ms2_default_128x512ms0
-dEQP-GLES31.functional.fbo.no_attachments.interaction#127x127ms0_default_129x129ms0
-dEQP-GLES31.functional.fbo.no_attachments.interaction#17x512ms4_default_16x16ms2
-dEQP-GLES31.functional.fbo.no_attachments.interaction#2048x2048ms4_default_1x1ms0
-dEQP-GLES31.functional.fbo.no_attachments.interaction#1x1ms0_default_2048x2048ms4
-dEQP-GLES31.functional.fbo.no_attachments.maximums#width
-dEQP-GLES31.functional.fbo.no_attachments.maximums#height
-dEQP-GLES31.functional.fbo.no_attachments.maximums#size
-dEQP-GLES31.functional.fbo.no_attachments.maximums#samples
-dEQP-GLES31.functional.fbo.completeness#no_attachments
-dEQP-GLES31.functional.program_interface_query.buffer_limited_query#resource_name_query
-dEQP-GLES31.functional.program_interface_query.buffer_limited_query#resource_query
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_struct_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.default_block#var_array_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_struct_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.named_block#var_array_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_struct_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.unnamed_block#var_array_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_struct_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array#var_array_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.types#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.default_block.aggregates#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_struct_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_array_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.named_block.aggregates#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.unnamed_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array#var
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_size.block_array#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.types#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#sampler2D_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#sampler2D_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bool_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bool_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bvec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bvec3_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bvec3_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bvec3_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#bvec3_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#vec3_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#vec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#vec3_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#vec3_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#vec3_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#vec3_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#ivec3_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#ivec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#ivec3_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#ivec3_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#ivec3_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.default_block.aggregates#ivec3_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bool_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bool_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bvec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bvec3_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bvec3_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bvec3_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#bvec3_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#vec3_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#vec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#vec3_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#vec3_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#vec3_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#vec3_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#ivec3_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#ivec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#ivec3_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#ivec3_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#ivec3_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates#ivec3_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.unnamed_block.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.array_stride.block_array.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#bvec2
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#bvec4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_cube_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_2d_array_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#isampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#isampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#isampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#usampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#usampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#usampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#usampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#image_cube
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#image_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#image_3d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#iimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#iimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#iimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#uimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#uimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#uimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.opaque_type#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.array#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.default_block.array#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block#int
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block#uint
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block#bool
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.atomic_counter_buffer_index.named_block#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.block_index#default_block
-dEQP-GLES31.functional.program_interface_query.uniform.block_index#named_block
-dEQP-GLES31.functional.program_interface_query.uniform.block_index#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform.block_index#block_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#bvec2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#bvec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_cube_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_2d_array_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#isampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#isampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#isampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#usampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#usampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#usampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#usampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#image_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#image_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#image_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#iimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#iimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#iimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#uimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#uimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#uimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.opaque_type#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.array#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.array.struct#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.opaque_type#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.array#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.struct.struct#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.location.named_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.named_block#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.named_block#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.named_block#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.named_block#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.named_block#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block#int
-dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block#uint
-dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block#bool
-dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.location.unnamed_block#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.types#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.default_block.no_qualifier.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.no_qualifier.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.named_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.types#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.default_block.no_qualifier.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.no_qualifier.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.matrix#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.row_major.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.matrix#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.aggregates#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.aggregates#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block.column_major.aggregates#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.named_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.matrix_stride.unnamed_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block#var
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.default_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block#var
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.named_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.block_array#var
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.uniform.name_length.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#vec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#ivec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#ivec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uvec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uvec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#bvec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#bvec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat2x4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_cube_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_2d_array_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#isampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#isampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#isampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#usampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#usampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#usampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#usampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#image_cube
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#image_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#image_3d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#iimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#iimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#iimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#uimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.types#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.aggregates#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.offset.default_block.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#vec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#ivec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#ivec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#uvec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#uvec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#bvec2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#bvec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat2x4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.offset.named_block.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.unnamed_block.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.offset.block_array.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.default_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.default_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.default_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#vec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#ivec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#ivec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uvec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uvec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#bvec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#bvec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat2x4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_2d_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_cube_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_2d_array_shadow
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#isampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#isampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#isampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#usampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#usampler_cube
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#usampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#usampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#sampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#isampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#usampler_2d_ms
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#image_cube
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#image_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#image_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#iimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#iimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#iimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uimage_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uimage_cube
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#uimage_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#image_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#iimage_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.array#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#sampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#sampler_2d_array
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#sampler_3d
-dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.struct#isampler_2d
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#vec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#ivec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#ivec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#uvec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#uvec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#uvec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#bvec2
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#bvec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#bvec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat2x4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.named_block.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.unnamed_block.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.array#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct#float
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct#int
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct#uint
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct#bool
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct#vec3
-dEQP-GLES31.functional.program_interface_query.uniform.type.block_array.struct#vec4
-dEQP-GLES31.functional.program_interface_query.uniform.random#0
-dEQP-GLES31.functional.program_interface_query.uniform.random#1
-dEQP-GLES31.functional.program_interface_query.uniform.random#2
-dEQP-GLES31.functional.program_interface_query.uniform.random#3
-dEQP-GLES31.functional.program_interface_query.uniform.random#4
-dEQP-GLES31.functional.program_interface_query.uniform.random#5
-dEQP-GLES31.functional.program_interface_query.uniform.random#6
-dEQP-GLES31.functional.program_interface_query.uniform.random#7
-dEQP-GLES31.functional.program_interface_query.uniform.random#8
-dEQP-GLES31.functional.program_interface_query.uniform.random#9
-dEQP-GLES31.functional.program_interface_query.uniform.random#10
-dEQP-GLES31.functional.program_interface_query.uniform.random#11
-dEQP-GLES31.functional.program_interface_query.uniform.random#12
-dEQP-GLES31.functional.program_interface_query.uniform.random#13
-dEQP-GLES31.functional.program_interface_query.uniform.random#14
-dEQP-GLES31.functional.program_interface_query.uniform.random#15
-dEQP-GLES31.functional.program_interface_query.uniform.random#16
-dEQP-GLES31.functional.program_interface_query.uniform.random#17
-dEQP-GLES31.functional.program_interface_query.uniform.random#18
-dEQP-GLES31.functional.program_interface_query.uniform.random#19
-dEQP-GLES31.functional.program_interface_query.uniform.random#20
-dEQP-GLES31.functional.program_interface_query.uniform.random#21
-dEQP-GLES31.functional.program_interface_query.uniform.random#22
-dEQP-GLES31.functional.program_interface_query.uniform.random#23
-dEQP-GLES31.functional.program_interface_query.uniform.random#24
-dEQP-GLES31.functional.program_interface_query.uniform.random#25
-dEQP-GLES31.functional.program_interface_query.uniform.random#26
-dEQP-GLES31.functional.program_interface_query.uniform.random#27
-dEQP-GLES31.functional.program_interface_query.uniform.random#28
-dEQP-GLES31.functional.program_interface_query.uniform.random#29
-dEQP-GLES31.functional.program_interface_query.uniform.random#30
-dEQP-GLES31.functional.program_interface_query.uniform.random#31
-dEQP-GLES31.functional.program_interface_query.uniform.random#32
-dEQP-GLES31.functional.program_interface_query.uniform.random#33
-dEQP-GLES31.functional.program_interface_query.uniform.random#34
-dEQP-GLES31.functional.program_interface_query.uniform.random#35
-dEQP-GLES31.functional.program_interface_query.uniform.random#36
-dEQP-GLES31.functional.program_interface_query.uniform.random#37
-dEQP-GLES31.functional.program_interface_query.uniform.random#38
-dEQP-GLES31.functional.program_interface_query.uniform.random#39
-dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.resource_list#block_array_single_element
-dEQP-GLES31.functional.program_interface_query.uniform_block.active_variables#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.active_variables#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.active_variables#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding#named_block_explicit_binding
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding#unnamed_block_explicit_binding
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_binding#block_array_explicit_binding
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_data_size#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_data_size#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.buffer_data_size#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.name_length#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.name_length#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.name_length#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.name_length#block_array_single_element
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.compute#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.compute#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.compute#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_fragment_only_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#resource_list
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#active_variables
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#buffer_binding
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#buffer_data_size
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_compute
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_separable_vertex
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_separable_fragment
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_fragment
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_fragment_only_vertex
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_fragment_only_fragment
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.vertex_fragment#empty
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_vertex#empty
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment#empty
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_fragment#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.vertex_fragment#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_vertex#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_fragment#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.referenced_by#referenced_by_vertex_fragment
-dEQP-GLES31.functional.program_interface_query.program_input.referenced_by#referenced_by_separable_vertex
-dEQP-GLES31.functional.program_interface_query.program_input.referenced_by#referenced_by_separable_fragment
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.vertex_fragment#mat4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_vertex#mat4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array#mat4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.struct#mat4
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.vertex_fragment#empty
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.vertex_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex#empty
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_fragment#empty
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.compute#empty
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.vertex_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_vertex#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_vertex#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.vertex_fragment#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_fragment#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.vertex_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_vertex#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_vertex#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.referenced_by#referenced_by_vertex_fragment
-dEQP-GLES31.functional.program_interface_query.program_output.referenced_by#referenced_by_separable_vertex
-dEQP-GLES31.functional.program_interface_query.program_output.referenced_by#referenced_by_separable_fragment
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.vertex_fragment.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array#mat4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct#mat4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_fragment.array#uvec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#vec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#vec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#ivec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#ivec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#uvec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#uvec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat2x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat2x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat4x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat4x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.array#mat4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#vec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#vec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#ivec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#ivec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#uvec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#uvec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat2x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat2x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat4x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat4x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.array#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_struct_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.named_block#var_array_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_struct_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.unnamed_block#var_array_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_struct_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.resource_list.block_array#var_array_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.non_array#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#ivec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#uvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#mat2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#mat3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.types#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#float_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#float_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#float_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bool_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bool_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bvec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bvec3_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bvec3_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#bvec3_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#vec4_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#vec4_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#vec4_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#vec4_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#ivec2_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#ivec2_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#ivec2_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.sized.aggregates#ivec2_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.types#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.named_block.unsized.aggregates#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.sized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.unnamed_block.unsized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.sized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_size.block_array.unsized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.non_array#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#ivec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#uvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#mat2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#mat3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.types#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#float_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#float_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#float_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bool_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bool_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bvec3_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bvec3_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bvec3_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#bvec3_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#vec4_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#vec4_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#vec4_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#vec4_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#ivec2_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#ivec2_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#ivec2_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.sized.aggregates#ivec2_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.types#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.named_block.unsized.aggregates#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.sized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.unnamed_block.unsized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.sized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#bvec3_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#bvec3_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#vec4_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#vec4_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#ivec2_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.array_stride.block_array.unsized#ivec2_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.block_index#named_block
-dEQP-GLES31.functional.program_interface_query.buffer_variable.block_index#unnamed_block
-dEQP-GLES31.functional.program_interface_query.buffer_variable.block_index#block_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat2x4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_row_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_row_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.unnamed_block_col_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#ivec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat2x3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat2x4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat3x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat3x4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat4x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat4x3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.types#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_row_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.named_block_col_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_row_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.no_qualifier#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.column_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.matrix_stride.unnamed_block_col_major.row_major#var_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.sized#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.named_block.unsized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.sized#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.unnamed_block.unsized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.sized#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.name_length.block_array.unsized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.sized#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.named_block.unsized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.sized#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.unnamed_block.unsized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_array_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.sized#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized#var_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized#var_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.offset.block_array.unsized#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_array_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_struct_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.named_block#var_array_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_array_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_struct_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.unnamed_block#var_array_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_array_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_struct_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_size.block_array#var_array_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_array_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_struct_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.named_block#var_array_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_array_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_struct_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.unnamed_block#var_array_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_array_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_array_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_array_struct_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_struct_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.top_level_array_stride.block_array#var_array_array_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#bvec2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#bvec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.array.struct#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.array.struct.struct#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#bvec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.array.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type#int
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type#bool
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.type.struct.struct.struct#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#0
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#3
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#4
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#6
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#7
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#8
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#10
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#11
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#12
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#14
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#15
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#16
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#17
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#18
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#21
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#23
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#24
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#26
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#28
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#29
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#31
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#32
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#33
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#34
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#35
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#37
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#39
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list#block_array_single_element
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.active_variables#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.active_variables#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.active_variables#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding#named_block_explicit_binding
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding#unnamed_block_explicit_binding
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_binding#block_array_explicit_binding
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.name_length#block_array_single_element
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.compute#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.compute#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.compute#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_fragment_only_fragment#block_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#vertex_binding_single
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#vertex_binding_max
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#vertex_binding_multiple
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#vertex_binding_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#vertex_binding_max_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#fragment_binding_single
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#fragment_binding_max
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#fragment_binding_multiple
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#fragment_binding_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler2d#fragment_binding_max_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#vertex_binding_single
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#vertex_binding_max
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#vertex_binding_multiple
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#vertex_binding_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#vertex_binding_max_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#fragment_binding_single
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#fragment_binding_max
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#fragment_binding_multiple
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#fragment_binding_array
-dEQP-GLES31.functional.layout_binding.sampler.sampler3d#fragment_binding_max_array
-dEQP-GLES31.functional.layout_binding.ubo#vertex_binding_single
-dEQP-GLES31.functional.layout_binding.ubo#vertex_binding_max
-dEQP-GLES31.functional.layout_binding.ubo#vertex_binding_multiple
-dEQP-GLES31.functional.layout_binding.ubo#vertex_binding_array
-dEQP-GLES31.functional.layout_binding.ubo#vertex_binding_max_array
-dEQP-GLES31.functional.layout_binding.ubo#fragment_binding_single
-dEQP-GLES31.functional.layout_binding.ubo#fragment_binding_max
-dEQP-GLES31.functional.layout_binding.ubo#fragment_binding_multiple
-dEQP-GLES31.functional.layout_binding.ubo#fragment_binding_array
-dEQP-GLES31.functional.layout_binding.ubo#fragment_binding_max_array
-dEQP-GLES31.functional.layout_binding.ssbo#vertex_binding_single
-dEQP-GLES31.functional.layout_binding.ssbo#vertex_binding_max
-dEQP-GLES31.functional.layout_binding.ssbo#vertex_binding_multiple
-dEQP-GLES31.functional.layout_binding.ssbo#vertex_binding_array
-dEQP-GLES31.functional.layout_binding.ssbo#vertex_binding_max_array
-dEQP-GLES31.functional.layout_binding.ssbo#fragment_binding_single
-dEQP-GLES31.functional.layout_binding.ssbo#fragment_binding_max
-dEQP-GLES31.functional.layout_binding.ssbo#fragment_binding_multiple
-dEQP-GLES31.functional.layout_binding.ssbo#fragment_binding_array
-dEQP-GLES31.functional.layout_binding.ssbo#fragment_binding_max_array
-dEQP-GLES31.functional.layout_binding.image.image2d#vertex_binding_single
-dEQP-GLES31.functional.layout_binding.image.image2d#vertex_binding_max
-dEQP-GLES31.functional.layout_binding.image.image2d#vertex_binding_multiple
-dEQP-GLES31.functional.layout_binding.image.image2d#vertex_binding_array
-dEQP-GLES31.functional.layout_binding.image.image2d#vertex_binding_max_array
-dEQP-GLES31.functional.layout_binding.image.image2d#fragment_binding_single
-dEQP-GLES31.functional.layout_binding.image.image2d#fragment_binding_max
-dEQP-GLES31.functional.layout_binding.image.image2d#fragment_binding_multiple
-dEQP-GLES31.functional.layout_binding.image.image2d#fragment_binding_array
-dEQP-GLES31.functional.layout_binding.image.image2d#fragment_binding_max_array
-dEQP-GLES31.functional.layout_binding.image.image3d#vertex_binding_single
-dEQP-GLES31.functional.layout_binding.image.image3d#vertex_binding_max
-dEQP-GLES31.functional.layout_binding.image.image3d#vertex_binding_multiple
-dEQP-GLES31.functional.layout_binding.image.image3d#vertex_binding_array
-dEQP-GLES31.functional.layout_binding.image.image3d#vertex_binding_max_array
-dEQP-GLES31.functional.layout_binding.image.image3d#fragment_binding_single
-dEQP-GLES31.functional.layout_binding.image.image3d#fragment_binding_max
-dEQP-GLES31.functional.layout_binding.image.image3d#fragment_binding_multiple
-dEQP-GLES31.functional.layout_binding.image.image3d#fragment_binding_array
-dEQP-GLES31.functional.layout_binding.image.image3d#fragment_binding_max_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#vertex_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#fragment_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#vertex_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#fragment_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#vertex_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#fragment_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#vertex_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#fragment_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#binding_contradictory
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler2d#binding_contradictory_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#vertex_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#fragment_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#vertex_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#fragment_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#vertex_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#fragment_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#vertex_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#fragment_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#binding_contradictory
-dEQP-GLES31.functional.layout_binding.negative.sampler.sampler3d#binding_contradictory_array
-dEQP-GLES31.functional.layout_binding.negative.ubo#vertex_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.ubo#fragment_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.ubo#vertex_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.ubo#fragment_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.ubo#vertex_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.ubo#fragment_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.ubo#vertex_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.ubo#fragment_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.ubo#binding_contradictory
-dEQP-GLES31.functional.layout_binding.negative.ubo#binding_contradictory_array
-dEQP-GLES31.functional.layout_binding.negative.ssbo#vertex_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.ssbo#fragment_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.ssbo#vertex_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.ssbo#fragment_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.ssbo#vertex_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.ssbo#fragment_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.ssbo#vertex_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.ssbo#fragment_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.ssbo#binding_contradictory
-dEQP-GLES31.functional.layout_binding.negative.ssbo#binding_contradictory_array
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#vertex_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#fragment_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#vertex_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#fragment_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#vertex_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#fragment_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#vertex_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#fragment_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#binding_contradictory
-dEQP-GLES31.functional.layout_binding.negative.image.image2d#binding_contradictory_array
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#vertex_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#fragment_binding_over_max
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#vertex_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#fragment_binding_neg
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#vertex_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#fragment_binding_over_max_array
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#vertex_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#fragment_binding_neg_array
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#binding_contradictory
-dEQP-GLES31.functional.layout_binding.negative.image.image3d#binding_contradictory_array
diff --git a/tests/tests/deqp/gles31-temporary-failures.txt b/tests/tests/deqp/gles31-temporary-failures.txt
deleted file mode 100644
index c3986eb..0000000
--- a/tests/tests/deqp/gles31-temporary-failures.txt
+++ /dev/null
@@ -1,8941 +0,0 @@
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_directive#ext_geometry_shader
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_directive#ext_gpu_shader5
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_directive#ext_primitive_bounding_box
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_directive#ext_shader_io_blocks
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_directive#ext_tessellation_shader
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_directive#oes_sample_variables
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_directive#oes_shader_multisample_interpolation
-dEQP-GLES31.functional.android_extension_pack.shaders.extension_macros#android_extension_pack_es31a
-dEQP-GLES31.functional.blend_equation_advanced.state_query#blend_equation_getfloat
-dEQP-GLES31.functional.blend_equation_advanced.state_query#blend_equation_getinteger
-dEQP-GLES31.functional.blend_equation_advanced.state_query#blend_equation_getinteger64
-dEQP-GLES31.functional.blend_equation_advanced.state_query#blend_equation_getinteger64i_v
-dEQP-GLES31.functional.blend_equation_advanced.state_query#blend_equation_getintegeri_v
-dEQP-GLES31.functional.compute.basic#copy_image_to_ssbo_large
-dEQP-GLES31.functional.compute.basic#copy_ssbo_to_image_large
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#large_offset
-dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute#large_offset_multiple_invocations
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.rgba_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_rgba_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x10_rgba.srgb8_alpha8_astc_10x10_khr_srgb8_alpha8_astc_10x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.rgba_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_rgba_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x5_rgba.srgb8_alpha8_astc_10x5_khr_srgb8_alpha8_astc_10x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.rgba_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_rgba_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x6_rgba.srgb8_alpha8_astc_10x6_khr_srgb8_alpha8_astc_10x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.rgba_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_rgba_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_10x8_rgba.srgb8_alpha8_astc_10x8_khr_srgb8_alpha8_astc_10x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.rgba_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_rgba_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_srgb8_alpha8_astc_12x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.rgba_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_rgba_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x12_rgba.srgb8_alpha8_astc_12x12_khr_srgb8_alpha8_astc_12x12_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.rgba_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_rgba_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_4x4_rgba.srgb8_alpha8_astc_4x4_khr_srgb8_alpha8_astc_4x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.rgba_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_rgba_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x4_rgba.srgb8_alpha8_astc_5x4_khr_srgb8_alpha8_astc_5x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_rgba_astc_5x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.rgba_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_rgba_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_5x5_rgba.srgb8_alpha8_astc_5x5_khr_srgb8_alpha8_astc_5x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_rgba_astc_6x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.rgba_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_rgba_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_rgba_astc_6x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x5_rgba.srgb8_alpha8_astc_6x5_khr_srgb8_alpha8_astc_6x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.rgba_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_rgba_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_6x6_rgba.srgb8_alpha8_astc_6x6_khr_srgb8_alpha8_astc_6x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_rgba_astc_8x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.rgba_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_rgba_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x5_rgba.srgb8_alpha8_astc_8x5_khr_srgb8_alpha8_astc_8x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.rgba_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_rgba_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.rgba_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_rgba_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x8_rgba.srgb8_alpha8_astc_8x8_khr_srgb8_alpha8_astc_8x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.r11_eac_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.r11_eac_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.r11_eac_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.r11_eac_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.r11_eac_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.r11_eac_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.signed_r11_eac_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.signed_r11_eac_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.signed_r11_eac_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.signed_r11_eac_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.signed_r11_eac_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_r11.signed_r11_eac_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.rg11_eac_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.rg11_eac_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.rg11_eac_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.rg11_eac_signed_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.rg11_eac_signed_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.rg11_eac_signed_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.signed_rg11_eac_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.signed_rg11_eac_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.signed_rg11_eac_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.signed_rg11_eac_signed_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.signed_rg11_eac_signed_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_eac_rg11.signed_rg11_eac_signed_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.rgba8_etc2_eac_rgba8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.rgba8_etc2_eac_rgba8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.rgba8_etc2_eac_rgba8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.rgba8_etc2_eac_srgb8_alpha8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.rgba8_etc2_eac_srgb8_alpha8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.rgba8_etc2_eac_srgb8_alpha8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.srgb8_alpha8_etc2_eac_rgba8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.srgb8_alpha8_etc2_eac_rgba8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.srgb8_alpha8_etc2_eac_rgba8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.srgb8_alpha8_etc2_eac_srgb8_alpha8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.srgb8_alpha8_etc2_eac_srgb8_alpha8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_eac_rgba.srgb8_alpha8_etc2_eac_srgb8_alpha8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.rgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.rgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.rgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.rgb8_punchthrough_alpha1_etc2_srgb8_punchthrough_alpha1_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.rgb8_punchthrough_alpha1_etc2_srgb8_punchthrough_alpha1_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.rgb8_punchthrough_alpha1_etc2_srgb8_punchthrough_alpha1_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_srgb8_punchthrough_alpha1_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_srgb8_punchthrough_alpha1_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_srgb8_punchthrough_alpha1_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.rgb8_etc2_rgb8_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.rgb8_etc2_rgb8_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.rgb8_etc2_rgb8_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.rgb8_etc2_srgb8_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.rgb8_etc2_srgb8_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.rgb8_etc2_srgb8_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.srgb8_etc2_rgb8_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.srgb8_etc2_rgb8_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.srgb8_etc2_rgb8_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.srgb8_etc2_srgb8_etc2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.srgb8_etc2_srgb8_etc2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgb.srgb8_etc2_srgb8_etc2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rg11_eac_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba8_etc2_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_signed_rg11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_etc2_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba8_etc2_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_4x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rgba_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_signed_rg11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_etc2_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rg11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba8_etc2_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_signed_rg11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x10_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_10x8_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x12_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_4x4_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x4_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_5x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_6x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x5_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x6_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_8x8_khr#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_etc2_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba8_etc2_eac_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x12_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.signed_rg11_eac_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x6_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x6_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_etc2_eac_rgba32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rgba16ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32f_signed_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32ui_signed_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16f_signed_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16i_signed_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rgba16ui_signed_r11_eac#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rg32ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.signed_r11_eac_rgba16ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32f_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32i_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_r16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16f_rg8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_r16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16i_rg8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_r16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_r16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8i_rg8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_r16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_rg8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_r16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_r16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8ui_rg8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_rgb8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8i_srgb8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_rgb8ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_rgb8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_srgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_srgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_srgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_srgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_srgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_srgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_snorm_srgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8_srgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_rgb8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.rgb8ui_srgb8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_rgb8ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_srgb8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_srgb8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_srgb8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_srgb8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_srgb8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_srgb8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_24_bits.srgb8_srgb8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r11f_g11f_b10f_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32f_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32i_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.r32ui_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16f_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16i_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb9_e5_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8i_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_snorm_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgba8ui_srgb8_alpha8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16f#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rg16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb10_a2ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgba8ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_srgb8_alpha8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16f_rgb16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16i_rgb16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rg32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32f_rgba16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rg32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32i_rgba16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rg32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rg32ui_rgba16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rgba16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rg32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16i_rgba16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rg32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#renderbuffer_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8i_r8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#renderbuffer_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8i#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8_snorm#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#renderbuffer_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_r8ui#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8_snorm_r8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#renderbuffer_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#renderbuffer_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#renderbuffer_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#renderbuffer_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8_snorm#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_array_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_array_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_array_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_array_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture2d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture3d_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture3d_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture3d_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8#texture3d_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#cubemap_to_renderbuffer
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#renderbuffer_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_8_bits.r8ui_r8ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32f_rgb32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32i_rgb32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32i#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32i#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32i#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32i#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32i#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32i#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32i#texture3d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32ui#cubemap_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32ui#cubemap_to_texture2d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32ui#cubemap_to_texture2d_array
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32ui#cubemap_to_texture3d
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32ui#texture2d_array_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32ui#texture2d_to_cubemap
-dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32ui#texture3d_to_cubemap
-dEQP-GLES31.functional.debug.error_filters#case_0
-dEQP-GLES31.functional.debug.error_filters#case_16
-dEQP-GLES31.functional.debug.error_filters#case_18
-dEQP-GLES31.functional.debug.error_filters#case_19
-dEQP-GLES31.functional.debug.error_filters#case_20
-dEQP-GLES31.functional.debug.error_filters#case_26
-dEQP-GLES31.functional.debug.error_filters#case_3
-dEQP-GLES31.functional.debug.error_filters#case_8
-dEQP-GLES31.functional.debug.error_groups#case_0
-dEQP-GLES31.functional.debug.error_groups#case_10
-dEQP-GLES31.functional.debug.error_groups#case_11
-dEQP-GLES31.functional.debug.error_groups#case_13
-dEQP-GLES31.functional.debug.error_groups#case_15
-dEQP-GLES31.functional.debug.error_groups#case_3
-dEQP-GLES31.functional.debug.error_groups#case_8
-dEQP-GLES31.functional.debug.error_groups#case_9
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#invalidate_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer#invalidate_sub_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#clear
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#draw_buffers
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#framebuffer_texture2d
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#framebuffer_texture_layer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#invalidate_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#invalidate_sub_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer#read_buffer
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#program_binary
-dEQP-GLES31.functional.debug.negative_coverage.get_error.shader#program_parameteri
-dEQP-GLES31.functional.debug.negative_coverage.get_error.state#get_internalformativ
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedteximage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage2d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#compressedtexsubimage3d_max_level
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#generatemipmap
-dEQP-GLES31.functional.debug.negative_coverage.get_error.texture#teximage3d
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#invalidate_framebuffer
-dEQP-GLES31.functional.debug.negative_coverage.log.buffer#invalidate_sub_framebuffer
-dEQP-GLES31.functional.debug.object_labels#buffer_limited_query
-dEQP-GLES31.functional.debug.object_labels#clearing
-dEQP-GLES31.functional.debug.object_labels#program_pipeline
-dEQP-GLES31.functional.debug.object_labels#query_length_only
-dEQP-GLES31.functional.debug.object_labels#specify_with_length
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_advanced_blend_eq_buffer_advanced_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_advanced_blend_eq_buffer_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_advanced_blend_eq_buffer_separate_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_blend_func_buffer_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_blend_func_buffer_separate_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_color_mask_buffer_color_mask
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_separate_blend_func_buffer_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_common#common_separate_blend_func_buffer_separate_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_enable_buffer_enable
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_disable_buffer_disable
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_disable_buffer_enable
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_enable_buffer_disable
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_blend_eq_buffer_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_blend_eq_buffer_separate_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_blend_eq_buffer_advanced_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_separate_blend_eq_buffer_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_separate_blend_eq_buffer_separate_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_separate_blend_eq_buffer_advanced_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_advanced_blend_eq_buffer_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_advanced_blend_eq_buffer_separate_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_advanced_blend_eq_buffer_advanced_blend_eq
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_blend_func_buffer_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_blend_func_buffer_separate_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_separate_blend_func_buffer_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_separate_blend_func_buffer_separate_blend_func
-dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed#common_color_mask_buffer_color_mask
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#0
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#1
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#14
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#15
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#16
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#17
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#2
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#5
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#6
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#7
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers#9
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers#12
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers#13
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers#15
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers#16
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers#2
-dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers#7
-dEQP-GLES31.functional.draw_indirect.negative#command_offset_not_in_buffer_unsigned32_wrap
-dEQP-GLES31.functional.fbo.no_attachments.maximums#all
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_0_end_0
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_0_end_1
-dEQP-GLES31.functional.geometry_shading.emit#line_strip_emit_0_end_2
-dEQP-GLES31.functional.geometry_shading.emit#points_emit_0_end_0
-dEQP-GLES31.functional.geometry_shading.emit#points_emit_0_end_1
-dEQP-GLES31.functional.geometry_shading.emit#points_emit_0_end_2
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_0_end_0
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_0_end_1
-dEQP-GLES31.functional.geometry_shading.emit#triangle_strip_emit_0_end_2
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_atomic_counter_buffers
-dEQP-GLES31.functional.geometry_shading.query#max_geometry_atomic_counters
-dEQP-GLES31.functional.multisample.default_framebuffer#sample_mask_sum_of_inverses
-dEQP-GLES31.functional.multisample.default_framebuffer#sample_position
-dEQP-GLES31.functional.primitive_bounding_box.call_order#bbox_first_viewport_second
-dEQP-GLES31.functional.primitive_bounding_box.call_order#viewport_first_bbox_second
-dEQP-GLES31.functional.primitive_bounding_box.clear#full_clear_with_triangles
-dEQP-GLES31.functional.primitive_bounding_box.clear#full_clear_with_triangles_per_primitive_bbox
-dEQP-GLES31.functional.primitive_bounding_box.clear#scissored_clear_with_triangles
-dEQP-GLES31.functional.primitive_bounding_box.clear#scissored_clear_with_triangles_per_primitive_bbox
-dEQP-GLES31.functional.primitive_bounding_box.clear#scissored_full_clear_with_triangles
-dEQP-GLES31.functional.primitive_bounding_box.clear#scissored_full_clear_with_triangles_per_primitive_bbox
-dEQP-GLES31.functional.primitive_bounding_box.depth.builtin_depth#per_primitive_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.depth.builtin_depth#per_primitive_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.depth.user_defined_depth#per_primitive_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.depth.user_defined_depth#per_primitive_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_primitive.vertex_tessellation_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_primitive.vertex_tessellation_fragment#fbo
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.lines.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#fbo
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_geometry_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_geometry_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_geometry_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_geometry_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_geometry_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_geometry_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_tessellation_geometry_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_tessellation_geometry_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.global_state.vertex_tessellation_geometry_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_primitive.vertex_tessellation_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_primitive.vertex_tessellation_fragment#fbo
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.points.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#fbo
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_geometry_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_geometry_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.global_state.vertex_tessellation_geometry_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_primitive.vertex_tessellation_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_primitive.vertex_tessellation_fragment#fbo
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.triangles.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#fbo
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#default_framebuffer_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_equal
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_larger
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_draw.vertex_tessellation_geometry_fragment#fbo_bbox_smaller
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_primitive.vertex_tessellation_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_primitive.vertex_tessellation_fragment#fbo
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#default_framebuffer
-dEQP-GLES31.functional.primitive_bounding_box.wide_lines.tessellation_set_per_primitive.vertex_tessellation_geometry_fragment#fbo
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_separable_geometry
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_geo_fragment
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_geo_fragment_only_fragment
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_geo_fragment_only_geo
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_geo_fragment_only_vertex
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_tess_geo_fragment
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_tess_geo_fragment_only_fragment
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_tess_geo_fragment_only_geo
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_tess_geo_fragment_only_tess_ctrl
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_tess_geo_fragment_only_tess_eval
-dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer#referenced_by_vertex_tess_geo_fragment_only_vertex
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#22
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#30
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#36
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#40
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#41
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#42
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#44
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#45
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#47
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#48
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#49
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#51
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#52
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#54
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#55
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#56
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#58
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#59
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#61
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#62
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#63
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#65
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#66
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#67
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#68
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#70
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#72
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#73
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#75
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#76
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#77
-dEQP-GLES31.functional.program_interface_query.buffer_variable.random#79
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block#float_unsized_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block#float_unsized_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_unsized_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.named_block#float_unsized_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_geometry.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_tess_ctrl.named_block#float_unsized_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_tess_eval.named_block#float_unsized_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block#float_unsized_struct_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_geo.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment_only_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_geo_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_geo.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_tess_eval.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.named_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.named_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.named_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment_only_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_tess_geo_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.interface_blocks.patch_in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_tess_eval#patch_var
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_tess_eval#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_tess_eval#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.interface_blocks.patch_in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_fragment#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_tess_eval#patch_var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_tess_eval#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_tess_eval#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_input.is_per_patch.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.block_array#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.block_array#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.block_array#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.unnamed_block#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.unnamed_block#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.in.unnamed_block#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.block_array#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.block_array#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.block_array#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block_explicit_location#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block_explicit_location#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block_explicit_location#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.named_block#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.unnamed_block#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.unnamed_block#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.interface_blocks.patch_in.unnamed_block#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_geometry#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_ctrl#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#patch_var
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#patch_var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#patch_var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#patch_var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_input.location.separable_tess_eval#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.interface_blocks.patch_in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_tess_eval#patch_var
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_tess_eval#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_tess_eval#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_input.referenced_by#referenced_by_separable_geometry
-dEQP-GLES31.functional.program_interface_query.program_input.referenced_by#referenced_by_separable_tess_eval_patch_in
-dEQP-GLES31.functional.program_interface_query.program_input.referenced_by#referenced_by_vertex_geo_fragment
-dEQP-GLES31.functional.program_interface_query.program_input.referenced_by#referenced_by_vertex_tess_geo_fragment
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.compute#empty
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.interface_blocks.patch_in.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_geometry#empty
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_tess_ctrl#empty
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_tess_eval#empty
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_tess_eval#patch_var
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_tess_eval#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_tess_eval#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.block_array.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.unnamed_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.block_array.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block_explicit_location.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.named_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.patch_in.unnamed_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_geometry#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_ctrl#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_array#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_array#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_array#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_array#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_struct#float
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_struct#int
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_struct#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var_struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var#uint
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var#uvec4
-dEQP-GLES31.functional.program_interface_query.program_input.type.separable_tess_eval.patch_var#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.interface_blocks.patch_out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_geometry#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_geometry#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_tess_ctrl#patch_var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_tess_ctrl#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_tess_ctrl#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_tess_eval#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_tess_eval#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.patch_out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_geometry#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_geometry#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_tess_ctrl#patch_var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_tess_ctrl#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_tess_ctrl#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_tess_eval#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_tess_eval#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_vertex#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.separable_vertex#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.vertex_fragment#var
-dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.vertex_fragment#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.block_array#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.block_array#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.block_array#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block_explicit_location#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block_explicit_location#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block_explicit_location#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.named_block#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.unnamed_block#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.unnamed_block#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.out.unnamed_block#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.block_array#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.block_array#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.block_array#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block_explicit_location#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block_explicit_location#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block_explicit_location#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.named_block#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.unnamed_block#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.unnamed_block#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.interface_blocks.patch_out.unnamed_block#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_geometry#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_geometry#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_geometry#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_geometry#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_geometry#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#patch_var
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#patch_var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#patch_var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#patch_var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_ctrl#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_eval#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_eval#var_array_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_eval#var_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_eval#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_tess_eval#var_struct_explicit_location
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex#var
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.interface_blocks.patch_out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_geometry#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_geometry#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_tess_ctrl#patch_var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_tess_ctrl#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_tess_ctrl#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_tess_eval#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_tess_eval#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.referenced_by#referenced_by_separable_geometry
-dEQP-GLES31.functional.program_interface_query.program_output.referenced_by#referenced_by_separable_tess_ctrl_patch_out
-dEQP-GLES31.functional.program_interface_query.program_output.referenced_by#referenced_by_vertex_geo_fragment
-dEQP-GLES31.functional.program_interface_query.program_output.referenced_by#referenced_by_vertex_tess_geo_fragment
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.block_array#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.block_array#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.block_array#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.named_block_explicit_location#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.named_block_explicit_location#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.named_block_explicit_location#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.named_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.named_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.named_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.unnamed_block#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.unnamed_block#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.interface_blocks.patch_out.unnamed_block#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_geometry#empty
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_geometry#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_geometry#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_geometry#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_ctrl#empty
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_ctrl#patch_var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_ctrl#patch_var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_ctrl#patch_var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_ctrl#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_eval#empty
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_eval#var
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_eval#var_array
-dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_tess_eval#var_struct
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.block_array.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block_explicit_location.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.named_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.out.unnamed_block.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.block_array.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block_explicit_location.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.named_block.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.interface_blocks.patch_out.unnamed_block.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_geometry.struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var_struct#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_ctrl.patch_var#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.array#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.array#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.array#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.array#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.array#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.array#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.array#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#ivec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat2x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat2x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat4x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#mat4x3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#uvec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#vec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.basic_type#vec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.struct#float
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.struct#int
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.struct#uint
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.program_output.type.separable_tess_eval.struct#vec3
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_geometry#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_geometry#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.separable_geometry#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_geo#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_geo#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_geo#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment_only_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_geo_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_geo#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_geo#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_geo#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_tess_eval#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_tess_eval#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_tess_eval#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment_only_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.vertex_tess_geo_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_geometry#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_geometry#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_geometry#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_geometry#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_geometry#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_tess_eval#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_tess_eval#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_geo_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_geo_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_geo_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_geo_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_geo_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_tess_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_tess_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_tess_geo_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_tess_geo_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_tess_geo_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_tess_geo_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.vertex_tess_geo_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_geometry#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_geometry#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_geometry#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_geometry#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_geometry#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_tess_eval#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.separable_vertex#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_geo_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_geo_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_geo_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_geo_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_geo_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_tess_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_tess_geo_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_tess_geo_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_tess_geo_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_tess_geo_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.name_length.vertex_tess_geo_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_geometry#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_geometry#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_geometry#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_geometry#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_geometry#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_tess_eval#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.separable_vertex#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_geo_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_geo_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_geo_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_geo_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_geo_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_tess_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_tess_geo_fragment#builtin_gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_tess_geo_fragment#default_block_array
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_tess_geo_fragment#default_block_array_element
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_tess_geo_fragment#default_block_basic_type
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_tess_geo_fragment#default_block_struct_member
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.array#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.basic_type#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.basic_type#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.builtin#gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.struct#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.struct#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.struct#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.struct#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.whole_array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.whole_array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.whole_array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.whole_array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.whole_array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.whole_array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_geometry.whole_array#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_tess_eval.struct#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_tess_eval.struct#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_tess_eval.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_tess_eval.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_tess_eval.struct#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_tess_eval.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_tess_eval.struct#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#ivec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat2x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat2x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat4x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#mat4x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#uvec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#vec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.separable_vertex.struct#vec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#ivec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#ivec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat2x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat2x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat3x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat4x2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#mat4x3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#uvec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#uvec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#vec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_fragment.struct#vec4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.array#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.basic_type#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.basic_type#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.builtin#gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.struct#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.struct#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.struct#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.struct#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_fragment.struct#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_fragment.struct#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_fragment.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_fragment.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_fragment.struct#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_fragment.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_fragment.struct#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.array#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.basic_type#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.basic_type#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.basic_type#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.basic_type#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.basic_type#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.basic_type#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.basic_type#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.builtin#gl_position
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.struct#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.struct#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.struct#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.struct#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.struct#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.struct#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.struct#vec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.whole_array#float
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.whole_array#int
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.whole_array#ivec3
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.whole_array#mat3x4
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.whole_array#uint
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.whole_array#uvec2
-dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_tess_geo_fragment.whole_array#vec3
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_geometry#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_geometry#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.separable_geometry#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_geo#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_geo#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_geo#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_fragment#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_fragment#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_geo#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_geo#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_geo#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_tess_ctrl#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_tess_eval#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_tess_eval#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_tess_eval#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_vertex#block_array
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_vertex#named_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_vertex#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment#unnamed_block
-dEQP-GLES31.functional.program_interface_query.uniform.random#40
-dEQP-GLES31.functional.program_interface_query.uniform.random#41
-dEQP-GLES31.functional.program_interface_query.uniform.random#42
-dEQP-GLES31.functional.program_interface_query.uniform.random#44
-dEQP-GLES31.functional.program_interface_query.uniform.random#45
-dEQP-GLES31.functional.program_interface_query.uniform.random#47
-dEQP-GLES31.functional.program_interface_query.uniform.random#48
-dEQP-GLES31.functional.program_interface_query.uniform.random#49
-dEQP-GLES31.functional.program_interface_query.uniform.random#51
-dEQP-GLES31.functional.program_interface_query.uniform.random#52
-dEQP-GLES31.functional.program_interface_query.uniform.random#54
-dEQP-GLES31.functional.program_interface_query.uniform.random#55
-dEQP-GLES31.functional.program_interface_query.uniform.random#56
-dEQP-GLES31.functional.program_interface_query.uniform.random#58
-dEQP-GLES31.functional.program_interface_query.uniform.random#59
-dEQP-GLES31.functional.program_interface_query.uniform.random#61
-dEQP-GLES31.functional.program_interface_query.uniform.random#63
-dEQP-GLES31.functional.program_interface_query.uniform.random#65
-dEQP-GLES31.functional.program_interface_query.uniform.random#66
-dEQP-GLES31.functional.program_interface_query.uniform.random#68
-dEQP-GLES31.functional.program_interface_query.uniform.random#70
-dEQP-GLES31.functional.program_interface_query.uniform.random#72
-dEQP-GLES31.functional.program_interface_query.uniform.random#73
-dEQP-GLES31.functional.program_interface_query.uniform.random#75
-dEQP-GLES31.functional.program_interface_query.uniform.random#77
-dEQP-GLES31.functional.program_interface_query.uniform.random#79
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.uniform_block#float_array_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.uniform_block#float_array_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.uniform_block#float_struct_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.uniform_block#float_struct_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_geometry.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_geo.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_geo.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_eval.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.block_array#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.block_array#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.block_array#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#atomic_uint
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#atomic_uint_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#sampler
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#sampler_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block#sampler_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.unnamed_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.uniform_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.uniform_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.uniform_block#float_struct
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.unnamed_block#float
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.unnamed_block#float_array
-dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.unnamed_block#float_struct
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_16_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_renderbuffer_samples_16_discard
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_16_color
-dEQP-GLES31.functional.sample_shading.min_sample_shading#multisample_texture_samples_16_discard
-dEQP-GLES31.functional.separate_shader.validation.io_blocks#mismatch_different_member_interpolation
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_qualifier_vertex_centroid_fragment_flat
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_qualifier_vertex_flat_fragment_centroid
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_qualifier_vertex_flat_fragment_none
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_qualifier_vertex_flat_fragment_smooth
-dEQP-GLES31.functional.separate_shader.validation.varying#mismatch_qualifier_vertex_smooth_fragment_flat
-dEQP-GLES31.functional.shaders.arrays.invalid#constructor_c_style2_fragment
-dEQP-GLES31.functional.shaders.arrays.invalid#constructor_c_style2_vertex
-dEQP-GLES31.functional.shaders.arrays.invalid#constructor_c_style4_fragment
-dEQP-GLES31.functional.shaders.arrays.invalid#constructor_c_style4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#bool_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#bool_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#bvec3_3x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#bvec3_3x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#int_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#int_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#ivec3_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#ivec3_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#struct_5x5x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#struct_5x5x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#vec3_1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.explicit_to_implicit#vec3_1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#bool_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#bool_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#bvec3_3x1_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#bvec3_3x1_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#float_3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#float_3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#int_2x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#int_2x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#ivec3_3x1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#ivec3_3x1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#mat3_3x2_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#mat3_3x2_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#mat3_3x3x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#mat3_3x3x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#mat3_3x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#mat3_3x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#struct_5x5x4_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#struct_5x5x4_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#vec3_1x3_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.assignment.implicit_to_implicit#vec3_1x3_vertex
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#empty_declaration_without_var_name_fragment
-dEQP-GLES31.functional.shaders.arrays_of_arrays.invalid#empty_declaration_without_var_name_vertex
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_atomic_counter_buffer_size
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_combined_atomic_counter_buffers
-dEQP-GLES31.functional.shaders.builtin_constants.core#max_vertex_atomic_counter_buffers
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_patch_vertices
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_control_input_components
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_control_output_components
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_control_texture_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_control_total_output_components
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_control_uniform_components
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_evaluation_input_components
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_evaluation_output_components
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_evaluation_texture_image_units
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_evaluation_uniform_components
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_gen_level
-dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader#max_tess_patch_components
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.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.atan2.lowp_compute#scalar
-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.atan.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.atan.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.modf#highp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.precision.modf#lowp_compute
-dEQP-GLES31.functional.shaders.builtin_functions.precision.modf#mediump_compute
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.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
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.highp_compute#vec4
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.mediump_compute#scalar
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.mediump_compute#vec2
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.mediump_compute#vec3
-dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.mediump_compute#vec4
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.add#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.div#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.mul#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.input_before_literal.sub#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.add#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.div#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.mul#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.arithmetic.literal_before_input.sub#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater_or_equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater_or_equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.greater#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less_or_equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less_or_equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.less#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.input_before_literal.not_equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater_or_equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater_or_equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.greater#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less_or_equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less_or_equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.less#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec2_to_uvec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec2_to_uvec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec2_to_vec2_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec2_to_vec2_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec3_to_uvec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec3_to_uvec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec3_to_vec3_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec3_to_vec3_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec4_to_uvec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec4_to_uvec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec4_to_vec4_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#ivec4_to_vec4_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.comparisons.literal_before_input.not_equal#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec2_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec3_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_uint_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.invalid.variables#ivec4_to_uint_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_in_parens#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.literal_before_paren_expr.input_outside_parens#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_in_parens#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_float_fragment
-dEQP-GLES31.functional.shaders.implicit_conversions.parenthesized_expressions.paren_expr_before_literal.input_outside_parens#uint_to_float_vertex
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_array_size_mismatch
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_block_array_size_mismatch
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#input_no_declaration
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#output_no_declaration
-dEQP-GLES31.functional.shaders.linkage.geometry.varying.rules#unspecified_output_primitive_num_vertices
-dEQP-GLES31.functional.shaders.linkage.io_block#mismatch_block_array_size
-dEQP-GLES31.functional.shaders.linkage.io_block#mismatch_member_name
-dEQP-GLES31.functional.shaders.linkage.io_block#missing_output_block
-dEQP-GLES31.functional.shaders.linkage.io_block#with_and_without_instance_name
-dEQP-GLES31.functional.shaders.linkage.shader_storage_block#ambiguous_variable_name_3
-dEQP-GLES31.functional.shaders.linkage.tessellation_geometry.varying.rules#no_output_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#input_no_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#internal_no_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#output_no_declaration
-dEQP-GLES31.functional.shaders.linkage.tessellation.varying.rules#per_patch_qualifier_mismatch_2
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative#interpolate_constant
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative#interpolate_global
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative#interpolate_local
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative#interpolate_struct_member
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative#vec4_crop_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative#vec4_identity_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative#vec4_mixed_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.array_element#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#default_framebuffer
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.at_sample_position#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.centroid_qualifier#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative#interpolate_constant
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative#interpolate_global
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative#interpolate_local
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative#interpolate_struct_member
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative#vec4_crop_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative#vec4_identity_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative#vec4_mixed_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.no_qualifiers#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_rbo_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.sample_qualifier#multisample_texture_16
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative#interpolate_constant
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative#interpolate_global
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative#interpolate_local
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative#interpolate_struct_member
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative#vec4_crop_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative#vec4_identity_swizzle
-dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative#vec4_mixed_swizzle
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#singlesample_rbo
-dEQP-GLES31.functional.shaders.sample_variables.num_samples#singlesample_texture
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_id#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_sample#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_rbo_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_rbo_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_rbo_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_rbo_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bit_count_per_two_samples#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample#multisample_texture_1
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample#multisample_texture_2
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_sample#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples#multisample_texture_4
-dEQP-GLES31.functional.shaders.sample_variables.sample_mask_in.bits_unique_per_two_samples#multisample_texture_8
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#default_framebuffer
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_rbo_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.correctness#multisample_texture_16
-dEQP-GLES31.functional.shaders.sample_variables.sample_pos.distribution#multisample_texture_16
-dEQP-GLES31.functional.shaders.uniform_block.invalid#double_underscore_block_name_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#double_underscore_block_name_vertex
-dEQP-GLES31.functional.shaders.uniform_block.invalid#double_underscore_instance_name_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#double_underscore_instance_name_vertex
-dEQP-GLES31.functional.shaders.uniform_block.invalid#invalid_identifier_block_name_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#invalid_identifier_block_name_vertex
-dEQP-GLES31.functional.shaders.uniform_block.invalid#invalid_identifier_instance_name_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#invalid_identifier_instance_name_vertex
-dEQP-GLES31.functional.shaders.uniform_block.invalid#repeated_block_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#repeated_block_vertex
-dEQP-GLES31.functional.shaders.uniform_block.invalid#too_long_block_name_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#too_long_block_name_vertex
-dEQP-GLES31.functional.shaders.uniform_block.invalid#global_layout_std430_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#global_layout_std430_vertex
-dEQP-GLES31.functional.shaders.uniform_block.invalid#structure_definition_fragment
-dEQP-GLES31.functional.shaders.uniform_block.invalid#structure_definition_vertex
-dEQP-GLES31.functional.shaders.uniform_block.valid#member_layout_all_8_times_fragment
-dEQP-GLES31.functional.shaders.uniform_block.valid#member_layout_all_8_times_vertex
-dEQP-GLES31.functional.shaders.uniform_block.valid#member_layout_all_fragment
-dEQP-GLES31.functional.shaders.uniform_block.valid#member_layout_all_vertex
-dEQP-GLES31.functional.shaders.uniform_block.valid#struct_member_layout_all_8_times_fragment
-dEQP-GLES31.functional.shaders.uniform_block.valid#struct_member_layout_all_8_times_vertex
-dEQP-GLES31.functional.shaders.uniform_block.valid#struct_member_layout_all_fragment
-dEQP-GLES31.functional.shaders.uniform_block.valid#struct_member_layout_all_vertex
-dEQP-GLES31.functional.state_query.indexed#blend_equation_advanced_getinteger64i_v
-dEQP-GLES31.functional.state_query.indexed#blend_equation_advanced_getintegeri_v
-dEQP-GLES31.functional.state_query.indexed#blend_equation_getinteger64i_v
-dEQP-GLES31.functional.state_query.indexed#blend_equation_getintegeri_v
-dEQP-GLES31.functional.state_query.integer#max_fragment_uniform_components_getfloat
-dEQP-GLES31.functional.state_query.integer#max_fragment_uniform_components_getinteger
-dEQP-GLES31.functional.state_query.integer#max_fragment_uniform_components_getinteger64
-dEQP-GLES31.functional.state_query.program_pipeline#info_log
-dEQP-GLES31.functional.state_query.texture_level.texture_2d_array#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d_array#internal_format_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d#internal_format_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample_array#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample_array#internal_format_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample#internal_format_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_3d#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_3d#internal_format_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#alpha_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#alpha_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#blue_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#blue_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#compressed_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#depth_float
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#depth_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#depth_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#depth_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#green_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#green_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#height_float
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#height_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#internal_format_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#red_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#red_type_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#samples_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#shared_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#stencil_size_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#width_float
-dEQP-GLES31.functional.state_query.texture_level.texture_buffer#width_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_cube_array#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_cube_array#internal_format_integer
-dEQP-GLES31.functional.state_query.texture_level.texture_cube_map#internal_format_float
-dEQP-GLES31.functional.state_query.texture_level.texture_cube_map#internal_format_integer
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_buffer_getboolean
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_buffer_getintegeri
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_buffer_getintegeri64
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_offset_getboolean
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_offset_getintegeri
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_offset_getintegeri64
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_stride_getboolean
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_stride_getintegeri
-dEQP-GLES31.functional.state_query.vertex_attribute_binding.indexed#vertex_binding_stride_getintegeri64
-dEQP-GLES31.functional.synchronization.in_invocation#ssbo_alias_overwrite
-dEQP-GLES31.functional.tessellation.common_edge#quads_equal_spacing_precise
-dEQP-GLES31.functional.tessellation.common_edge#quads_fractional_even_spacing_precise
-dEQP-GLES31.functional.tessellation.common_edge#quads_fractional_odd_spacing_precise
-dEQP-GLES31.functional.tessellation.common_edge#triangles_equal_spacing_precise
-dEQP-GLES31.functional.tessellation.common_edge#triangles_fractional_even_spacing_precise
-dEQP-GLES31.functional.tessellation.common_edge#triangles_fractional_odd_spacing_precise
-dEQP-GLES31.functional.tessellation.misc_draw#fill_cover_quads_equal_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_cover_quads_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_cover_quads_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_cover_triangles_equal_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_cover_triangles_fractional_even_spacing
-dEQP-GLES31.functional.tessellation.misc_draw#fill_cover_triangles_fractional_odd_spacing
-dEQP-GLES31.functional.tessellation.shader_input_output#barrier
-dEQP-GLES31.functional.tessellation.state_query#is_per_patch
-dEQP-GLES31.functional.tessellation.state_query#max_tess_control_uniform_components
-dEQP-GLES31.functional.tessellation.state_query#max_tess_evaluation_uniform_components
-dEQP-GLES31.functional.tessellation.user_defined_io.negative#per_patch_array_of_structs
-dEQP-GLES31.functional.tessellation.user_defined_io.negative#per_patch_structs_containing_arrays
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_implicit#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_implicit#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_implicit#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_query#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_query#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_query#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_implicit#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_implicit#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_implicit#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_query#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_query#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_query#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_shader_builtin#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_shader_builtin#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_shader_builtin#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_implicit#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query#triangles
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin#isolines
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin#quads
-dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin#triangles
-dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.incomplete#mipmap_incomplete
-dEQP-GLES31.functional.texture.texture_buffer.state_query#texture_buffer_data_store_binding_float
-dEQP-GLES31.functional.texture.texture_buffer.state_query#texture_buffer_data_store_binding_integer
-dEQP-GLES31.functional.texture.texture_buffer.state_query#texture_buffer_offset_float
-dEQP-GLES31.functional.texture.texture_buffer.state_query#texture_buffer_offset_integer
-dEQP-GLES31.functional.texture.texture_buffer.state_query#texture_buffer_size_float
-dEQP-GLES31.functional.texture.texture_buffer.state_query#texture_buffer_size_integer
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8#linear_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8#linear_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8#gather_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8#gather_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8_alpha8#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8_alpha8#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8_alpha8#linear_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8_alpha8#linear_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8_alpha8#gather_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.srgb8_alpha8#gather_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.r16ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.r16ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.r32ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.r32ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.rg16ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.rg16ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.rg32ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.rg32ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgb16ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgb16ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgb32ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgb32ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgba16ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgba16ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgba32ui#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.rgba32ui#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.stencil_index8#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.stencil_index8#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.depth24_stencil8_sample_stencil#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.depth24_stencil8_sample_stencil#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.depth32f_stencil8_sample_stencil#nearest_size_pot
-dEQP-GLES31.functional.texture.border_clamp.formats.depth32f_stencil8_sample_stencil#nearest_size_npot
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_etc2#nearest_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_etc2#nearest_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_etc2#linear_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_etc2#linear_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_etc2#gather_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_etc2#gather_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_punchthrough_alpha1_etc2#nearest_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_punchthrough_alpha1_etc2#nearest_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_punchthrough_alpha1_etc2#linear_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_punchthrough_alpha1_etc2#linear_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_punchthrough_alpha1_etc2#gather_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_punchthrough_alpha1_etc2#gather_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_alpha8_etc2_eac#nearest_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_alpha8_etc2_eac#nearest_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_alpha8_etc2_eac#linear_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_alpha8_etc2_eac#linear_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_alpha8_etc2_eac#gather_size_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.formats.compressed_srgb8_alpha8_etc2_eac#gather_size_not_tile_multiple
-dEQP-GLES31.functional.texture.border_clamp.range_clamp#nearest_int_color
-dEQP-GLES31.functional.texture.border_clamp.range_clamp#nearest_uint_color
-dEQP-GLES31.functional.texture.border_clamp.range_clamp#nearest_uint_stencil
-dEQP-GLES31.functional.texture.border_clamp.range_clamp#nearest_float_depth_uint_stencil_sample_stencil
-dEQP-GLES31.functional.texture.border_clamp.range_clamp#nearest_unorm_depth_uint_stencil_sample_stencil
-dEQP-GLES31.functional.texture.border_clamp.sampler#uint_color
-dEQP-GLES31.functional.texture.border_clamp.sampler#uint_stencil
-dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.uint_stencil.nearest#s_clamp_to_edge_t_clamp_to_border_pot
-dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.uint_stencil.nearest#s_clamp_to_edge_t_clamp_to_border_npot
-dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.uint_stencil.nearest#s_repeat_t_clamp_to_border_pot
-dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.uint_stencil.nearest#s_repeat_t_clamp_to_border_npot
-dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.uint_stencil.nearest#s_mirrored_repeat_t_clamp_to_border_pot
-dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.uint_stencil.nearest#s_mirrored_repeat_t_clamp_to_border_npot
-dEQP-GLES31.functional.texture.border_clamp.unused_channels#stencil_index8
-dEQP-GLES31.functional.texture.border_clamp.unused_channels#depth32f_stencil8_sample_stencil
-dEQP-GLES31.functional.texture.border_clamp.unused_channels#depth24_stencil8_sample_stencil
-dEQP-GLES31.functional.ubo.random.all_per_block_buffers#41
-dEQP-GLES31.functional.uniform_location.negative#atomic_fragment
-dEQP-GLES31.functional.uniform_location.negative#atomic_vertex
-dEQP-GLES31.functional.vertex_attribute_binding.negative#bind_vertex_buffer_large_stride
-dEQP-GLES31.functional.vertex_attribute_binding.negative#bind_vertex_buffer_negative_offset
-dEQP-GLES31.functional.vertex_attribute_binding.negative#bind_vertex_buffer_negative_stride
diff --git a/tests/tests/display/src/android/display/cts/DisplayTest.java b/tests/tests/display/src/android/display/cts/DisplayTest.java
index 112710e..1f9f8d1 100644
--- a/tests/tests/display/src/android/display/cts/DisplayTest.java
+++ b/tests/tests/display/src/android/display/cts/DisplayTest.java
@@ -17,6 +17,7 @@
 package android.display.cts;
 
 import android.app.Presentation;
+import android.app.UiAutomation;
 import android.content.Context;
 import android.graphics.Color;
 import android.graphics.PixelFormat;
@@ -26,17 +27,21 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.test.AndroidTestCase;
+import android.os.ParcelFileDescriptor;
+import android.test.InstrumentationTestCase;
 import android.util.DisplayMetrics;
 import android.view.Display;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowManager;
 
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Scanner;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-public class DisplayTest extends AndroidTestCase {
+public class DisplayTest extends InstrumentationTestCase {
     // The CTS package brings up an overlay display on the target device (see AndroidTest.xml).
     // The overlay display parameters must match the ones defined there which are
     // 181x161/214 (wxh/dpi).  It only matters that these values are different from any real
@@ -54,6 +59,7 @@
 
     private DisplayManager mDisplayManager;
     private WindowManager mWindowManager;
+    private Context mContext;
 
     // To test display mode switches.
     private TestPresentation mPresentation;
@@ -61,10 +67,39 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        mContext = getInstrumentation().getContext();
         mDisplayManager = (DisplayManager)mContext.getSystemService(Context.DISPLAY_SERVICE);
         mWindowManager = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
     }
 
+    private void enableAppOps() {
+        StringBuilder cmd = new StringBuilder();
+        cmd.append("appops set ");
+        cmd.append(getInstrumentation().getContext().getPackageName());
+        cmd.append(" android:system_alert_window allow");
+        getInstrumentation().getUiAutomation().executeShellCommand(cmd.toString());
+
+        StringBuilder query = new StringBuilder();
+        query.append("appops get ");
+        query.append(getInstrumentation().getContext().getPackageName());
+        query.append(" android:system_alert_window");
+        String queryStr = query.toString();
+
+        String result = "No operations.";
+        while (result.contains("No operations")) {
+            ParcelFileDescriptor pfd = getInstrumentation().getUiAutomation().executeShellCommand(
+                    queryStr);
+            InputStream inputStream = new FileInputStream(pfd.getFileDescriptor());
+            result = convertStreamToString(inputStream);
+        }
+    }
+
+    private String convertStreamToString(InputStream is) {
+        try (java.util.Scanner s = new Scanner(is).useDelimiter("\\A")) {
+            return s.hasNext() ? s.next() : "";
+        }
+    }
+
     private boolean isSecondarySize(Display display) {
         final Point p = new Point();
         display.getSize(p);
@@ -209,6 +244,7 @@
      * Tests that mode switch requests are correctly executed.
      */
     public void testModeSwitch() throws Exception {
+        enableAppOps();
         final Display display = getSecondaryDisplay(mDisplayManager.getDisplays());
         Display.Mode[] modes = display.getSupportedModes();
         assertEquals(2, modes.length);
@@ -241,7 +277,7 @@
             @Override
             public void run() {
                 mPresentation = new TestPresentation(
-                        getContext(), display, newMode.getModeId());
+                        getInstrumentation().getContext(), display, newMode.getModeId());
                 mPresentation.show();
                 presentationSignal.countDown();
             }
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java
index f58b871..07e65d2 100644
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapTest.java
@@ -359,8 +359,10 @@
         mBitmap = BitmapFactory.decodeResource(mRes, R.drawable.start, mOptions);
         Bitmap ret = mBitmap.extractAlpha();
         assertNotNull(ret);
-        int color = ret.getPixel(10, 20);
-        assertEquals(0x00, Color.alpha(color));
+        int source = mBitmap.getPixel(10, 20);
+        int result = ret.getPixel(10, 20);
+        assertEquals(Color.alpha(source), Color.alpha(result));
+        assertEquals(0xFF, Color.alpha(result));
     }
 
     public void testExtractAlpha2(){
@@ -377,8 +379,10 @@
         mBitmap = BitmapFactory.decodeResource(mRes, R.drawable.start, mOptions);
         Bitmap ret = mBitmap.extractAlpha(new Paint(), new int[]{0, 1});
         assertNotNull(ret);
-        int color = ret.getPixel(10, 20);
-        assertEquals(0x00, Color.alpha(color));
+        int source = mBitmap.getPixel(10, 20);
+        int result = ret.getPixel(10, 20);
+        assertEquals(Color.alpha(source), Color.alpha(result));
+        assertEquals(0xFF, Color.alpha(result));
     }
 
     public void testGetAllocationByteCount() {
@@ -446,9 +450,22 @@
         }catch(IllegalArgumentException e){
         }
 
-        // normal case
+        // normal case 565
         mBitmap.setPixel(10, 16, 0xFF << 24);
         assertEquals(0xFF << 24, mBitmap.getPixel(10, 16));
+
+        // normal case A_8
+        mBitmap = Bitmap.createBitmap(10, 10, Config.ALPHA_8);
+        mBitmap.setPixel(5, 5, 0xFFFFFFFF);
+        assertEquals(0xFFFFFFFF, mBitmap.getPixel(5, 5));
+        mBitmap.setPixel(5, 5, 0xA8A8A8A8);
+        assertEquals(0xA8A8A8A8, mBitmap.getPixel(5, 5));
+        mBitmap.setPixel(5, 5, 0x00000000);
+        assertEquals(0x00000000, mBitmap.getPixel(5, 5));
+
+        // test reconstructing color channels
+        mBitmap.setPixel(5, 5, 0x1F000000);
+        assertEquals(0x1F1F1F1F, mBitmap.getPixel(5, 5));
     }
 
     public void testGetRowBytes(){
diff --git a/tests/tests/hardware/Android.mk b/tests/tests/hardware/Android.mk
index 9523d87..9c26d8a 100644
--- a/tests/tests/hardware/Android.mk
+++ b/tests/tests/hardware/Android.mk
@@ -34,7 +34,7 @@
     src/android/hardware/cts/SensorIntegrationTests.java \
     src/android/hardware/cts/SensorBatchingTests.java \
     src/android/hardware/cts/SensorTest.java \
-    src/android/hardware/cts/SensorManagerStaticTest.java \
+    src/android/hardware/cts/SensorManagerStaticTest.java
 
 LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil
 
@@ -57,4 +57,4 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-include $(BUILD_CTS_PACKAGE)
\ No newline at end of file
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/hardware/AndroidManifest.xml b/tests/tests/hardware/AndroidManifest.xml
index 1d1e3a8..031b19e 100644
--- a/tests/tests/hardware/AndroidManifest.xml
+++ b/tests/tests/hardware/AndroidManifest.xml
@@ -26,6 +26,7 @@
     <uses-permission android:name="android.permission.BODY_SENSORS" />
     <uses-permission android:name="android.permission.TRANSMIT_IR" />
     <uses-permission android:name="android.permission.REORDER_TASKS" />
+    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
 
     <application>
         <uses-library android:name="android.test.runner" />
@@ -71,8 +72,10 @@
             android:process=":camera2ActivityProcess">
         </activity>
 
-        <activity android:name="android.hardware.input.cts.InputCtsActivity"
-            android:label="InputCtsActivity" />
+        <activity android:name="android.hardware.cts.FingerprintTestActivity"
+            android:label="FingerprintTestActivity">
+        </activity>
+
     </application>
 
     <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
diff --git a/tests/tests/hardware/res/raw/gamepad_press_a.json b/tests/tests/hardware/res/raw/gamepad_press_a.json
deleted file mode 100644
index ff3ca4f..0000000
--- a/tests/tests/hardware/res/raw/gamepad_press_a.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-    "id": 1,
-    "command": "register",
-    "name": "Odie (Test)",
-    "vid": 0x18d1,
-    "pid": 0x2c40,
-    "descriptor": [0x05, 0x01, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x01, 0x05, 0x09, 0x0a, 0x01, 0x00,
-        0x0a, 0x02, 0x00, 0x0a, 0x04, 0x00, 0x0a, 0x05, 0x00, 0x0a, 0x07, 0x00, 0x0a, 0x08, 0x00,
-        0x0a, 0x0e, 0x00, 0x0a, 0x0f, 0x00, 0x0a, 0x0d, 0x00, 0x05, 0x0c, 0x0a, 0x24, 0x02, 0x0a,
-        0x23, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x0b, 0x81, 0x02, 0x75, 0x01, 0x95,
-        0x01, 0x81, 0x03, 0x05, 0x01, 0x75, 0x04, 0x95, 0x01, 0x25, 0x07, 0x46, 0x3b, 0x01, 0x66,
-        0x14, 0x00, 0x09, 0x39, 0x81, 0x42, 0x66, 0x00, 0x00, 0x09, 0x01, 0xa1, 0x00, 0x09, 0x30,
-        0x09, 0x31, 0x09, 0x32, 0x09, 0x35, 0x05, 0x02, 0x09, 0xc5, 0x09, 0xc4, 0x15, 0x00, 0x26,
-        0xff, 0x00, 0x35, 0x00, 0x46, 0xff, 0x00, 0x75, 0x08, 0x95, 0x06, 0x81, 0x02, 0xc0, 0x85,
-        0x02, 0x05, 0x08, 0x0a, 0x01, 0x00, 0x0a, 0x02, 0x00, 0x0a, 0x03, 0x00, 0x0a, 0x04, 0x00,
-        0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x02, 0x75, 0x04, 0x95, 0x01, 0x91,
-        0x03, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x05, 0x01, 0x09, 0x06, 0xa1,
-        0x02, 0x05, 0x06, 0x09, 0x20, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81,
-        0x02, 0x06, 0xbc, 0xff, 0x0a, 0xad, 0xbd, 0x75, 0x08, 0x95, 0x06, 0x81, 0x02, 0xc0, 0xc0],
-    "report": [0x01, 0x00, 0x80, 0x90, 0x80, 0x7f, 0x73, 0x00, 0x00]
-}
-
-{
-    "id": 1,
-    "command": "report",
-    "report": [0x01, 0x01, 0x80, 0x90, 0x80, 0x7f, 0x73, 0x00, 0x00]
-}
-
-{
-    "id": 1,
-    "command": "delay",
-    "duration": 10
-}
-
-{
-    "id": 1,
-    "command": "report",
-    "report": [0x01, 0x00, 0x80, 0x90, 0x80, 0x7f, 0x73, 0x00, 0x00]
-}
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/AllocationTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/AllocationTest.java
index d4fb235..229185d 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/AllocationTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/AllocationTest.java
@@ -728,7 +728,12 @@
                             mCameraIds[i]));
                     continue;
                 }
-
+                if (!staticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, String.format(
+                        "Skipping this test for camera %s, does not support regular outputs",
+                        mCameraIds[i]));
+                    continue;
+                }
                 // Open camera and execute test
                 Log.i(TAG, "Testing Camera " + mCameraIds[i]);
                 try {
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureRawTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureRawTest.java
index 3c9c061..75de9c0 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureRawTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureRawTest.java
@@ -81,14 +81,8 @@
                 Size[] rawSizes = mStaticInfo.getRawOutputSizesChecked();
                 assertTrue("No capture sizes available for RAW format!", rawSizes.length != 0);
 
-                Rect activeArray = mStaticInfo.getActiveArraySizeChecked();
-                Size size = new Size(activeArray.width(), activeArray.height());
-                mCollector.expectTrue("Missing ActiveArraySize",
-                        activeArray.width() > 0 && activeArray.height() > 0);
-                mCollector.expectContains(
-                        "Available sizes for RAW format must include ActiveArraySize",
-                        rawSizes, size);
-
+                // Check happens in getRawDimensChecked.
+                Size rawSize = mStaticInfo.getRawDimensChecked();
             } finally {
                 closeDevice();
             }
@@ -500,8 +494,7 @@
     {
         // capture size
         Size previewSize = mOrderedPreviewSizes.get(0);
-        Rect activeArray = mStaticInfo.getActiveArraySizeChecked();
-        Size rawSize = new Size(activeArray.width(), activeArray.height());
+        Size rawSize = mStaticInfo.getRawDimensChecked();
 
         // builder
         CaptureRequest.Builder previewCaptureBuilder = mCamera.createCaptureRequest(
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureTest.java
index fd8c487..d8fae6d 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/BurstCaptureTest.java
@@ -50,6 +50,9 @@
                 Log.i(TAG, "Testing YUV Burst for camera " + id);
                 openDevice(id);
 
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                }
                 if (!mStaticInfo.isAeLockSupported() || !mStaticInfo.isAwbLockSupported()) {
                     Log.i(TAG, "AE/AWB lock is not supported in camera " + id +
                             ". Skip the test");
@@ -224,7 +227,7 @@
         mSession.setRepeatingRequest(lockedRequest, resultListener, mHandler);
 
         // Wait for first result with locking
-
+        resultListener.drain();
         CaptureResult lockedResult =
                 resultListener.getCaptureResultForRequest(lockedRequest, maxPipelineDepth);
 
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
index 189d3cd..44fda14 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraDeviceTest.java
@@ -34,6 +34,7 @@
 import android.hardware.camera2.CaptureRequest;
 import android.hardware.camera2.CaptureResult;
 import android.hardware.camera2.TotalCaptureResult;
+import android.hardware.camera2.cts.helpers.StaticMetadata;
 import android.hardware.camera2.cts.testcases.Camera2AndroidTestCase;
 import android.hardware.camera2.params.MeteringRectangle;
 import android.media.ImageReader;
@@ -282,6 +283,11 @@
                             sTemplates[j] == CameraDevice.TEMPLATE_VIDEO_SNAPSHOT) {
                         continue;
                     }
+                    // Skip non-PREVIEW templates for non-color output
+                    if (!mStaticInfo.isColorOutputSupported() &&
+                            sTemplates[j] != CameraDevice.TEMPLATE_PREVIEW) {
+                        continue;
+                    }
                     CaptureRequest.Builder capReq = mCamera.createCaptureRequest(sTemplates[j]);
                     assertNotNull("Failed to create capture request", capReq);
                     if (mStaticInfo.areKeysAvailable(CaptureRequest.SENSOR_EXPOSURE_TIME)) {
@@ -405,9 +411,6 @@
      */
     public void testChainedOperation() throws Throwable {
 
-        // Set up single dummy target
-        createDefaultImageReader(DEFAULT_CAPTURE_SIZE, ImageFormat.YUV_420_888, MAX_NUM_IMAGES,
-                /*listener*/ null);
         final ArrayList<Surface> outputs = new ArrayList<>();
         outputs.add(mReaderSurface);
 
@@ -546,6 +549,12 @@
         for (int i = 0; i < mCameraIds.length; i++) {
             Throwable result;
 
+            if (!(new StaticMetadata(mCameraManager.getCameraCharacteristics(mCameraIds[i]))).
+                    isColorOutputSupported()) {
+                Log.i(TAG, "Camera " + mCameraIds[i] + " does not support color outputs, skipping");
+                continue;
+            }
+
             // Start chained cascade
             ChainedCameraListener cameraListener = new ChainedCameraListener();
             mCameraManager.openCamera(mCameraIds[i], cameraListener, mHandler);
@@ -594,6 +603,11 @@
             try {
                 openDevice(mCameraIds[i], mCameraMockListener);
                 waitForDeviceState(STATE_OPENED, CAMERA_OPEN_TIMEOUT_MS);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
 
                 prepareTestByCamera();
             }
@@ -611,6 +625,11 @@
             try {
                 openDevice(mCameraIds[i], mCameraMockListener);
                 waitForDeviceState(STATE_OPENED, CAMERA_OPEN_TIMEOUT_MS);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
 
                 testCreateSessionsByCamera(mCameraIds[i]);
             }
@@ -982,6 +1001,11 @@
                                 sTemplates[j] == CameraDevice.TEMPLATE_VIDEO_SNAPSHOT) {
                             continue;
                         }
+                        // Skip non-PREVIEW templates for non-color output
+                        if (!mStaticInfo.isColorOutputSupported() &&
+                                sTemplates[j] != CameraDevice.TEMPLATE_PREVIEW) {
+                            continue;
+                        }
                         captureSingleShot(mCameraIds[i], sTemplates[j], repeating, abort);
                     }
                 }
@@ -989,13 +1013,16 @@
                     // Test: burst of one shot
                     captureBurstShot(mCameraIds[i], sTemplates, 1, repeating, abort);
 
+                    int template = mStaticInfo.isColorOutputSupported() ?
+                        CameraDevice.TEMPLATE_STILL_CAPTURE :
+                        CameraDevice.TEMPLATE_PREVIEW;
                     int[] templates = new int[] {
-                            CameraDevice.TEMPLATE_STILL_CAPTURE,
-                            CameraDevice.TEMPLATE_STILL_CAPTURE,
-                            CameraDevice.TEMPLATE_STILL_CAPTURE,
-                            CameraDevice.TEMPLATE_STILL_CAPTURE,
-                            CameraDevice.TEMPLATE_STILL_CAPTURE
-                            };
+                        template,
+                        template,
+                        template,
+                        template,
+                        template
+                    };
 
                     // Test: burst of 5 shots of the same template type
                     captureBurstShot(mCameraIds[i], templates, templates.length, repeating, abort);
@@ -1075,6 +1102,11 @@
                     templates[i] == CameraDevice.TEMPLATE_VIDEO_SNAPSHOT) {
                 continue;
             }
+            // Skip non-PREVIEW templates for non-color outpu
+            if (!mStaticInfo.isColorOutputSupported() &&
+                    templates[i] != CameraDevice.TEMPLATE_PREVIEW) {
+                continue;
+            }
             CaptureRequest.Builder requestBuilder = mCamera.createCaptureRequest(templates[i]);
             assertNotNull("Failed to create capture request", requestBuilder);
             requestBuilder.addTarget(mReaderSurface);
@@ -1135,6 +1167,11 @@
         mSessionMockListener = spy(new BlockingSessionCallback());
         mSessionWaiter = mSessionMockListener.getStateWaiter();
 
+        if (!mStaticInfo.isColorOutputSupported()) {
+            createDefaultImageReader(getMaxDepthSize(mCamera.getId(), mCameraManager),
+                    ImageFormat.DEPTH16, MAX_NUM_IMAGES, new ImageDropperListener());
+        }
+
         List<Surface> outputSurfaces = new ArrayList<>(Arrays.asList(mReaderSurface));
         mCamera.createCaptureSession(outputSurfaces, mSessionMockListener, mHandler);
 
@@ -1229,9 +1266,9 @@
 
     private void checkAfMode(CaptureRequest.Builder request, int template,
             CameraCharacteristics props) {
-        boolean hasFocuser = !props.getKeys().contains(CameraCharacteristics.
-                LENS_INFO_MINIMUM_FOCUS_DISTANCE) ||
-                props.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE) > 0f;
+        boolean hasFocuser = props.getKeys().contains(CameraCharacteristics.
+                LENS_INFO_MINIMUM_FOCUS_DISTANCE) &&
+                (props.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE) > 0f);
 
         if (!hasFocuser) {
             return;
@@ -1273,6 +1310,8 @@
             return;
         }
 
+        if (!mStaticInfo.isColorOutputSupported()) return;
+
         List<Integer> availableAntiBandingModes =
                 Arrays.asList(toObject(mStaticInfo.getAeAvailableAntiBandingModesChecked()));
 
@@ -1324,12 +1363,16 @@
         }
 
         // 3A settings--AE/AWB/AF.
-        int maxRegionsAe = props.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AE);
-        int maxRegionsAwb = props.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AWB);
-        int maxRegionsAf = props.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AF);
+        Integer maxRegionsAeVal = props.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AE);
+        int maxRegionsAe = maxRegionsAeVal != null ? maxRegionsAeVal : 0;
+        Integer maxRegionsAwbVal = props.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AWB);
+        int maxRegionsAwb = maxRegionsAwbVal != null ? maxRegionsAwbVal : 0;
+        Integer maxRegionsAfVal = props.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AF);
+        int maxRegionsAf = maxRegionsAfVal != null ? maxRegionsAfVal : 0;
+
+        checkFpsRange(request, template, props);
 
         checkAfMode(request, template, props);
-        checkFpsRange(request, template, props);
         checkAntiBandingMode(request, template);
 
         if (template == CameraDevice.TEMPLATE_MANUAL) {
@@ -1339,45 +1382,47 @@
             mCollector.expectKeyValueEquals(request, CONTROL_AWB_MODE,
                     CaptureRequest.CONTROL_AWB_MODE_OFF);
         } else {
-            mCollector.expectKeyValueEquals(request, CONTROL_AE_MODE,
-                    CaptureRequest.CONTROL_AE_MODE_ON);
-            mCollector.expectKeyValueEquals(request, CONTROL_AE_EXPOSURE_COMPENSATION, 0);
-            mCollector.expectKeyValueEquals(request, CONTROL_AE_PRECAPTURE_TRIGGER,
-                    CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE);
-            // if AE lock is not supported, expect the control key to be non-exist or false
-            if (mStaticInfo.isAeLockSupported() || request.get(CONTROL_AE_LOCK) != null) {
-                mCollector.expectKeyValueEquals(request, CONTROL_AE_LOCK, false);
-            }
+            if (mStaticInfo.isColorOutputSupported()) {
+                mCollector.expectKeyValueEquals(request, CONTROL_AE_MODE,
+                        CaptureRequest.CONTROL_AE_MODE_ON);
+                mCollector.expectKeyValueEquals(request, CONTROL_AE_EXPOSURE_COMPENSATION, 0);
+                mCollector.expectKeyValueEquals(request, CONTROL_AE_PRECAPTURE_TRIGGER,
+                        CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE);
+                // if AE lock is not supported, expect the control key to be non-exist or false
+                if (mStaticInfo.isAeLockSupported() || request.get(CONTROL_AE_LOCK) != null) {
+                    mCollector.expectKeyValueEquals(request, CONTROL_AE_LOCK, false);
+                }
 
-            mCollector.expectKeyValueEquals(request, CONTROL_AF_TRIGGER,
-                    CaptureRequest.CONTROL_AF_TRIGGER_IDLE);
+                mCollector.expectKeyValueEquals(request, CONTROL_AF_TRIGGER,
+                        CaptureRequest.CONTROL_AF_TRIGGER_IDLE);
 
-            mCollector.expectKeyValueEquals(request, CONTROL_AWB_MODE,
-                    CaptureRequest.CONTROL_AWB_MODE_AUTO);
-            // if AWB lock is not supported, expect the control key to be non-exist or false
-            if (mStaticInfo.isAwbLockSupported() || request.get(CONTROL_AWB_LOCK) != null) {
-                mCollector.expectKeyValueEquals(request, CONTROL_AWB_LOCK, false);
-            }
+                mCollector.expectKeyValueEquals(request, CONTROL_AWB_MODE,
+                        CaptureRequest.CONTROL_AWB_MODE_AUTO);
+                // if AWB lock is not supported, expect the control key to be non-exist or false
+                if (mStaticInfo.isAwbLockSupported() || request.get(CONTROL_AWB_LOCK) != null) {
+                    mCollector.expectKeyValueEquals(request, CONTROL_AWB_LOCK, false);
+                }
 
-            // Check 3A regions.
-            if (VERBOSE) {
-                Log.v(TAG, String.format("maxRegions is: {AE: %s, AWB: %s, AF: %s}",
-                        maxRegionsAe, maxRegionsAwb, maxRegionsAf));
-            }
-            if (maxRegionsAe > 0) {
-                mCollector.expectKeyValueNotNull(request, CONTROL_AE_REGIONS);
-                MeteringRectangle[] aeRegions = request.get(CONTROL_AE_REGIONS);
-                checkMeteringRect(aeRegions);
-            }
-            if (maxRegionsAwb > 0) {
-                mCollector.expectKeyValueNotNull(request, CONTROL_AWB_REGIONS);
-                MeteringRectangle[] awbRegions = request.get(CONTROL_AWB_REGIONS);
-                checkMeteringRect(awbRegions);
-            }
-            if (maxRegionsAf > 0) {
-                mCollector.expectKeyValueNotNull(request, CONTROL_AF_REGIONS);
-                MeteringRectangle[] afRegions = request.get(CONTROL_AF_REGIONS);
-                checkMeteringRect(afRegions);
+                // Check 3A regions.
+                if (VERBOSE) {
+                    Log.v(TAG, String.format("maxRegions is: {AE: %s, AWB: %s, AF: %s}",
+                                    maxRegionsAe, maxRegionsAwb, maxRegionsAf));
+                }
+                if (maxRegionsAe > 0) {
+                    mCollector.expectKeyValueNotNull(request, CONTROL_AE_REGIONS);
+                    MeteringRectangle[] aeRegions = request.get(CONTROL_AE_REGIONS);
+                    checkMeteringRect(aeRegions);
+                }
+                if (maxRegionsAwb > 0) {
+                    mCollector.expectKeyValueNotNull(request, CONTROL_AWB_REGIONS);
+                    MeteringRectangle[] awbRegions = request.get(CONTROL_AWB_REGIONS);
+                    checkMeteringRect(awbRegions);
+                }
+                if (maxRegionsAf > 0) {
+                    mCollector.expectKeyValueNotNull(request, CONTROL_AF_REGIONS);
+                    MeteringRectangle[] afRegions = request.get(CONTROL_AF_REGIONS);
+                    checkMeteringRect(afRegions);
+                }
             }
         }
 
@@ -1446,10 +1491,12 @@
         }
 
         // ISP-processing settings.
-        mCollector.expectKeyValueEquals(
-                request, STATISTICS_FACE_DETECT_MODE,
-                CaptureRequest.STATISTICS_FACE_DETECT_MODE_OFF);
-        mCollector.expectKeyValueEquals(request, FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
+        if (mStaticInfo.isColorOutputSupported()) {
+            mCollector.expectKeyValueEquals(
+                    request, STATISTICS_FACE_DETECT_MODE,
+                    CaptureRequest.STATISTICS_FACE_DETECT_MODE_OFF);
+            mCollector.expectKeyValueEquals(request, FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
+        }
 
         List<Integer> availableCaps = mStaticInfo.getAvailableCapabilitiesChecked();
         if (mStaticInfo.areKeysAvailable(STATISTICS_LENS_SHADING_MAP_MODE)) {
@@ -1461,6 +1508,11 @@
             }
         }
 
+        // Edge enhancement and noise reduction modes
+        boolean supportReprocessing =
+                availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING) ||
+                availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_PRIVATE_REPROCESSING);
+
         if (template == CameraDevice.TEMPLATE_STILL_CAPTURE) {
             // Not enforce high quality here, as some devices may not effectively have high quality
             // mode.
@@ -1513,7 +1565,23 @@
                             request, NOISE_REDUCTION_MODE, CaptureRequest.NOISE_REDUCTION_MODE_OFF);
                 }
             }
+        } else if (template == CameraDevice.TEMPLATE_ZERO_SHUTTER_LAG && supportReprocessing) {
+            mCollector.expectKeyValueEquals(request, EDGE_MODE,
+                    CaptureRequest.EDGE_MODE_ZERO_SHUTTER_LAG);
+            mCollector.expectKeyValueEquals(request, NOISE_REDUCTION_MODE,
+                    CaptureRequest.NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG);
+        } else {
+            if (mStaticInfo.areKeysAvailable(EDGE_MODE)) {
+                mCollector.expectKeyValueNotNull(request, EDGE_MODE);
+            }
 
+            if (mStaticInfo.areKeysAvailable(NOISE_REDUCTION_MODE)) {
+                mCollector.expectKeyValueNotNull(request, NOISE_REDUCTION_MODE);
+            }
+        }
+
+        // Tone map and lens shading modes.
+        if (template == CameraDevice.TEMPLATE_STILL_CAPTURE) {
             mCollector.expectEquals("Tonemap mode must be present in request if " +
                             "available tonemap modes are present in metadata, and vice-versa.",
                     mStaticInfo.areKeysAvailable(CameraCharacteristics.
@@ -1540,14 +1608,6 @@
                             STATISTICS_LENS_SHADING_MAP_MODE_ON);
             }
         } else {
-            if (mStaticInfo.areKeysAvailable(EDGE_MODE)) {
-                mCollector.expectKeyValueNotNull(request, EDGE_MODE);
-            }
-
-            if (mStaticInfo.areKeysAvailable(NOISE_REDUCTION_MODE)) {
-                mCollector.expectKeyValueNotNull(request, NOISE_REDUCTION_MODE);
-            }
-
             if (mStaticInfo.areKeysAvailable(TONEMAP_MODE)) {
                 mCollector.expectKeyValueNotEquals(request, TONEMAP_MODE,
                         CaptureRequest.TONEMAP_MODE_CONTRAST_CURVE);
@@ -1595,6 +1655,10 @@
                 } else if (sLegacySkipTemplates.contains(template) &&
                         mStaticInfo.isHardwareLevelLegacy()) {
                     // OK
+                } else if (template != CameraDevice.TEMPLATE_PREVIEW &&
+                        mStaticInfo.isDepthOutputSupported() &&
+                        !mStaticInfo.isColorOutputSupported()) {
+                    // OK, depth-only devices need only support PREVIEW template
                 } else {
                     throw e; // rethrow
                 }
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
index 70e7e68..c5eb27b 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraTestUtils.java
@@ -23,6 +23,7 @@
 import android.graphics.Rect;
 import android.hardware.camera2.CameraAccessException;
 import android.hardware.camera2.CameraCaptureSession;
+import android.hardware.camera2.CameraConstrainedHighSpeedCaptureSession;
 import android.hardware.camera2.CameraDevice;
 import android.hardware.camera2.CameraManager;
 import android.hardware.camera2.CameraCharacteristics;
@@ -49,7 +50,9 @@
 import android.util.Log;
 import android.util.Pair;
 import android.util.Size;
+import android.view.Display;
 import android.view.Surface;
+import android.view.WindowManager;
 
 import com.android.ex.camera2.blocking.BlockingCameraManager;
 import com.android.ex.camera2.blocking.BlockingCameraManager.BlockingOpenException;
@@ -711,7 +714,8 @@
                 session.isReprocessable());
         String sessionType = isHighSpeed ? "High Speed" : "Normal";
         assertTrue("Capture session type must be " + sessionType,
-                session.isConstrainedHighSpeed() == isHighSpeed);
+                isHighSpeed ==
+                CameraConstrainedHighSpeedCaptureSession.class.isAssignableFrom(session.getClass()));
 
         return session;
     }
@@ -813,9 +817,10 @@
 
         ByteBuffer buffer = null;
         // JPEG doesn't have pixelstride and rowstride, treat it as 1D buffer.
-        if (format == ImageFormat.JPEG) {
+        // Same goes for DEPTH_POINT_CLOUD
+        if (format == ImageFormat.JPEG || format == ImageFormat.DEPTH_POINT_CLOUD) {
             buffer = planes[0].getBuffer();
-            assertNotNull("Fail to get jpeg ByteBuffer", buffer);
+            assertNotNull("Fail to get jpeg or depth ByteBuffer", buffer);
             data = new byte[buffer.remaining()];
             buffer.get(data);
             buffer.rewind();
@@ -893,7 +898,9 @@
                 break;
             case ImageFormat.JPEG:
             case ImageFormat.RAW_SENSOR:
-                assertEquals("Jpeg Image should have one plane", 1, planes.length);
+            case ImageFormat.DEPTH16:
+            case ImageFormat.DEPTH_POINT_CLOUD:
+                assertEquals("JPEG/RAW/depth Images should have one plane", 1, planes.length);
                 break;
             default:
                 fail("Unsupported Image Format: " + format);
@@ -1160,6 +1167,16 @@
     }
 
     /**
+     * Get max depth size for a camera device.
+     */
+    static public Size getMaxDepthSize(String cameraId, CameraManager cameraManager)
+            throws CameraAccessException {
+        List<Size> sizes = getSortedSizesForFormat(cameraId, cameraManager, ImageFormat.DEPTH16,
+                /*bound*/ null);
+        return sizes.get(0);
+    }
+
+    /**
      * Get the largest size by area.
      *
      * @param sizes an array of sizes, must have at least 1 element
@@ -1168,7 +1185,7 @@
      *
      * @throws IllegalArgumentException if sizes was null or had 0 elements
      */
-    public static Size getMaxSize(Size[] sizes) {
+    public static Size getMaxSize(Size... sizes) {
         if (sizes == null || sizes.length == 0) {
             throw new IllegalArgumentException("sizes was empty");
         }
@@ -1263,10 +1280,6 @@
 
     /**
      * Validate image based on format and size.
-     * <p>
-     * Only RAW_SENSOR, YUV420_888 and JPEG formats are supported. Calling this
-     * method with other formats will cause a UnsupportedOperationException.
-     * </p>
      *
      * @param image The image to be validated.
      * @param width The image width.
@@ -1274,8 +1287,7 @@
      * @param format The image format.
      * @param filePath The debug dump file path, null if don't want to dump to
      *            file.
-     * @throws UnsupportedOperationException if calling with format other than
-     *             RAW_SENSOR, YUV420_888 or JPEG.
+     * @throws UnsupportedOperationException if calling with an unknown format
      */
     public static void validateImage(Image image, int width, int height, int format,
             String filePath) {
@@ -1302,6 +1314,12 @@
             case ImageFormat.RAW_SENSOR:
                 validateRaw16Data(data, width, height, format, image.getTimestamp(), filePath);
                 break;
+            case ImageFormat.DEPTH16:
+                validateDepth16Data(data, width, height, format, image.getTimestamp(), filePath);
+                break;
+            case ImageFormat.DEPTH_POINT_CLOUD:
+                validateDepthPointCloudData(data, width, height, format, image.getTimestamp(), filePath);
+                break;
             default:
                 throw new UnsupportedOperationException("Unsupported format for validation: "
                         + format);
@@ -1385,7 +1403,7 @@
             long ts, String filePath) {
         if (VERBOSE) Log.v(TAG, "Validating raw data");
         int expectedSize = width * height * ImageFormat.getBitsPerPixel(format) / 8;
-        assertEquals("Yuv data doesn't match", expectedSize, rawData.length);
+        assertEquals("Raw data doesn't match", expectedSize, rawData.length);
 
         // TODO: Can add data validation for test pattern.
 
@@ -1398,6 +1416,41 @@
         return;
     }
 
+    private static void validateDepth16Data(byte[] depthData, int width, int height, int format,
+            long ts, String filePath) {
+
+        if (VERBOSE) Log.v(TAG, "Validating depth16 data");
+        int expectedSize = width * height * ImageFormat.getBitsPerPixel(format) / 8;
+        assertEquals("Depth data doesn't match", expectedSize, depthData.length);
+
+
+        if (DEBUG && filePath != null) {
+            String fileName =
+                    filePath + "/" + width + "x" + height + "_" + ts / 1e6 + ".depth16";
+            dumpFile(fileName, depthData);
+        }
+
+        return;
+
+    }
+
+    private static void validateDepthPointCloudData(byte[] depthData, int width, int height, int format,
+            long ts, String filePath) {
+
+        if (VERBOSE) Log.v(TAG, "Validating depth point cloud data");
+
+        // Can't validate size since it is variable
+
+        if (DEBUG && filePath != null) {
+            String fileName =
+                    filePath + "/" + width + "x" + height + "_" + ts / 1e6 + ".depth_point_cloud";
+            dumpFile(fileName, depthData);
+        }
+
+        return;
+
+    }
+
     public static <T> T getValueNotNull(CaptureResult result, CaptureResult.Key<T> key) {
         if (result == null) {
             throw new IllegalArgumentException("Result must not be null");
@@ -2056,4 +2109,22 @@
             thumbnailQuality = thumbQuality;
         }
     }
+
+    public static Size getPreviewSizeBound(WindowManager windowManager, Size bound) {
+        Display display = windowManager.getDefaultDisplay();
+
+        int width = display.getWidth();
+        int height = display.getHeight();
+
+        if (height > width) {
+            height = width;
+            width = display.getHeight();
+        }
+
+        if (bound.getWidth() <= width &&
+            bound.getHeight() <= height)
+            return bound;
+        else
+            return new Size(width, height);
+    }
 }
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureRequestTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureRequestTest.java
index 3aa1c1f..3e76fbc 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureRequestTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureRequestTest.java
@@ -147,7 +147,8 @@
                 changeExposure(requestBuilder, DEFAULT_EXP_TIME_NS, DEFAULT_SENSITIVITY);
 
                 Size previewSz =
-                        getMaxPreviewSize(mCamera.getId(), mCameraManager, PREVIEW_SIZE_BOUND);
+                        getMaxPreviewSize(mCamera.getId(), mCameraManager,
+                        getPreviewSizeBound(mWindowManager, PREVIEW_SIZE_BOUND));
 
                 startPreview(requestBuilder, previewSz, listener);
                 waitForSettingsApplied(listener, NUM_FRAMES_WAITED_FOR_UNKNOWN_LATENCY);
@@ -207,7 +208,8 @@
                         STATISTICS_LENS_SHADING_MAP_MODE_ON);
 
                 Size previewSz =
-                        getMaxPreviewSize(mCamera.getId(), mCameraManager, PREVIEW_SIZE_BOUND);
+                        getMaxPreviewSize(mCamera.getId(), mCameraManager,
+                        getPreviewSizeBound(mWindowManager, PREVIEW_SIZE_BOUND));
                 List<Integer> lensShadingModes = Arrays.asList(CameraTestUtils.toObject(
                         mStaticInfo.getAvailableLensShadingModesChecked()));
 
@@ -266,13 +268,14 @@
                 // Without manual sensor control, exposure time cannot be verified
                 if (!mStaticInfo.isCapabilitySupported(
                         CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR)) {
-                    return;
+                    continue;
                 }
 
                 int[] modes = mStaticInfo.getAeAvailableAntiBandingModesChecked();
 
                 Size previewSz =
-                        getMaxPreviewSize(mCamera.getId(), mCameraManager, PREVIEW_SIZE_BOUND);
+                        getMaxPreviewSize(mCamera.getId(), mCameraManager,
+                        getPreviewSizeBound(mWindowManager, PREVIEW_SIZE_BOUND));
 
                 for (int mode : modes) {
                     antiBandingTestByMode(previewSz, mode);
@@ -297,6 +300,11 @@
         for (int i = 0; i < mCameraIds.length; i++) {
             try {
                 openDevice(mCameraIds[i]);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
 
                 Size maxPreviewSz = mOrderedPreviewSizes.get(0); // Max preview size.
 
@@ -324,6 +332,11 @@
         for (int i = 0; i < mCameraIds.length; i++) {
             try {
                 openDevice(mCameraIds[i]);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
 
                 SimpleCaptureCallback listener = new SimpleCaptureCallback();
                 CaptureRequest.Builder requestBuilder =
@@ -361,7 +374,11 @@
         for (int i = 0; i < mCameraIds.length; i++) {
             try {
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 faceDetectionTestByCamera();
             } finally {
                 closeDevice();
@@ -476,7 +493,10 @@
         for (String id : mCameraIds) {
             try {
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 awbModeAndLockTestByCamera();
             } finally {
                 closeDevice();
@@ -491,7 +511,10 @@
         for (String id : mCameraIds) {
             try {
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 afModeTestByCamera();
             } finally {
                 closeDevice();
@@ -514,7 +537,10 @@
                     Log.i(TAG, "Camera " + id + " doesn't support any stabilization modes");
                     continue;
                 }
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 stabilizationTestByCamera();
             } finally {
                 closeDevice();
@@ -530,7 +556,10 @@
         for (String id : mCameraIds) {
             try {
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 Size maxPreviewSize = mOrderedPreviewSizes.get(0);
                 digitalZoomTestByCamera(maxPreviewSize);
             } finally {
@@ -547,7 +576,10 @@
         for (String id : mCameraIds) {
             try {
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 digitalZoomPreviewCombinationTestByCamera();
             } finally {
                 closeDevice();
@@ -578,7 +610,10 @@
         for (String id : mCameraIds) {
             try {
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 effectModeTestByCamera();
             } finally {
                 closeDevice();
@@ -1202,7 +1237,9 @@
                 changeExposure(requestBuilder, expTimes[i], sensitivities[j]);
                 mSession.capture(requestBuilder.build(), listener, mHandler);
 
-                CaptureResult result = listener.getCaptureResult(WAIT_FOR_RESULT_TIMEOUT_MS);
+                // make sure timeout is long enough for long exposure time
+                long timeout = WAIT_FOR_RESULT_TIMEOUT_MS + expTimes[i];
+                CaptureResult result = listener.getCaptureResult(timeout);
                 long resultExpTime = getValueNotNull(result, CaptureResult.SENSOR_EXPOSURE_TIME);
                 int resultSensitivity = getValueNotNull(result, CaptureResult.SENSOR_SENSITIVITY);
                 validateExposureTime(expTimes[i], resultExpTime);
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java
index df3f151..b752c07 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java
@@ -97,10 +97,16 @@
         for (String id : mCameraIds) {
             try {
                 openDevice(id);
-                // Create image reader and surface.
-                Size size = mOrderedPreviewSizes.get(0);
-                createDefaultImageReader(size, ImageFormat.YUV_420_888, MAX_NUM_IMAGES,
-                        new ImageDropperListener());
+                if (mStaticInfo.isColorOutputSupported()) {
+                    // Create image reader and surface.
+                    Size size = mOrderedPreviewSizes.get(0);
+                    createDefaultImageReader(size, ImageFormat.YUV_420_888, MAX_NUM_IMAGES,
+                            new ImageDropperListener());
+                } else {
+                    Size size = getMaxDepthSize(id, mCameraManager);
+                    createDefaultImageReader(size, ImageFormat.DEPTH16, MAX_NUM_IMAGES,
+                            new ImageDropperListener());
+                }
 
                 // Configure output streams.
                 List<Surface> outputSurfaces = new ArrayList<Surface>(1);
@@ -158,9 +164,15 @@
                 }
 
                 // Create image reader and surface.
-                Size size = mOrderedPreviewSizes.get(0);
-                createDefaultImageReader(size, ImageFormat.YUV_420_888, MAX_NUM_IMAGES,
-                        new ImageDropperListener());
+                if (mStaticInfo.isColorOutputSupported()) {
+                    Size size = mOrderedPreviewSizes.get(0);
+                    createDefaultImageReader(size, ImageFormat.YUV_420_888, MAX_NUM_IMAGES,
+                            new ImageDropperListener());
+                } else {
+                    Size size = getMaxDepthSize(id, mCameraManager);
+                    createDefaultImageReader(size, ImageFormat.DEPTH16, MAX_NUM_IMAGES,
+                            new ImageDropperListener());
+                }
 
                 // Configure output streams.
                 List<Surface> outputSurfaces = new ArrayList<Surface>(1);
@@ -263,6 +275,10 @@
             SimpleImageReaderListener prevListener = new SimpleImageReaderListener();
             try {
                 openDevice(id);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
 
                 CaptureRequest.Builder previewBuilder =
                         mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
@@ -469,6 +485,8 @@
                 CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT)) {
             waiverKeys.add(CaptureResult.LENS_POSE_ROTATION);
             waiverKeys.add(CaptureResult.LENS_POSE_TRANSLATION);
+            waiverKeys.add(CaptureResult.LENS_INTRINSIC_CALIBRATION);
+            waiverKeys.add(CaptureResult.LENS_RADIAL_DISTORTION);
         }
 
         if (mStaticInfo.getAeMaxRegionsChecked() == 0) {
@@ -539,12 +557,12 @@
             waiverKeys.add(CaptureResult.LENS_FILTER_DENSITY);
         }
 
-        if (mStaticInfo.isHardwareLevelLimited()) {
+        if (mStaticInfo.isHardwareLevelLimited() && mStaticInfo.isColorOutputSupported()) {
             return waiverKeys;
         }
 
         /*
-         * Hardware Level = LEGACY
+         * Hardware Level = LEGACY or no regular output is supported
          */
         waiverKeys.add(CaptureResult.CONTROL_AE_PRECAPTURE_TRIGGER);
         waiverKeys.add(CaptureResult.CONTROL_AE_STATE);
@@ -558,6 +576,30 @@
         waiverKeys.add(CaptureResult.CONTROL_AE_TARGET_FPS_RANGE);
         waiverKeys.add(CaptureResult.CONTROL_AF_TRIGGER);
 
+        if (mStaticInfo.isHardwareLevelLegacy()) {
+            return waiverKeys;
+        }
+
+        /*
+         * Regular output not supported, only depth, waive color-output-related keys
+         */
+        waiverKeys.add(CaptureResult.CONTROL_SCENE_MODE);
+        waiverKeys.add(CaptureResult.CONTROL_EFFECT_MODE);
+        waiverKeys.add(CaptureResult.CONTROL_VIDEO_STABILIZATION_MODE);
+        waiverKeys.add(CaptureResult.SENSOR_TEST_PATTERN_MODE);
+        waiverKeys.add(CaptureResult.NOISE_REDUCTION_MODE);
+        waiverKeys.add(CaptureResult.COLOR_CORRECTION_ABERRATION_MODE);
+        waiverKeys.add(CaptureResult.CONTROL_AE_ANTIBANDING_MODE);
+        waiverKeys.add(CaptureResult.CONTROL_AE_EXPOSURE_COMPENSATION);
+        waiverKeys.add(CaptureResult.CONTROL_AE_LOCK);
+        waiverKeys.add(CaptureResult.CONTROL_AE_MODE);
+        waiverKeys.add(CaptureResult.CONTROL_AF_MODE);
+        waiverKeys.add(CaptureResult.CONTROL_AWB_MODE);
+        waiverKeys.add(CaptureResult.CONTROL_AWB_LOCK);
+        waiverKeys.add(CaptureResult.STATISTICS_FACE_DETECT_MODE);
+        waiverKeys.add(CaptureResult.FLASH_MODE);
+        waiverKeys.add(CaptureResult.SCALER_CROP_REGION);
+
         return waiverKeys;
     }
 
@@ -706,6 +748,8 @@
         resultKeys.add(CaptureResult.LENS_OPTICAL_STABILIZATION_MODE);
         resultKeys.add(CaptureResult.LENS_POSE_ROTATION);
         resultKeys.add(CaptureResult.LENS_POSE_TRANSLATION);
+        resultKeys.add(CaptureResult.LENS_INTRINSIC_CALIBRATION);
+        resultKeys.add(CaptureResult.LENS_RADIAL_DISTORTION);
         resultKeys.add(CaptureResult.LENS_FOCUS_RANGE);
         resultKeys.add(CaptureResult.LENS_STATE);
         resultKeys.add(CaptureResult.NOISE_REDUCTION_MODE);
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ExtendedCameraCharacteristicsTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ExtendedCameraCharacteristicsTest.java
index e8a70f0..80cd288 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ExtendedCameraCharacteristicsTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ExtendedCameraCharacteristicsTest.java
@@ -23,6 +23,7 @@
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CameraCharacteristics.Key;
 import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CaptureRequest;
 import android.hardware.camera2.cts.helpers.CameraErrorCollector;
 import android.hardware.camera2.params.BlackLevelPattern;
 import android.hardware.camera2.params.ColorSpaceTransform;
@@ -63,7 +64,11 @@
     private String[] mIds;
     private CameraErrorCollector mCollector;
 
+    private static final Size FULLHD = new Size(1920, 1080);
+    private static final Size FULLHD_ALT = new Size(1920, 1088);
+    private static final Size HD = new Size(1280, 720);
     private static final Size VGA = new Size(640, 480);
+    private static final Size QVGA = new Size(320, 240);
 
     /*
      * HW Levels short hand
@@ -141,21 +146,119 @@
                     mIds[counter]), config);
             int[] outputFormats = config.getOutputFormats();
 
+            int[] actualCapabilities = c.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
+            assertNotNull("android.request.availableCapabilities must never be null",
+                    actualCapabilities);
+
             // Check required formats exist (JPEG, and YUV_420_888).
+            if (!arrayContains(actualCapabilities, BC)) {
+                Log.i(TAG, "Camera " + mIds[counter] +
+                    ": BACKWARD_COMPATIBLE capability not supported, skipping test");
+                continue;
+            }
+
             assertArrayContains(
                     String.format("No valid YUV_420_888 preview formats found for: ID %s",
                             mIds[counter]), outputFormats, ImageFormat.YUV_420_888);
             assertArrayContains(String.format("No JPEG image format for: ID %s",
                     mIds[counter]), outputFormats, ImageFormat.JPEG);
 
-            Size[] sizes = config.getOutputSizes(ImageFormat.YUV_420_888);
-            CameraTestUtils.assertArrayNotEmpty(sizes,
+            Size[] yuvSizes = config.getOutputSizes(ImageFormat.YUV_420_888);
+            Size[] jpegSizes = config.getOutputSizes(ImageFormat.JPEG);
+            Size[] privateSizes = config.getOutputSizes(ImageFormat.PRIVATE);
+
+            CameraTestUtils.assertArrayNotEmpty(yuvSizes,
                     String.format("No sizes for preview format %x for: ID %s",
                             ImageFormat.YUV_420_888, mIds[counter]));
 
-            assertArrayContains(String.format(
-                            "Required VGA size not found for format %x for: ID %s",
-                            ImageFormat.YUV_420_888, mIds[counter]), sizes, VGA);
+            Rect activeRect = CameraTestUtils.getValueNotNull(
+                    c, CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE);
+            Size activeArraySize = new Size(activeRect.width(), activeRect.height());
+            Integer hwLevel = c.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);
+
+            if (activeArraySize.getWidth() >= FULLHD.getWidth() &&
+                    activeArraySize.getHeight() >= FULLHD.getHeight()) {
+                assertArrayContains(String.format(
+                        "Required FULLHD size not found for format %x for: ID %s",
+                        ImageFormat.JPEG, mIds[counter]), jpegSizes, FULLHD);
+            }
+
+            if (activeArraySize.getWidth() >= HD.getWidth() &&
+                    activeArraySize.getHeight() >= HD.getHeight()) {
+                assertArrayContains(String.format(
+                        "Required HD size not found for format %x for: ID %s",
+                        ImageFormat.JPEG, mIds[counter]), jpegSizes, HD);
+            }
+
+            if (activeArraySize.getWidth() >= VGA.getWidth() &&
+                    activeArraySize.getHeight() >= VGA.getHeight()) {
+                assertArrayContains(String.format(
+                        "Required VGA size not found for format %x for: ID %s",
+                        ImageFormat.JPEG, mIds[counter]), jpegSizes, VGA);
+            }
+
+            if (activeArraySize.getWidth() >= QVGA.getWidth() &&
+                    activeArraySize.getHeight() >= QVGA.getHeight()) {
+                assertArrayContains(String.format(
+                        "Required QVGA size not found for format %x for: ID %s",
+                        ImageFormat.JPEG, mIds[counter]), jpegSizes, QVGA);
+            }
+
+            ArrayList<Size> jpegSizesList = new ArrayList<>(Arrays.asList(jpegSizes));
+            ArrayList<Size> yuvSizesList = new ArrayList<>(Arrays.asList(yuvSizes));
+            ArrayList<Size> privateSizesList = new ArrayList<>(Arrays.asList(privateSizes));
+
+            CamcorderProfile maxVideoProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
+            Size maxVideoSize = new Size(
+                    maxVideoProfile.videoFrameWidth, maxVideoProfile.videoFrameHeight);
+
+            // Handle FullHD special case first
+            if (jpegSizesList.contains(FULLHD)) {
+                if (hwLevel == FULL || (hwLevel == LIMITED &&
+                        maxVideoSize.getWidth() >= FULLHD.getWidth() &&
+                        maxVideoSize.getHeight() >= FULLHD.getHeight())) {
+                    boolean yuvSupportFullHD = yuvSizesList.contains(FULLHD) ||
+                            yuvSizesList.contains(FULLHD_ALT);
+                    boolean privateSupportFullHD = privateSizesList.contains(FULLHD) ||
+                            privateSizesList.contains(FULLHD_ALT);
+                    assertTrue("Full device FullHD YUV size not found", yuvSupportFullHD);
+                    assertTrue("Full device FullHD PRIVATE size not found", privateSupportFullHD);
+                }
+                // remove all FullHD or FullHD_Alt sizes for the remaining of the test
+                jpegSizesList.remove(FULLHD);
+                jpegSizesList.remove(FULLHD_ALT);
+            }
+
+            // Check all sizes other than FullHD
+            if (hwLevel == LIMITED) {
+                // Remove all jpeg sizes larger than max video size
+                ArrayList<Size> toBeRemoved = new ArrayList<>();
+                for (Size size : jpegSizesList) {
+                    if (size.getWidth() >= maxVideoSize.getWidth() &&
+                            size.getHeight() >= maxVideoSize.getHeight()) {
+                        toBeRemoved.add(size);
+                    }
+                }
+                jpegSizesList.removeAll(toBeRemoved);
+            }
+
+            if (hwLevel == FULL || hwLevel == LIMITED) {
+                if (!yuvSizesList.containsAll(jpegSizesList)) {
+                    for (Size s : jpegSizesList) {
+                        if (!yuvSizesList.contains(s)) {
+                            fail("Size " + s + " not found in YUV format");
+                        }
+                    }
+                }
+            }
+
+            if (!privateSizesList.containsAll(yuvSizesList)) {
+                for (Size s : yuvSizesList) {
+                    if (!privateSizesList.contains(s)) {
+                        fail("Size " + s + " not found in PRIVATE format");
+                    }
+                }
+            }
 
             counter++;
         }
@@ -198,75 +301,76 @@
              * for a fact most keys are going to be illegal there so they should never be
              * available.
              *
-             * (TODO: Codegen this)
+             * For LIMITED-level keys, if the level is >= LIMITED, then the capabilities are used to
+             * do the actual checking.
              */
             {
                 //                                           (Key Name)                                     (HW Level)  (Capabilities <Var-Arg>)
-                expectKeyAvailable(c, CameraCharacteristics.COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES     , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_MODES                         , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES          , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES                      , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES          , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE                   , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP                    , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_LOCK_AVAILABLE                       , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES                      , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS                       , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES                   , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES     , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES                     , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AWB_LOCK_AVAILABLE                      , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_MAX_REGIONS_AE                          , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_MAX_REGIONS_AF                          , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.CONTROL_MAX_REGIONS_AWB                         , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES     , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_MODES                         , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_AVAILABLE_ANTIBANDING_MODES          , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES                      , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES          , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_COMPENSATION_RANGE                   , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_COMPENSATION_STEP                    , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AE_LOCK_AVAILABLE                       , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES                      , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS                       , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES                   , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES     , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES                     , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_AWB_LOCK_AVAILABLE                      , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_MAX_REGIONS_AE                          , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_MAX_REGIONS_AF                          , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.CONTROL_MAX_REGIONS_AWB                         , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.EDGE_AVAILABLE_EDGE_MODES                       , FULL     ,   NONE                 );
-                expectKeyAvailable(c, CameraCharacteristics.FLASH_INFO_AVAILABLE                            , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.FLASH_INFO_AVAILABLE                            , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.HOT_PIXEL_AVAILABLE_HOT_PIXEL_MODES             , OPT      ,   RAW                  );
-                expectKeyAvailable(c, CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL                   , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES                  , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.LENS_FACING                                     , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL                   , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.JPEG_AVAILABLE_THUMBNAIL_SIZES                  , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.LENS_FACING                                     , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_AVAILABLE_APERTURES                   , FULL     ,   MANUAL_SENSOR        );
                 expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_AVAILABLE_FILTER_DENSITIES            , FULL     ,   MANUAL_SENSOR        );
-                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS               , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION       , LIMITED  ,   MANUAL_SENSOR        );
+                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS               , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION       , LIMITED  ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_FOCUS_DISTANCE_CALIBRATION            , LIMITED  ,   MANUAL_SENSOR        );
-                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE                   , LIMITED  ,   MANUAL_SENSOR        );
-                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE                , LIMITED  ,   NONE                 );
-                expectKeyAvailable(c, CameraCharacteristics.NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES                  , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_HYPERFOCAL_DISTANCE                   , LIMITED  ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE                , LIMITED  ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES                  , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.REQUEST_MAX_NUM_INPUT_STREAMS                   , OPT      ,   YUV_REPROCESS, OPAQUE_REPROCESS);
                 expectKeyAvailable(c, CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP                 , OPT      ,   CONSTRAINED_HIGH_SPEED);
-                expectKeyAvailable(c, CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_PROC                     , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_PROC_STALLING            , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_RAW                      , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.REQUEST_PARTIAL_RESULT_COUNT                    , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.REQUEST_PIPELINE_MAX_DEPTH                      , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM               , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP                 , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.SCALER_CROPPING_TYPE                            , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.SENSOR_AVAILABLE_TEST_PATTERN_MODES             , LEGACY   ,   NONE                 );
+                expectKeyAvailable(c, CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_PROC                     , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_PROC_STALLING            , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.REQUEST_MAX_NUM_OUTPUT_RAW                      , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.REQUEST_PARTIAL_RESULT_COUNT                    , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.REQUEST_PIPELINE_MAX_DEPTH                      , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM               , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP                 , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SCALER_CROPPING_TYPE                            , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SENSOR_AVAILABLE_TEST_PATTERN_MODES             , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_BLACK_LEVEL_PATTERN                      , FULL     ,   MANUAL_SENSOR, RAW   );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_CALIBRATION_TRANSFORM1                   , OPT      ,   RAW                  );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_COLOR_TRANSFORM1                         , OPT      ,   RAW                  );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_FORWARD_MATRIX1                          , OPT      ,   RAW                  );
-                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE                   , LEGACY   ,   BC, RAW              );
+                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE                   , OPT      ,   BC, RAW              );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_COLOR_FILTER_ARRANGEMENT            , FULL     ,   RAW                  );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE                 , FULL     ,   MANUAL_SENSOR        );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_MAX_FRAME_DURATION                  , FULL     ,   MANUAL_SENSOR        );
-                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE                       , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE                    , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE                       , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_PIXEL_ARRAY_SIZE                    , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE                   , FULL     ,   MANUAL_SENSOR        );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_WHITE_LEVEL                         , OPT      ,   RAW                  );
-                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_TIMESTAMP_SOURCE                    , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SENSOR_INFO_TIMESTAMP_SOURCE                    , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_MAX_ANALOG_SENSITIVITY                   , FULL     ,   MANUAL_SENSOR        );
-                expectKeyAvailable(c, CameraCharacteristics.SENSOR_ORIENTATION                              , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SENSOR_ORIENTATION                              , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.SENSOR_REFERENCE_ILLUMINANT1                    , OPT      ,   RAW                  );
                 expectKeyAvailable(c, CameraCharacteristics.SHADING_AVAILABLE_MODES                         , LIMITED  ,   MANUAL_POSTPROC, RAW );
-                expectKeyAvailable(c, CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES     , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES     , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.STATISTICS_INFO_AVAILABLE_HOT_PIXEL_MAP_MODES   , OPT      ,   RAW                  );
                 expectKeyAvailable(c, CameraCharacteristics.STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES, LIMITED  ,   RAW                  );
-                expectKeyAvailable(c, CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT                  , LEGACY   ,   BC                   );
-                expectKeyAvailable(c, CameraCharacteristics.SYNC_MAX_LATENCY                                , LEGACY   ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.STATISTICS_INFO_MAX_FACE_COUNT                  , OPT      ,   BC                   );
+                expectKeyAvailable(c, CameraCharacteristics.SYNC_MAX_LATENCY                                , OPT      ,   BC                   );
                 expectKeyAvailable(c, CameraCharacteristics.TONEMAP_AVAILABLE_TONE_MAP_MODES                , FULL     ,   MANUAL_POSTPROC      );
                 expectKeyAvailable(c, CameraCharacteristics.TONEMAP_MAX_CURVE_POINTS                        , FULL     ,   MANUAL_POSTPROC      );
 
@@ -383,6 +487,14 @@
             // Check if the burst capability is defined
             boolean haveBurstCapability = arrayContains(actualCapabilities,
                     CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE);
+            boolean haveBC = arrayContains(actualCapabilities,
+                    CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE);
+
+            if(haveBurstCapability && !haveBC) {
+                fail("Must have BACKWARD_COMPATIBLE capability if BURST_CAPTURE capability is defined");
+            }
+
+            if (!haveBC) continue;
 
             StreamConfigurationMap config =
                     c.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
@@ -544,58 +656,83 @@
                     c.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
             Integer maxNumInputStreams =
                     c.get(CameraCharacteristics.REQUEST_MAX_NUM_INPUT_STREAMS);
+            int[] availableEdgeModes = c.get(CameraCharacteristics.EDGE_AVAILABLE_EDGE_MODES);
+            int[] availableNoiseReductionModes = c.get(
+                    CameraCharacteristics.NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES);
 
             int[] inputFormats = configs.getInputFormats();
 
-            assertFalse("Doesn't support reprocessing but report input format: " +
-                    Arrays.toString(inputFormats), !supportYUV && !supportOpaque &&
-                    inputFormats.length > 0);
+            boolean supportZslEdgeMode = false;
+            boolean supportZslNoiseReductionMode = false;
 
-            assertFalse("Doesn't support reprocessing but max number of input stream is " +
-                    maxNumInputStreams, !supportYUV && !supportOpaque &&
-                    maxNumInputStreams != null && maxNumInputStreams != 0);
+            if (availableEdgeModes != null) {
+                supportZslEdgeMode = Arrays.asList(CameraTestUtils.toObject(availableEdgeModes)).
+                        contains(CaptureRequest.EDGE_MODE_ZERO_SHUTTER_LAG);
+            }
+
+            if (availableNoiseReductionModes != null) {
+                supportZslNoiseReductionMode = Arrays.asList(
+                        CameraTestUtils.toObject(availableNoiseReductionModes)).contains(
+                        CaptureRequest.NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG);
+            }
 
             if (supportYUV || supportOpaque) {
-                assertTrue("Support reprocessing but max number of input stream is " +
+                mCollector.expectTrue("Support reprocessing but max number of input stream is " +
                         maxNumInputStreams, maxNumInputStreams != null && maxNumInputStreams > 0);
+                mCollector.expectTrue("Support reprocessing but EDGE_MODE_ZERO_SHUTTER_LAG is " +
+                        "not supported", supportZslEdgeMode);
+                mCollector.expectTrue("Support reprocessing but " +
+                        "NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG is not supported",
+                        supportZslNoiseReductionMode);
 
                 // Verify mandatory input formats are supported
-                assertTrue("YUV_420_888 input must be supported for YUV reprocessing",
+                mCollector.expectTrue("YUV_420_888 input must be supported for YUV reprocessing",
                         !supportYUV || arrayContains(inputFormats, ImageFormat.YUV_420_888));
-                assertTrue("PRIVATE input must be supported for OPAQUE reprocessing",
+                mCollector.expectTrue("PRIVATE input must be supported for OPAQUE reprocessing",
                         !supportOpaque || arrayContains(inputFormats, ImageFormat.PRIVATE));
 
                 // max capture stall must be reported if one of the reprocessing is supported.
                 final int MAX_ALLOWED_STALL_FRAMES = 4;
                 Integer maxCaptureStall = c.get(CameraCharacteristics.REPROCESS_MAX_CAPTURE_STALL);
-                assertTrue("max capture stall must be non-null and no larger than "
+                mCollector.expectTrue("max capture stall must be non-null and no larger than "
                         + MAX_ALLOWED_STALL_FRAMES,
                         maxCaptureStall != null && maxCaptureStall <= MAX_ALLOWED_STALL_FRAMES);
 
                 for (int input : inputFormats) {
                     // Verify mandatory output formats are supported
                     int[] outputFormats = configs.getValidOutputFormatsForInput(input);
-                    assertTrue("YUV_420_888 output must be supported for reprocessing",
+                    mCollector.expectTrue("YUV_420_888 output must be supported for reprocessing",
                             arrayContains(outputFormats, ImageFormat.YUV_420_888));
-                    assertTrue("JPEG output must be supported for reprocessing",
+                    mCollector.expectTrue("JPEG output must be supported for reprocessing",
                             arrayContains(outputFormats, ImageFormat.JPEG));
 
                     // Verify camera can output the reprocess input formats and sizes.
                     Size[] inputSizes = configs.getInputSizes(input);
                     Size[] outputSizes = configs.getOutputSizes(input);
                     Size[] highResOutputSizes = configs.getHighResolutionOutputSizes(input);
-                    assertTrue("no input size supported for format " + input,
+                    mCollector.expectTrue("no input size supported for format " + input,
                             inputSizes.length > 0);
-                    assertTrue("no output size supported for format " + input,
+                    mCollector.expectTrue("no output size supported for format " + input,
                             outputSizes.length > 0);
 
                     for (Size inputSize : inputSizes) {
-                        assertTrue("Camera must be able to output the supported reprocessing " +
-                                "input size",
+                        mCollector.expectTrue("Camera must be able to output the supported " +
+                                "reprocessing input size",
                                 arrayContains(outputSizes, inputSize) ||
                                 arrayContains(highResOutputSizes, inputSize));
                     }
                 }
+            } else {
+                mCollector.expectTrue("Doesn't support reprocessing but report input format: " +
+                        Arrays.toString(inputFormats), inputFormats.length == 0);
+                mCollector.expectTrue("Doesn't support reprocessing but max number of input " +
+                        "stream is " + maxNumInputStreams,
+                        maxNumInputStreams == null || maxNumInputStreams == 0);
+                mCollector.expectTrue("Doesn't support reprocessing but " +
+                        "EDGE_MODE_ZERO_SHUTTER_LAG is supported", !supportZslEdgeMode);
+                mCollector.expectTrue("Doesn't support reprocessing but " +
+                        "NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG is supported",
+                        !supportZslNoiseReductionMode);
             }
         }
     }
@@ -612,31 +749,41 @@
             assertNotNull(String.format("No stream configuration map found for: ID %s",
                             mIds[counter]), config);
 
-            assertTrue("ImageReader must be supported",
+            int[] actualCapabilities = c.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
+            assertNotNull("android.request.availableCapabilities must never be null",
+                    actualCapabilities);
+
+            if (arrayContains(actualCapabilities, BC)) {
+                assertTrue("ImageReader must be supported",
                     config.isOutputSupportedFor(android.media.ImageReader.class));
-            assertTrue("MediaRecorder must be supported",
+                assertTrue("MediaRecorder must be supported",
                     config.isOutputSupportedFor(android.media.MediaRecorder.class));
-            assertTrue("MediaCodec must be supported",
+                assertTrue("MediaCodec must be supported",
                     config.isOutputSupportedFor(android.media.MediaCodec.class));
-            assertTrue("Allocation must be supported",
+                assertTrue("Allocation must be supported",
                     config.isOutputSupportedFor(android.renderscript.Allocation.class));
-            assertTrue("SurfaceHolder must be supported",
+                assertTrue("SurfaceHolder must be supported",
                     config.isOutputSupportedFor(android.view.SurfaceHolder.class));
-            assertTrue("SurfaceTexture must be supported",
+                assertTrue("SurfaceTexture must be supported",
                     config.isOutputSupportedFor(android.graphics.SurfaceTexture.class));
 
-            assertTrue("YUV_420_888 must be supported",
+                assertTrue("YUV_420_888 must be supported",
                     config.isOutputSupportedFor(ImageFormat.YUV_420_888));
-            assertTrue("JPEG must be supported",
+                assertTrue("JPEG must be supported",
                     config.isOutputSupportedFor(ImageFormat.JPEG));
+            } else {
+                assertTrue("YUV_420_88 may not be supported if BACKWARD_COMPATIBLE capability is not listed",
+                    !config.isOutputSupportedFor(ImageFormat.YUV_420_888));
+                assertTrue("JPEG may not be supported if BACKWARD_COMPATIBLE capability is not listed",
+                    !config.isOutputSupportedFor(ImageFormat.JPEG));
+            }
 
             // Legacy YUV formats should not be listed
             assertTrue("NV21 must not be supported",
                     !config.isOutputSupportedFor(ImageFormat.NV21));
 
-            int[] actualCapabilities = c.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);
-            assertNotNull("android.request.availableCapabilities must never be null",
-                    actualCapabilities);
+            // Check RAW
+
             if (arrayContains(actualCapabilities,
                     CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_RAW)) {
                 assertTrue("RAW_SENSOR must be supported if RAW capability is advertised",
@@ -754,49 +901,50 @@
             } // formats
 
             // Cross-check opaque format and sizes
+            if (arrayContains(actualCapabilities, BC)) {
+                SurfaceTexture st = new SurfaceTexture(1);
+                Surface surf = new Surface(st);
 
-            SurfaceTexture st = new SurfaceTexture(1);
-            Surface surf = new Surface(st);
+                Size[] opaqueSizes = CameraTestUtils.getSupportedSizeForClass(SurfaceTexture.class,
+                        mIds[counter], mCameraManager);
+                assertTrue("Opaque format has no sizes listed",
+                        opaqueSizes.length > 0);
+                for (Size size : opaqueSizes) {
+                    long stallDuration = config.getOutputStallDuration(SurfaceTexture.class, size);
+                    assertTrue("Opaque output may not have a non-zero stall duration",
+                            stallDuration == 0);
 
-            Size[] opaqueSizes = CameraTestUtils.getSupportedSizeForClass(SurfaceTexture.class,
-                    mIds[counter], mCameraManager);
-            assertTrue("Opaque format has no sizes listed",
-                    opaqueSizes.length > 0);
-            for (Size size : opaqueSizes) {
-                long stallDuration = config.getOutputStallDuration(SurfaceTexture.class, size);
-                assertTrue("Opaque output may not have a non-zero stall duration",
-                        stallDuration == 0);
+                    long minDuration = config.getOutputMinFrameDuration(SurfaceTexture.class, size);
+                    if (arrayContains(actualCapabilities,
+                                    CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR)) {
+                        assertTrue("MANUAL_SENSOR capability, need positive min frame duration for"
+                                + "opaque format",
+                                minDuration > 0);
+                    } else {
+                        assertTrue("Need non-negative min frame duration for opaque format ",
+                                minDuration >= 0);
+                    }
+                    st.setDefaultBufferSize(size.getWidth(), size.getHeight());
 
-                long minDuration = config.getOutputMinFrameDuration(SurfaceTexture.class, size);
-                if (arrayContains(actualCapabilities,
-                                CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR)) {
-                    assertTrue("MANUAL_SENSOR capability, need positive min frame duration for"
-                            + "opaque format",
-                            minDuration > 0);
-                } else {
-                    assertTrue("Need non-negative min frame duration for opaque format ",
-                            minDuration >= 0);
-                }
-                st.setDefaultBufferSize(size.getWidth(), size.getHeight());
+                    assertTrue(
+                            String.format("isOutputSupportedFor fails for SurfaceTexture config %s",
+                                    size.toString()),
+                            config.isOutputSupportedFor(surf));
 
+                } // opaque sizes
+
+                // Try invalid opaque size, should get rounded
+                Size invalidSize = findInvalidSize(opaqueSizes);
+                st.setDefaultBufferSize(invalidSize.getWidth(), invalidSize.getHeight());
                 assertTrue(
-                    String.format("isOutputSupportedFor fails for SurfaceTexture config %s",
-                            size.toString()),
-                    config.isOutputSupportedFor(surf));
+                        String.format("isOutputSupportedFor fails for SurfaceTexture config %s",
+                                invalidSize.toString()),
+                        config.isOutputSupportedFor(surf));
 
-            } // opaque sizes
+                counter++;
+            }
 
-            // Try invalid opaque size, should get rounded
-            Size invalidSize = findInvalidSize(opaqueSizes);
-            st.setDefaultBufferSize(invalidSize.getWidth(), invalidSize.getHeight());
-            assertTrue(
-                String.format("isOutputSupportedFor fails for SurfaceTexture config %s",
-                        invalidSize.toString()),
-                config.isOutputSupportedFor(surf));
-
-            counter++;
         } // mCharacteristics
-
     }
 
     /**
@@ -918,7 +1066,8 @@
 
         T value = c.get(key);
 
-        if (compareHardwareLevel(actualHwLevel, hwLevel) >= 0) {
+        // For LIMITED-level targeted keys, rely on capability check, not level
+        if ((compareHardwareLevel(actualHwLevel, hwLevel) >= 0) && (hwLevel != LIMITED)) {
             mCollector.expectTrue(
                     String.format("Key (%s) must be in characteristics for this hardware level " +
                             "(required minimal HW level %s, actual HW level %s)",
@@ -932,18 +1081,21 @@
                             toStringHardwareLevel(actualHwLevel)),
                     allKeys.contains(key));
         } else if (arrayContainsAnyOf(actualCapabilities, capabilities)) {
-            mCollector.expectTrue(
+            if (!(hwLevel == LIMITED && compareHardwareLevel(actualHwLevel, hwLevel) < 0)) {
+                // Don't enforce LIMITED-starting keys on LEGACY level, even if cap is defined
+                mCollector.expectTrue(
                     String.format("Key (%s) must be in characteristics for these capabilities " +
                             "(required capabilities %s, actual capabilities %s)",
                             key.getName(), Arrays.toString(capabilities),
                             Arrays.toString(actualCapabilities)),
                     value != null);
-            mCollector.expectTrue(
+                mCollector.expectTrue(
                     String.format("Key (%s) must be in characteristics list of keys for " +
                             "these capabilities (required capabilities %s, actual capabilities %s)",
                             key.getName(), Arrays.toString(capabilities),
                             Arrays.toString(actualCapabilities)),
                     allKeys.contains(key));
+            }
         } else {
             if (actualHwLevel == LEGACY && hwLevel != OPT) {
                 if (value != null || allKeys.contains(key)) {
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
index 8cba6fd..7c80c7d 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageReaderTest.java
@@ -66,8 +66,12 @@
     private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
-    // number of frame (for streaming requests) to be verified.
+    // Number of frame (for streaming requests) to be verified.
     private static final int NUM_FRAME_VERIFIED = 2;
+    // Number of frame (for streaming requests) to be verified with log processing time.
+    private static final int NUM_LONG_PROCESS_TIME_FRAME_VERIFIED = 10;
+    // The time to hold each image for to simulate long processing time.
+    private static final int LONG_PROCESS_TIME_MS = 300;
     // Max number of images can be accessed simultaneously from ImageReader.
     private static final int MAX_NUM_IMAGES = 5;
     // Max difference allowed between YUV and JPEG patches. This tolerance is intentionally very
@@ -104,6 +108,30 @@
         }
     }
 
+    public void testDepth16() throws Exception {
+        for (String id : mCameraIds) {
+            try {
+                Log.i(TAG, "Testing Camera " + id);
+                openDevice(id);
+                bufferFormatTestByCamera(ImageFormat.DEPTH16, /*repeating*/true);
+            } finally {
+                closeDevice(id);
+            }
+        }
+    }
+
+    public void testDepthPointCloud() throws Exception {
+        for (String id : mCameraIds) {
+            try {
+                Log.i(TAG, "Testing Camera " + id);
+                openDevice(id);
+                bufferFormatTestByCamera(ImageFormat.DEPTH_POINT_CLOUD, /*repeating*/true);
+            } finally {
+                closeDevice(id);
+            }
+        }
+    }
+
     public void testJpeg() throws Exception {
         for (String id : mCameraIds) {
             try {
@@ -154,6 +182,30 @@
         }
     }
 
+    public void testLongProcessingRepeatingRaw() throws Exception {
+        for (String id : mCameraIds) {
+            try {
+                Log.v(TAG, "Testing long processing on repeating raw for camera " + id);
+                openDevice(id);
+                bufferFormatLongProcessingTimeTestByCamera(ImageFormat.RAW_SENSOR);
+            } finally {
+                closeDevice(id);
+            }
+        }
+    }
+
+    public void testLongProcessingRepeatingFlexibleYuv() throws Exception {
+        for (String id : mCameraIds) {
+            try {
+                Log.v(TAG, "Testing long processing on repeating YUV for camera " + id);
+                openDevice(id);
+                bufferFormatLongProcessingTimeTestByCamera(ImageFormat.YUV_420_888);
+            } finally {
+                closeDevice(id);
+            }
+        }
+    }
+
     /**
      * Test invalid access of image after an image is closed, further access
      * of the image will get an IllegalStateException. The basic assumption of
@@ -185,7 +237,11 @@
             try {
                 Log.v(TAG, "YUV and JPEG testing for camera " + id);
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 bufferFormatWithYuvTestByCamera(ImageFormat.JPEG);
             } finally {
                 closeDevice(id);
@@ -202,7 +258,11 @@
             try {
                 Log.v(TAG, "YUV and RAW testing for camera " + id);
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 bufferFormatWithYuvTestByCamera(ImageFormat.RAW_SENSOR);
             } finally {
                 closeDevice(id);
@@ -220,6 +280,11 @@
                 Log.v(TAG, "Testing all YUV image resolutions for camera " + id);
                 openDevice(id);
 
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
+
                 // Skip warmup on FULL mode devices.
                 int warmupCaptureNumber = (mStaticInfo.isHardwareLevelLegacy()) ?
                         MAX_NUM_IMAGES - 1 : 0;
@@ -594,7 +659,9 @@
     }
 
     private void invalidAccessTestAfterClose() throws Exception {
-        final int FORMAT = ImageFormat.YUV_420_888;
+        final int FORMAT = mStaticInfo.isColorOutputSupported() ?
+            ImageFormat.YUV_420_888 : ImageFormat.DEPTH16;
+
         Size[] availableSizes = mStaticInfo.getAvailableSizesForFormatChecked(FORMAT,
                 StaticMetadata.StreamDirection.Output);
         Image img = null;
@@ -655,6 +722,94 @@
         }
     }
 
+    private void bufferFormatLongProcessingTimeTestByCamera(int format)
+            throws Exception {
+
+        final int TEST_SENSITIVITY_VALUE = mStaticInfo.getSensitivityClampToRange(204);
+        final long TEST_EXPOSURE_TIME_NS = mStaticInfo.getExposureClampToRange(28000000);
+        final long EXPOSURE_TIME_ERROR_MARGIN_NS = 100000;
+
+        Size[] availableSizes = mStaticInfo.getAvailableSizesForFormatChecked(format,
+                StaticMetadata.StreamDirection.Output);
+
+        // for each resolution, test imageReader:
+        for (Size sz : availableSizes) {
+            Log.v(TAG, "testing size " + sz.toString());
+            try {
+                if (VERBOSE) {
+                    Log.v(TAG, "Testing long processing time: size " + sz.toString() + " format " +
+                            format + " for camera " + mCamera.getId());
+                }
+
+                // Create ImageReader.
+                mListener  = new SimpleImageListener();
+                createDefaultImageReader(sz, format, MAX_NUM_IMAGES, mListener);
+
+                // Setting manual controls
+                List<Surface> outputSurfaces = new ArrayList<Surface>();
+                outputSurfaces.add(mReader.getSurface());
+                CaptureRequest.Builder requestBuilder = prepareCaptureRequestForSurfaces(
+                        outputSurfaces, CameraDevice.TEMPLATE_STILL_CAPTURE);
+
+                requestBuilder.set(
+                        CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_OFF);
+                requestBuilder.set(CaptureRequest.CONTROL_AE_LOCK, true);
+                requestBuilder.set(CaptureRequest.CONTROL_AWB_LOCK, true);
+                requestBuilder.set(CaptureRequest.CONTROL_AE_MODE,
+                        CaptureRequest.CONTROL_AE_MODE_OFF);
+                requestBuilder.set(CaptureRequest.CONTROL_AWB_MODE,
+                        CaptureRequest.CONTROL_AWB_MODE_OFF);
+                requestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, TEST_SENSITIVITY_VALUE);
+                requestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, TEST_EXPOSURE_TIME_NS);
+
+                SimpleCaptureCallback listener = new SimpleCaptureCallback();
+                startCapture(requestBuilder.build(), /*repeating*/true, listener, mHandler);
+
+                for (int i = 0; i < NUM_LONG_PROCESS_TIME_FRAME_VERIFIED; i++) {
+                    mListener.waitForAnyImageAvailable(CAPTURE_WAIT_TIMEOUT_MS);
+
+                    // Verify image.
+                    Image img = mReader.acquireNextImage();
+                    assertNotNull("Unable to acquire next image", img);
+                    CameraTestUtils.validateImage(img, sz.getWidth(), sz.getHeight(), format,
+                            DEBUG_FILE_NAME_BASE);
+
+                    // Verify the exposure time and iso match the requested values.
+                    CaptureResult result = listener.getCaptureResult(CAPTURE_RESULT_TIMEOUT_MS);
+
+                    long exposureTimeDiff = TEST_EXPOSURE_TIME_NS -
+                            getValueNotNull(result, CaptureResult.SENSOR_EXPOSURE_TIME);
+                    int sensitivityDiff = TEST_SENSITIVITY_VALUE -
+                            getValueNotNull(result, CaptureResult.SENSOR_SENSITIVITY);
+
+                    mCollector.expectTrue(
+                            String.format("Long processing frame %d format %d size %s " +
+                                    "exposure time was %d expecting %d.", i, format, sz.toString(),
+                                    getValueNotNull(result, CaptureResult.SENSOR_EXPOSURE_TIME),
+                                    TEST_EXPOSURE_TIME_NS),
+                            exposureTimeDiff < EXPOSURE_TIME_ERROR_MARGIN_NS &&
+                            exposureTimeDiff > 0);
+
+                    mCollector.expectTrue(
+                            String.format("Long processing frame %d format %d size %s " +
+                                    "sensitivity was %d expecting %d.", i, format, sz.toString(),
+                                    getValueNotNull(result, CaptureResult.SENSOR_SENSITIVITY),
+                                    TEST_SENSITIVITY_VALUE),
+                            sensitivityDiff == 0);
+
+
+                    // Sleep to Simulate long porcessing before closing the image.
+                    Thread.sleep(LONG_PROCESS_TIME_MS);
+                    img.close();
+                }
+                // stop capture.
+                stopCapture(/*fast*/false);
+            } finally {
+                closeDefaultImageReader();
+            }
+        }
+    }
+
     /**
      * Validate capture results.
      *
@@ -753,7 +908,7 @@
             if (VERBOSE) Log.v(TAG, "Got the latest image");
             CameraTestUtils.validateImage(img, sz.getWidth(), sz.getHeight(), format,
                     DEBUG_FILE_NAME_BASE);
-            if (VERBOSE) Log.v(TAG, "finish vaildation of image " + numImageVerified);
+            if (VERBOSE) Log.v(TAG, "finish validation of image " + numImageVerified);
             img.close();
             numImageVerified++;
             reTryCount = 0;
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java
index be96aeb..167e637 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ImageWriterTest.java
@@ -93,6 +93,10 @@
             try {
                 Log.i(TAG, "Testing Camera " + id);
                 openDevice(id);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 readerWriterFormatTestByCamera(ImageFormat.YUV_420_888);
             } finally {
                 closeDevice(id);
@@ -124,6 +128,10 @@
             try {
                 Log.i(TAG, "Testing Camera " + id);
                 openDevice(id);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 readerWriterFormatTestByCamera(CAMERA_PRIVATE_FORMAT);
             } finally {
                 closeDevice(id);
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/MultiViewTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/MultiViewTest.java
index 0d0ecb4..dfba587f 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/MultiViewTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/MultiViewTest.java
@@ -47,10 +47,29 @@
 
     public void testTextureViewPreview() throws Exception {
         for (String cameraId : mCameraIds) {
-            openCamera(cameraId);
-            List<TextureView> views = Arrays.asList(mTextureView[0]);
-            textureViewPreview(cameraId, views, /*ImageReader*/null);
-            closeCamera(cameraId);
+            Exception prior = null;
+
+            try {
+                openCamera(cameraId);
+                if (!getStaticInfo(cameraId).isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + cameraId + " does not support color outputs, skipping");
+                    continue;
+                }
+                List<TextureView> views = Arrays.asList(mTextureView[0]);
+                textureViewPreview(cameraId, views, /*ImageReader*/null);
+            } catch (Exception e) {
+                prior = e;
+            } finally {
+                try {
+                    closeCamera(cameraId);
+                } catch (Exception e) {
+                    if (prior != null) {
+                        Log.e(TAG, "Prior exception received: " + prior);
+                    }
+                    prior = e;
+                }
+                if (prior != null) throw prior; // Rethrow last exception.
+            }
         }
     }
 
@@ -63,6 +82,10 @@
 
             try {
                 openCamera(cameraId);
+                if (!getStaticInfo(cameraId).isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + cameraId + " does not support color outputs, skipping");
+                    continue;
+                }
                 Size previewSize = getOrderedPreviewSizes(cameraId).get(0);
                 yuvListener =
                         new ImageVerifierListener(previewSize, ImageFormat.YUV_420_888);
@@ -96,6 +119,10 @@
             Exception prior = null;
             try {
                 openCamera(cameraId);
+                if (!getStaticInfo(cameraId).isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + cameraId + " does not support color outputs, skipping");
+                    continue;
+                }
                 int maxNumStreamsProc =
                         getStaticInfo(cameraId).getMaxNumOutputStreamsProcessedChecked();
                 if (maxNumStreamsProc < 2) {
@@ -128,6 +155,10 @@
 
             try {
                 openCamera(cameraId);
+                if (!getStaticInfo(cameraId).isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + cameraId + " does not support color outputs, skipping");
+                    continue;
+                }
                 Size previewSize = getOrderedPreviewSizes(cameraId).get(0);
                 yuvListener =
                         new ImageVerifierListener(previewSize, ImageFormat.YUV_420_888);
@@ -165,6 +196,11 @@
         try {
             for (int i = 0; i < NUM_CAMERAS_TESTED; i++) {
                 openCamera(mCameraIds[i]);
+                if (!getStaticInfo(mCameraIds[i]).isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 List<TextureView> views = Arrays.asList(mTextureView[i]);
 
                 startTextureViewPreview(mCameraIds[i], views, /*ImageReader*/null);
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/PerformanceTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/PerformanceTest.java
index 8dbceae..f84111a 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/PerformanceTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/PerformanceTest.java
@@ -109,7 +109,9 @@
      * case, there is no way for client to know the exact preview frame
      * arrival time. To approximate this time, a companion YUV420_888 stream is
      * created. The first YUV420_888 Image coming out of the ImageReader is treated
-     * as the first preview arrival time.
+     * as the first preview arrival time.</p>
+     * <p>
+     * For depth-only devices, timing is done with the DEPTH16 format instead.
      * </p>
      */
     public void testCameraLaunch() throws Exception {
@@ -124,7 +126,15 @@
         int counter = 0;
         for (String id : mCameraIds) {
             try {
-                initializeImageReader(id, ImageFormat.YUV_420_888);
+                mStaticInfo = new StaticMetadata(mCameraManager.getCameraCharacteristics(id));
+                if (mStaticInfo.isColorOutputSupported()) {
+                    initializeImageReader(id, ImageFormat.YUV_420_888);
+                } else {
+                    assertTrue("Depth output must be supported if regular output isn't!",
+                            mStaticInfo.isDepthOutputSupported());
+                    initializeImageReader(id, ImageFormat.DEPTH16);
+                }
+
                 SimpleImageListener imageListener = null;
                 long startTimeMs, openTimeMs, configureTimeMs, previewStartedTimeMs;
                 for (int i = 0; i < NUM_TEST_LOOPS; i++) {
@@ -195,8 +205,10 @@
             }
             counter++;
         }
-        mReportLog.printSummary("Camera launch average time for all cameras ",
-                Stat.getAverage(avgCameraLaunchTimes), ResultType.LOWER_BETTER, ResultUnit.MS);
+        if (mCameraIds.length != 0) {
+            mReportLog.printSummary("Camera launch average time for all cameras ",
+                    Stat.getAverage(avgCameraLaunchTimes), ResultType.LOWER_BETTER, ResultUnit.MS);
+        }
     }
 
     /**
@@ -223,6 +235,12 @@
             try {
                 openDevice(id);
 
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
+
+
                 boolean partialsExpected = mStaticInfo.getPartialResultCount() > 1;
                 long startTimeMs;
                 boolean isPartialTimingValid = partialsExpected;
@@ -306,8 +324,10 @@
         }
 
         // Result will not be reported in CTS report if no summary is printed.
-        mReportLog.printSummary("Camera capture result average latency for all cameras ",
-                Stat.getAverage(avgResultTimes), ResultType.LOWER_BETTER, ResultUnit.MS);
+        if (mCameraIds.length != 0) {
+            mReportLog.printSummary("Camera capture result average latency for all cameras ",
+                    Stat.getAverage(avgResultTimes), ResultType.LOWER_BETTER, ResultUnit.MS);
+        }
     }
 
     /**
@@ -656,7 +676,9 @@
 
         CaptureRequest.Builder previewBuilder =
                 mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
-        previewBuilder.addTarget(mPreviewSurface);
+        if (mStaticInfo.isColorOutputSupported()) {
+            previewBuilder.addTarget(mPreviewSurface);
+        }
         previewBuilder.addTarget(mReaderSurface);
         mSession.setRepeatingRequest(previewBuilder.build(), listener, mHandler);
         imageListener.waitForImageAvailable(CameraTestUtils.CAPTURE_IMAGE_TIMEOUT_MS);
@@ -671,7 +693,9 @@
         }
         mSessionListener = new BlockingSessionCallback();
         List<Surface> outputSurfaces = new ArrayList<>();
-        outputSurfaces.add(mPreviewSurface);
+        if (mStaticInfo.isColorOutputSupported()) {
+            outputSurfaces.add(mPreviewSurface);
+        }
         outputSurfaces.add(mReaderSurface);
         mSession = CameraTestUtils.configureCameraSession(mCamera, outputSurfaces,
                 mSessionListener, mHandler);
@@ -683,8 +707,10 @@
      * @param format The format used to create ImageReader instance.
      */
     private void initializeImageReader(String cameraId, int format) throws Exception {
-        mOrderedPreviewSizes = CameraTestUtils.getSupportedPreviewSizes(
-                cameraId, mCameraManager, CameraTestUtils.PREVIEW_SIZE_BOUND);
+        mOrderedPreviewSizes = CameraTestUtils.getSortedSizesForFormat(
+                cameraId, mCameraManager, format,
+                CameraTestUtils.getPreviewSizeBound(mWindowManager,
+                    CameraTestUtils.PREVIEW_SIZE_BOUND));
         Size maxPreviewSize = mOrderedPreviewSizes.get(0);
         createImageReader(maxPreviewSize, format, NUM_MAX_IMAGES, /*listener*/null);
         updatePreviewSurface(maxPreviewSize);
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java
index cd4b731..fd9955a 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/RecordingTest.java
@@ -17,6 +17,7 @@
 import android.graphics.ImageFormat;
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CameraCaptureSession;
+import android.hardware.camera2.CameraConstrainedHighSpeedCaptureSession;
 import android.hardware.camera2.CameraDevice;
 import android.hardware.camera2.CaptureRequest;
 import android.hardware.camera2.CaptureResult;
@@ -108,7 +109,11 @@
                 // Re-use the MediaRecorder object for the same camera device.
                 mMediaRecorder = new MediaRecorder();
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 initSupportedVideoSize(mCameraIds[i]);
 
                 basicRecordingTestByCamera(mCamcorderProfileList);
@@ -173,7 +178,11 @@
                 // Re-use the MediaRecorder object for the same camera device.
                 mMediaRecorder = new MediaRecorder();
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 initSupportedVideoSize(mCameraIds[i]);
 
                 recordingSizeTestByCamera();
@@ -270,7 +279,11 @@
                 // Re-use the MediaRecorder object for the same camera device.
                 mMediaRecorder = new MediaRecorder();
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 initSupportedVideoSize(mCameraIds[i]);
 
                 int minFpsProfileId = -1, minFps = 1000;
@@ -322,7 +335,11 @@
                 // Re-use the MediaRecorder object for the same camera device.
                 mMediaRecorder = new MediaRecorder();
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 if (!mStaticInfo.isHighSpeedVideoSupported()) {
                     continue;
                 }
@@ -525,7 +542,8 @@
             requestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fpsRange);
             requestBuilder.addTarget(mPreviewSurface);
             requestBuilder.addTarget(mRecordingSurface);
-            slowMoRequests = mCamera.createConstrainedHighSpeedRequestList(requestBuilder.build());
+            slowMoRequests = ((CameraConstrainedHighSpeedCaptureSession) mSession).
+                    createHighSpeedRequestList(requestBuilder.build());
         } else {
             CaptureRequest.Builder recordingRequestBuilder =
                     mCamera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
@@ -706,6 +724,12 @@
 
                     openDevice(id);
 
+                    if (!mStaticInfo.isColorOutputSupported()) {
+                        Log.i(TAG, "Camera " + id +
+                                " does not support color outputs, skipping");
+                        continue;
+                    }
+
                     initSupportedVideoSize(id);
 
                     videoSnapshotTestByCamera(burstTest);
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/ReprocessCaptureTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/ReprocessCaptureTest.java
index 6242776..8a60dc2 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/ReprocessCaptureTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/ReprocessCaptureTest.java
@@ -54,7 +54,7 @@
     private static final int CAPTURE_TIMEOUT_MS = 3000;
     private static final int WAIT_FOR_SURFACE_CHANGE_TIMEOUT_MS = 1000;
     private static final int CAPTURE_TEMPLATE = CameraDevice.TEMPLATE_ZERO_SHUTTER_LAG;
-    private static final int PREVIEW_TEMPLATE = CameraDevice.TEMPLATE_PREVIEW;
+    private static final int ZSL_TEMPLATE = CameraDevice.TEMPLATE_ZERO_SHUTTER_LAG;
     private static final int NUM_REPROCESS_TEST_LOOP = 3;
     private static final int NUM_REPROCESS_CAPTURES = 3;
     private static final int NUM_REPROCESS_BURST = 3;
@@ -979,7 +979,6 @@
      *   2. NOISE_REDUCTION_MODE
      *   3. REPROCESS_EFFECTIVE_EXPOSURE_FACTOR (only for YUV reprocess)
      */
-
     private void testReprocessRequestKeys(String cameraId, Size inputSize, int inputFormat,
             Size reprocessOutputSize, int reprocessOutputFormat) throws Exception {
         if (VERBOSE) {
@@ -989,10 +988,13 @@
         }
 
         final Integer[] EDGE_MODES = {CaptureRequest.EDGE_MODE_FAST,
-                CaptureRequest.EDGE_MODE_HIGH_QUALITY, CaptureRequest.EDGE_MODE_OFF};
+                CaptureRequest.EDGE_MODE_HIGH_QUALITY, CaptureRequest.EDGE_MODE_OFF,
+                CaptureRequest.EDGE_MODE_ZERO_SHUTTER_LAG};
         final Integer[] NR_MODES = {CaptureRequest.NOISE_REDUCTION_MODE_HIGH_QUALITY,
-                CaptureRequest.NOISE_REDUCTION_MODE_OFF, CaptureRequest.NOISE_REDUCTION_MODE_FAST};
-        final Float[] EFFECTIVE_EXP_FACTORS = {null, 1.0f, 2.5f};
+                CaptureRequest.NOISE_REDUCTION_MODE_OFF,
+                CaptureRequest.NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG,
+                CaptureRequest.NOISE_REDUCTION_MODE_FAST};
+        final Float[] EFFECTIVE_EXP_FACTORS = {null, 1.0f, 2.5f, 4.0f};
         int numFrames = EDGE_MODES.length;
 
         try {
@@ -1240,7 +1242,7 @@
      * Start preview without a listener.
      */
     private void startPreview(Surface previewSurface) throws Exception {
-        CaptureRequest.Builder builder = mCamera.createCaptureRequest(PREVIEW_TEMPLATE);
+        CaptureRequest.Builder builder = mCamera.createCaptureRequest(ZSL_TEMPLATE);
         builder.addTarget(previewSurface);
         mSession.setRepeatingRequest(builder.build(), null, mHandler);
     }
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
index 4b213fe..34f2d85 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/RobustnessTest.java
@@ -19,11 +19,13 @@
 import static android.hardware.camera2.cts.CameraTestUtils.*;
 import static android.hardware.camera2.cts.RobustnessTest.MaxStreamSizes.*;
 
+import android.content.Context;
 import android.graphics.ImageFormat;
 import android.graphics.SurfaceTexture;
 import android.hardware.camera2.CameraCaptureSession;
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
 import android.hardware.camera2.CaptureRequest;
 import android.hardware.camera2.CaptureResult;
 import android.hardware.camera2.TotalCaptureResult;
@@ -38,7 +40,9 @@
 import android.media.ImageWriter;
 import android.util.Log;
 import android.util.Size;
+import android.view.Display;
 import android.view.Surface;
+import android.view.WindowManager;
 
 import com.android.ex.camera2.blocking.BlockingSessionCallback;
 
@@ -77,10 +81,17 @@
                 Log.i(TAG, "Testing Camera " + id);
                 openDevice(id);
 
+                List<Size> testSizes = null;
+                int format = mStaticInfo.isColorOutputSupported() ?
+                    ImageFormat.YUV_420_888 : ImageFormat.DEPTH16;
+
+                testSizes = CameraTestUtils.getSortedSizesForFormat(id, mCameraManager,
+                        format, null);
+
                 // Find some size not supported by the camera
                 Size weirdSize = new Size(643, 577);
                 int count = 0;
-                while(mOrderedPreviewSizes.contains(weirdSize)) {
+                while(testSizes.contains(weirdSize)) {
                     // Really, they can't all be supported...
                     weirdSize = new Size(weirdSize.getWidth() + 1, weirdSize.getHeight() + 1);
                     count++;
@@ -89,7 +100,7 @@
 
                 // Setup imageReader with invalid dimension
                 ImageReader imageReader = ImageReader.newInstance(weirdSize.getWidth(),
-                        weirdSize.getHeight(), ImageFormat.YUV_420_888, 3);
+                        weirdSize.getHeight(), format, 3);
 
                 // Setup ImageReaderListener
                 SimpleImageReaderListener imageListener = new SimpleImageReaderListener();
@@ -134,7 +145,7 @@
                 Size actualSize = new Size(imageWidth, imageHeight);
 
                 assertTrue("Camera does not contain outputted image resolution " + actualSize,
-                        mOrderedPreviewSizes.contains(actualSize));
+                        testSizes.contains(actualSize));
             } finally {
                 closeDevice(id);
             }
@@ -208,7 +219,7 @@
             openDevice(id);
 
             // Find the concrete max sizes for each format/resolution combination
-            MaxStreamSizes maxSizes = new MaxStreamSizes(mStaticInfo, id);
+            MaxStreamSizes maxSizes = new MaxStreamSizes(mStaticInfo, id, getContext());
 
             String streamConfigurationMapString =
                     mStaticInfo.getCharacteristics().get(
@@ -217,10 +228,12 @@
                 Log.v(TAG, "StreamConfigurationMap: " + streamConfigurationMapString);
             }
 
-            // Always run legacy-level tests
+            // Always run legacy-level tests for color-supporting devices
 
-            for (int[] config : LEGACY_COMBINATIONS) {
-                testOutputCombination(id, config, maxSizes);
+            if (mStaticInfo.isColorOutputSupported()) {
+                for (int[] config : LEGACY_COMBINATIONS) {
+                    testOutputCombination(id, config, maxSizes);
+                }
             }
 
             // Then run higher-level tests if applicable
@@ -229,8 +242,10 @@
 
                 // If not legacy, at least limited, so run limited-level tests
 
-                for (int[] config : LIMITED_COMBINATIONS) {
-                    testOutputCombination(id, config, maxSizes);
+                if (mStaticInfo.isColorOutputSupported()) {
+                    for (int[] config : LIMITED_COMBINATIONS) {
+                        testOutputCombination(id, config, maxSizes);
+                    }
                 }
 
                 // Check for BURST_CAPTURE, FULL and RAW and run those if appropriate
@@ -320,7 +335,7 @@
         for (String id : mCameraIds) {
             CameraCharacteristics cc = mCameraManager.getCameraCharacteristics(id);
             StaticMetadata staticInfo = new StaticMetadata(cc);
-            MaxStreamSizes maxSizes = new MaxStreamSizes(staticInfo, id);
+            MaxStreamSizes maxSizes = new MaxStreamSizes(staticInfo, id, getContext());
 
             // Skip the test for legacy devices.
             if (staticInfo.isHardwareLevelLegacy()) {
@@ -366,6 +381,11 @@
                 if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
                     continue;
                 }
+                // Depth-only devices won't support AE
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
 
                 int[] availableAfModes = mStaticInfo.getCharacteristics().get(
                     CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
@@ -502,6 +522,11 @@
                 if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
                     continue;
                 }
+                // Depth-only devices won't support AE
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
 
                 int[] availableAfModes = mStaticInfo.getCharacteristics().get(
                     CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
@@ -601,6 +626,11 @@
                 if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
                     continue;
                 }
+                // Depth-only devices won't support AE
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
 
                 int[] availableAfModes = mStaticInfo.getCharacteristics().get(
                     CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
@@ -714,6 +744,11 @@
                 if (mStaticInfo.isHardwareLevelLegacy() || !mStaticInfo.hasFocuser()) {
                     continue;
                 }
+                // Depth-only devices won't support AE
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
 
                 int[] availableAfModes = mStaticInfo.getCharacteristics().get(
                     CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES);
@@ -1027,7 +1062,7 @@
         static final int VGA = 3;
         static final int RESOLUTION_COUNT = 4;
 
-        public MaxStreamSizes(StaticMetadata sm, String cameraId) {
+        public MaxStreamSizes(StaticMetadata sm, String cameraId, Context context) {
             Size[] privSizes = sm.getAvailableSizesForFormatChecked(ImageFormat.PRIVATE,
                     StaticMetadata.StreamDirection.Output);
             Size[] yuvSizes = sm.getAvailableSizesForFormatChecked(ImageFormat.YUV_420_888,
@@ -1035,19 +1070,29 @@
             Size[] jpegSizes = sm.getJpegOutputSizesChecked();
             Size[] rawSizes = sm.getRawOutputSizesChecked();
 
+            Size maxPreviewSize = getMaxPreviewSize(context, cameraId);
+
             maxRawSize = (rawSizes.length != 0) ? CameraTestUtils.getMaxSize(rawSizes) : null;
 
-            maxPrivSizes[PREVIEW] = getMaxSize(privSizes, PREVIEW_SIZE_BOUND);
-            maxYuvSizes[PREVIEW]  = getMaxSize(yuvSizes, PREVIEW_SIZE_BOUND);
-            maxJpegSizes[PREVIEW] = getMaxSize(jpegSizes, PREVIEW_SIZE_BOUND);
+            if (sm.isColorOutputSupported()) {
+                maxPrivSizes[PREVIEW] = getMaxSize(privSizes, maxPreviewSize);
+                maxYuvSizes[PREVIEW]  = getMaxSize(yuvSizes, maxPreviewSize);
+                maxJpegSizes[PREVIEW] = getMaxSize(jpegSizes, maxPreviewSize);
 
-            maxPrivSizes[RECORD] = getMaxRecordingSize(cameraId);
-            maxYuvSizes[RECORD]  = getMaxRecordingSize(cameraId);
-            maxJpegSizes[RECORD] = getMaxRecordingSize(cameraId);
+                maxPrivSizes[RECORD] = getMaxRecordingSize(cameraId);
+                maxYuvSizes[RECORD]  = getMaxRecordingSize(cameraId);
+                maxJpegSizes[RECORD] = getMaxRecordingSize(cameraId);
 
-            maxPrivSizes[MAXIMUM] = CameraTestUtils.getMaxSize(privSizes);
-            maxYuvSizes[MAXIMUM] = CameraTestUtils.getMaxSize(yuvSizes);
-            maxJpegSizes[MAXIMUM] = CameraTestUtils.getMaxSize(jpegSizes);
+                maxPrivSizes[MAXIMUM] = CameraTestUtils.getMaxSize(privSizes);
+                maxYuvSizes[MAXIMUM] = CameraTestUtils.getMaxSize(yuvSizes);
+                maxJpegSizes[MAXIMUM] = CameraTestUtils.getMaxSize(jpegSizes);
+
+                // Must always be supported, add unconditionally
+                final Size vgaSize = new Size(640, 480);
+                maxPrivSizes[VGA] = vgaSize;
+                maxYuvSizes[VGA] = vgaSize;
+                maxJpegSizes[VGA] = vgaSize;
+            }
 
             StreamConfigurationMap configs = sm.getCharacteristics().get(
                     CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
@@ -1058,11 +1103,6 @@
             maxInputYuvSize = yuvInputSizes != null ?
                     CameraTestUtils.getMaxSize(yuvInputSizes) : null;
 
-            // Must always be supported, add unconditionally
-            final Size vgaSize = new Size(640, 480);
-            maxPrivSizes[VGA] = vgaSize;
-            maxJpegSizes[VGA] = vgaSize;
-            maxYuvSizes[VGA] = vgaSize;
         }
 
         public final Size[] maxPrivSizes = new Size[RESOLUTION_COUNT];
@@ -1486,4 +1526,35 @@
         return sz;
     }
 
+    private static Size getMaxPreviewSize(Context context, String cameraId) {
+        try {
+            WindowManager windowManager =
+                (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+            Display display = windowManager.getDefaultDisplay();
+
+            int width = display.getWidth();
+            int height = display.getHeight();
+
+            if (height > width) {
+                height = width;
+                width = display.getHeight();
+            }
+
+            CameraManager camMgr =
+                (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
+            List<Size> orderedPreviewSizes = CameraTestUtils.getSupportedPreviewSizes(
+                cameraId, camMgr, PREVIEW_SIZE_BOUND);
+
+            if (orderedPreviewSizes != null) {
+                for (Size size : orderedPreviewSizes) {
+                    if (width >= size.getWidth() &&
+                        height >= size.getHeight())
+                        return size;
+                }
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "getMaxPreviewSize Failed. "+e.toString());
+        }
+        return PREVIEW_SIZE_BOUND;
+    }
 }
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/StaticMetadataTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/StaticMetadataTest.java
index 0bc74b3..4415ecc 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/StaticMetadataTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/StaticMetadataTest.java
@@ -73,8 +73,10 @@
             Size sensorSize = new Size(activeRect.width(), activeRect.height());
             List<Integer> availableCaps = mStaticInfo.getAvailableCapabilitiesChecked();
 
-            mCollector.expectTrue("All device must contains BACKWARD_COMPATIBLE capability",
-                    availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE));
+            mCollector.expectTrue("All devices must contains BACKWARD_COMPATIBLE capability or " +
+                    "DEPTH_OUTPUT capabillity" ,
+                    availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE) ||
+                    availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT) );
 
             if (mStaticInfo.isHardwareLevelFull()) {
                 // Capability advertisement must be right.
@@ -91,18 +93,25 @@
                         mStaticInfo.isPerFrameControlSupported());
             }
 
+            if (mStaticInfo.isHardwareLevelLegacy()) {
+                mCollector.expectTrue("Legacy devices must contain BACKWARD_COMPATIBLE capability",
+                        availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE));
+            }
+
             if (availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR)) {
                 mCollector.expectTrue("MANUAL_SENSOR capability always requires " +
                         "READ_SENSOR_SETTINGS capability as well",
                         availableCaps.contains(REQUEST_AVAILABLE_CAPABILITIES_READ_SENSOR_SETTINGS));
             }
 
-            // Max jpeg resolution must be very close to  sensor resolution
-            Size[] jpegSizes = mStaticInfo.getJpegOutputSizesChecked();
-            Size maxJpegSize = CameraTestUtils.getMaxSize(jpegSizes);
-            mCollector.expectSizesAreSimilar(
+            if (mStaticInfo.isColorOutputSupported()) {
+                // Max jpeg resolution must be very close to  sensor resolution
+                Size[] jpegSizes = mStaticInfo.getJpegOutputSizesChecked();
+                Size maxJpegSize = CameraTestUtils.getMaxSize(jpegSizes);
+                mCollector.expectSizesAreSimilar(
                     "Active array size and max JPEG size should be similar",
                     sensorSize, maxJpegSize, SIZE_ERROR_MARGIN);
+            }
 
             // TODO: test all the keys mandatory for all capability devices.
         }
@@ -127,9 +136,9 @@
                 mCollector.expectTrue("max number of processed (non-stalling) output streams" +
                         "must be >= 3 for FULL device",
                         maxNumStreamsProc >= 3);
-            } else {
+            } else if (mStaticInfo.isColorOutputSupported()) {
                 mCollector.expectTrue("max number of processed (non-stalling) output streams" +
-                        "must be >= 2 for LIMITED device",
+                        "must be >= 2 for devices that support color output",
                         maxNumStreamsProc >= 2);
             }
         }
@@ -319,7 +328,7 @@
                 Boolean contrastCurveModeSupported = false;
                 Boolean gammaAndPresetModeSupported = false;
                 Boolean offColorAberrationModeSupported = false;
-                if (mStaticInfo.isHardwareLevelLimitedOrBetter()) {
+                if (mStaticInfo.isHardwareLevelLimitedOrBetter() && mStaticInfo.isColorOutputSupported()) {
                     int[] tonemapModes = mStaticInfo.getAvailableToneMapModesChecked();
                     List<Integer> modeList = (tonemapModes.length == 0) ?
                             new ArrayList<Integer>() :
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/StillCaptureTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/StillCaptureTest.java
index d8dda8f..5e931fe 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/StillCaptureTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/StillCaptureTest.java
@@ -83,7 +83,11 @@
             try {
                 Log.i(TAG, "Testing JPEG exif for Camera " + mCameraIds[i]);
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 jpegExifTestByCamera();
             } finally {
                 closeDevice();
@@ -107,7 +111,10 @@
             try {
                 Log.i(TAG, "Testing basic take picture for Camera " + id);
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 takePictureTestByCamera(/*aeRegions*/null, /*awbRegions*/null, /*afRegions*/null);
             } finally {
                 closeDevice();
@@ -185,7 +192,11 @@
                 if (!(mStaticInfo.hasFocuser() && maxAfRegions > 0)) {
                     continue;
                 }
-
+                // TODO: Relax test to use non-SurfaceView output for depth cases
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 touchForFocusTestByCamera();
             } finally {
                 closeDevice();
@@ -206,7 +217,10 @@
             try {
                 Log.i(TAG, "Testing Still preview capture combination for Camera " + id);
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 previewStillCombinationTestByCamera();
             } finally {
                 closeDevice();
@@ -235,7 +249,10 @@
                     Log.i(TAG, "Skipping test on legacy devices");
                     continue;
                 }
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 aeCompensationTestByCamera();
             } finally {
                 closeDevice();
@@ -327,6 +344,10 @@
             try {
                 Log.i(TAG, "Testing preview persistence for Camera " + id);
                 openDevice(id);
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 previewPersistenceTestByCamera();
             } finally {
                 closeDevice();
@@ -346,7 +367,10 @@
                     Log.i(TAG, "Skipping AE precapture trigger cancel test on legacy devices");
                     continue;
                 }
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 takePictureTestByCamera(/*aeRegions*/null, /*awbRegions*/null, /*afRegions*/null,
                         /*addAeTriggerCancel*/true);
             } finally {
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java
index da9b0ce..06daa51 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java
@@ -77,7 +77,11 @@
             try {
                 Log.i(TAG, "Testing preview for Camera " + mCameraIds[i]);
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 previewTestByCamera();
             } finally {
                 closeDevice();
@@ -97,7 +101,11 @@
             try {
                 Log.i(TAG, "Testing preview for Camera " + mCameraIds[i]);
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 previewTestPatternTestByCamera();
             } finally {
                 closeDevice();
@@ -113,7 +121,10 @@
         for (String id : mCameraIds) {
             try {
                 openDevice(id);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + id + " does not support color outputs, skipping");
+                    continue;
+                }
                 previewFpsRangeTestByCamera();
             } finally {
                 closeDevice();
@@ -134,7 +145,11 @@
         for (int i = 0; i < mCameraIds.length; i++) {
             try {
                 openDevice(mCameraIds[i]);
-
+                if (!mStaticInfo.isColorOutputSupported()) {
+                    Log.i(TAG, "Camera " + mCameraIds[i] +
+                            " does not support color outputs, skipping");
+                    continue;
+                }
                 preparePerformanceTestByCamera(mCameraIds[i]);
             }
             finally {
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java b/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java
index e097c18..4310b3a 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/helpers/StaticMetadata.java
@@ -437,7 +437,7 @@
      * @return AE max regions supported by the camera device
      */
     public int getAeMaxRegionsChecked() {
-        Integer regionCount = getValueFromKeyNonNull(CameraCharacteristics.CONTROL_MAX_REGIONS_AE);
+        Integer regionCount = mCharacteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AE);
         if (regionCount == null) {
             return 0;
         }
@@ -450,7 +450,7 @@
      * @return AWB max regions supported by the camera device
      */
     public int getAwbMaxRegionsChecked() {
-        Integer regionCount = getValueFromKeyNonNull(CameraCharacteristics.CONTROL_MAX_REGIONS_AWB);
+        Integer regionCount = mCharacteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AWB);
         if (regionCount == null) {
             return 0;
         }
@@ -463,7 +463,7 @@
      * @return AF max regions supported by the camera device
      */
     public int getAfMaxRegionsChecked() {
-        Integer regionCount = getValueFromKeyNonNull(CameraCharacteristics.CONTROL_MAX_REGIONS_AF);
+        Integer regionCount = mCharacteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AF);
         if (regionCount == null) {
             return 0;
         }
@@ -2190,6 +2190,23 @@
     }
 
     /**
+     * Check if depth output is supported, based on the depth capability
+     */
+    public boolean isDepthOutputSupported() {
+        return isCapabilitySupported(
+                CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT);
+    }
+
+    /**
+     * Check if standard outputs (PRIVATE, YUV, JPEG) outputs are supported, based on the
+     * backwards-compatible capability
+     */
+    public boolean isColorOutputSupported() {
+        return isCapabilitySupported(
+                CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE);
+    }
+
+    /**
      * Get the value in index for a fixed-size array from a given key.
      *
      * <p>If the camera device is incorrectly reporting values, log a warning and return
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2AndroidTestCase.java b/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2AndroidTestCase.java
index 78370b3..0108ee6 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2AndroidTestCase.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2AndroidTestCase.java
@@ -41,6 +41,7 @@
 import android.test.AndroidTestCase;
 import android.util.Log;
 import android.view.Surface;
+import android.view.WindowManager;
 
 import com.android.ex.camera2.blocking.BlockingSessionCallback;
 import com.android.ex.camera2.blocking.BlockingStateCallback;
@@ -75,11 +76,14 @@
     protected List<Size> mOrderedVideoSizes; // In descending order.
     protected List<Size> mOrderedStillSizes; // In descending order.
 
+    protected WindowManager mWindowManager;
+
     @Override
     public void setContext(Context context) {
         super.setContext(context);
         mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
         assertNotNull("Can't connect to camera manager!", mCameraManager);
+        mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
     }
 
     /**
@@ -188,10 +192,13 @@
         mCollector.setCameraId(cameraId);
         mStaticInfo = new StaticMetadata(mCameraManager.getCameraCharacteristics(cameraId),
                 CheckLevel.ASSERT, /*collector*/null);
-        mOrderedPreviewSizes = getSupportedPreviewSizes(
-                cameraId, mCameraManager, PREVIEW_SIZE_BOUND);
-        mOrderedVideoSizes = getSupportedVideoSizes(cameraId, mCameraManager, PREVIEW_SIZE_BOUND);
-        mOrderedStillSizes = getSupportedStillSizes(cameraId, mCameraManager, null);
+        if (mStaticInfo.isColorOutputSupported()) {
+            mOrderedPreviewSizes = getSupportedPreviewSizes(
+                    cameraId, mCameraManager,
+                    getPreviewSizeBound(mWindowManager, PREVIEW_SIZE_BOUND));
+            mOrderedVideoSizes = getSupportedVideoSizes(cameraId, mCameraManager, PREVIEW_SIZE_BOUND);
+            mOrderedStillSizes = getSupportedStillSizes(cameraId, mCameraManager, null);
+        }
 
         if (VERBOSE) {
             Log.v(TAG, "Camera " + cameraId + " is opened");
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2MultiViewTestCase.java b/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2MultiViewTestCase.java
index 03e9647..39bf0a5 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2MultiViewTestCase.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2MultiViewTestCase.java
@@ -43,6 +43,7 @@
 import android.util.Size;
 import android.view.Surface;
 import android.view.TextureView;
+import android.view.WindowManager;
 
 import com.android.ex.camera2.blocking.BlockingCameraManager;
 import com.android.ex.camera2.blocking.BlockingSessionCallback;
@@ -76,6 +77,8 @@
     private CameraHolder[] mCameraHolders;
     private HashMap<String, Integer> mCameraIdMap;
 
+    protected WindowManager mWindowManager;
+
     public Camera2MultiViewTestCase() {
         super(Camera2MultiViewCtsActivity.class);
     }
@@ -104,6 +107,7 @@
             mCameraHolders[i] = new CameraHolder(mCameraIds[i]);
             mCameraIdMap.put(mCameraIds[i], i);
         }
+        mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
     }
 
     @Override
@@ -358,8 +362,11 @@
                     mCameraId, mCameraListener, mHandler);
             mStaticInfo = new StaticMetadata(mCameraManager.getCameraCharacteristics(mCameraId),
                     CheckLevel.ASSERT, /*collector*/null);
-            mOrderedPreviewSizes = getSupportedPreviewSizes(
-                    mCameraId, mCameraManager, PREVIEW_SIZE_BOUND);
+            if (mStaticInfo.isColorOutputSupported()) {
+                mOrderedPreviewSizes = getSupportedPreviewSizes(
+                        mCameraId, mCameraManager,
+                        getPreviewSizeBound(mWindowManager, PREVIEW_SIZE_BOUND));
+            }
             assertNotNull(String.format("Failed to open camera device ID: %s", mCameraId), mCamera);
         }
 
@@ -409,4 +416,3 @@
         }
     }
 }
-
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2SurfaceViewTestCase.java b/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2SurfaceViewTestCase.java
index 3ca696b..7330a4c 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2SurfaceViewTestCase.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/testcases/Camera2SurfaceViewTestCase.java
@@ -29,6 +29,7 @@
 import android.util.Log;
 import android.view.Surface;
 import android.view.SurfaceHolder;
+import android.view.WindowManager;
 import android.content.Context;
 import android.graphics.ImageFormat;
 import android.hardware.camera2.CameraAccessException;
@@ -102,6 +103,7 @@
     protected List<Size> mOrderedStillSizes; // In descending order.
     protected HashMap<Size, Long> mMinPreviewFrameDurationMap;
 
+    protected WindowManager mWindowManager;
 
     public Camera2SurfaceViewTestCase() {
         super(Camera2SurfaceViewCtsActivity.class);
@@ -131,6 +133,8 @@
         mHandler = new Handler(mHandlerThread.getLooper());
         mCameraListener = new BlockingStateCallback();
         mCollector = new CameraErrorCollector();
+
+        mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
     }
 
     @Override
@@ -559,13 +563,16 @@
         mCollector.setCameraId(cameraId);
         mStaticInfo = new StaticMetadata(mCameraManager.getCameraCharacteristics(cameraId),
                 CheckLevel.ASSERT, /*collector*/null);
-        mOrderedPreviewSizes = getSupportedPreviewSizes(cameraId, mCameraManager, PREVIEW_SIZE_BOUND);
-        mOrderedVideoSizes = getSupportedVideoSizes(cameraId, mCameraManager, PREVIEW_SIZE_BOUND);
-        mOrderedStillSizes = getSupportedStillSizes(cameraId, mCameraManager, null);
-        // Use ImageFormat.YUV_420_888 for now. TODO: need figure out what's format for preview
-        // in public API side.
-        mMinPreviewFrameDurationMap =
+        if (mStaticInfo.isColorOutputSupported()) {
+            mOrderedPreviewSizes = getSupportedPreviewSizes(cameraId, mCameraManager,
+                    getPreviewSizeBound(mWindowManager, PREVIEW_SIZE_BOUND));
+            mOrderedVideoSizes = getSupportedVideoSizes(cameraId, mCameraManager, PREVIEW_SIZE_BOUND);
+            mOrderedStillSizes = getSupportedStillSizes(cameraId, mCameraManager, null);
+            // Use ImageFormat.YUV_420_888 for now. TODO: need figure out what's format for preview
+            // in public API side.
+            mMinPreviewFrameDurationMap =
                 mStaticInfo.getAvailableMinFrameDurationsForFormatChecked(ImageFormat.YUV_420_888);
+        }
     }
 
     /**
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
index d8f8a1d..380e47d 100755
--- a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
@@ -497,7 +497,7 @@
      * TODO: This should be made stricter once SurfaceTexture timestamps are generated by the drivers.
      */
     @UiThreadTest
-    @TimeoutReq(minutes = 20)
+    @TimeoutReq(minutes = 30)
     public void testCameraToSurfaceTextureMetadata() throws Exception {
         runForAllCameras(testCameraToSurfaceTextureMetadataByCamera);
     }
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index ec9caaf..6869ed1 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -45,6 +45,7 @@
 import android.util.Log;
 import android.view.SurfaceHolder;
 
+import com.android.cts.util.TimeoutReq;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -65,7 +66,7 @@
  */
 @LargeTest
 public class CameraTest extends ActivityInstrumentationTestCase2<CameraCtsActivity> {
-    private static String TAG = "CameraTest";
+    private static final String TAG = "CameraTest";
     private static final String PACKAGE = "com.android.cts.hardware";
     private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
     private final String JPEG_PATH = Environment.getExternalStorageDirectory().getPath() +
@@ -861,15 +862,16 @@
     }
 
     private void testJpegExifByCamera(boolean recording) throws Exception {
-        Camera.Parameters parameters = mCamera.getParameters();
         if (!recording) mCamera.startPreview();
-        double focalLength = parameters.getFocalLength();
         Date date = new Date(System.currentTimeMillis());
         String localDatetime = new SimpleDateFormat("yyyy:MM:dd HH:").format(date);
 
         mCamera.takePicture(mShutterCallback, mRawPictureCallback, mJpegPictureCallback);
         waitForSnapshotDone();
 
+        Camera.Parameters parameters = mCamera.getParameters();
+        double focalLength = parameters.getFocalLength();
+
         // Test various exif tags.
         ExifInterface exif = new ExifInterface(JPEG_PATH);
         StringBuffer failedCause = new StringBuffer("Jpeg exif test failed:\n");
@@ -1769,6 +1771,7 @@
     }
 
     @UiThreadTest
+    @TimeoutReq(minutes = 30)
     public void testPreviewPictureSizesCombination() throws Exception {
         int nCameras = Camera.getNumberOfCameras();
         for (int id = 0; id < nCameras; id++) {
diff --git a/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
index 0a0607d..68efef0 100755
--- a/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
@@ -92,17 +92,20 @@
                 lessThanDpi(density, DENSITY_MEDIUM, screenSize, SCREENLAYOUT_SIZE_LARGE) ||
                 lessThanDpi(density, DENSITY_LOW, screenSize, SCREENLAYOUT_SIZE_XLARGE)) {
 
-            assertFalse("Device is not expected to be 64-bit", supports64Bit);
-            assertMinMemoryMb(424);
-        } else if (greaterThanDpi(density, DENSITY_XHIGH, screenSize,
+            if (supports64Bit) {
+                assertMinMemoryMb(704);
+            } else {
+                assertMinMemoryMb(424);
+            }
+        } else if (greaterThanDpi(density, DENSITY_560, screenSize,
                 SCREENLAYOUT_SIZE_NORMAL, SCREENLAYOUT_SIZE_SMALL) ||
-                greaterThanDpi(density, DENSITY_TV, screenSize, SCREENLAYOUT_SIZE_LARGE) ||
-                greaterThanDpi(density, DENSITY_MEDIUM, screenSize, SCREENLAYOUT_SIZE_XLARGE)) {
+                greaterThanDpi(density, DENSITY_400, screenSize, SCREENLAYOUT_SIZE_LARGE) ||
+                greaterThanDpi(density, DENSITY_XHIGH, screenSize, SCREENLAYOUT_SIZE_XLARGE)) {
 
             if (supports64Bit) {
-                assertMinMemoryMb(832);
+                assertMinMemoryMb(1824);
             } else {
-                assertMinMemoryMb(512);
+                assertMinMemoryMb(1344);
             }
         } else if (greaterThanDpi(density, DENSITY_400, screenSize,
                 SCREENLAYOUT_SIZE_NORMAL, SCREENLAYOUT_SIZE_SMALL) ||
@@ -114,15 +117,15 @@
             } else {
                 assertMinMemoryMb(896);
             }
-        } else if (greaterThanDpi(density, DENSITY_560, screenSize,
+        } else if (greaterThanDpi(density, DENSITY_XHIGH, screenSize,
                 SCREENLAYOUT_SIZE_NORMAL, SCREENLAYOUT_SIZE_SMALL) ||
-                greaterThanDpi(density, DENSITY_400, screenSize, SCREENLAYOUT_SIZE_LARGE) ||
-                greaterThanDpi(density, DENSITY_XHIGH, screenSize, SCREENLAYOUT_SIZE_XLARGE)) {
+                greaterThanDpi(density, DENSITY_TV, screenSize, SCREENLAYOUT_SIZE_LARGE) ||
+                greaterThanDpi(density, DENSITY_MEDIUM, screenSize, SCREENLAYOUT_SIZE_XLARGE)) {
 
             if (supports64Bit) {
-                assertMinMemoryMb(1824);
+                assertMinMemoryMb(832);
             } else {
-                assertMinMemoryMb(1344);
+                assertMinMemoryMb(512);
             }
         }
     }
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorBatchingTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorBatchingTests.java
index 7640cd7..7f7d4eb 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorBatchingTests.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorBatchingTests.java
@@ -18,6 +18,7 @@
 
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
+import android.hardware.cts.helpers.SensorCtsHelper;
 import android.hardware.cts.helpers.SensorStats;
 import android.hardware.cts.helpers.TestSensorEnvironment;
 import android.hardware.cts.helpers.sensoroperations.TestSensorOperation;
@@ -287,6 +288,7 @@
             TestSensorEnvironment environment,
             TestSensorOperation operation,
             boolean flushExpected) throws Throwable {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         operation.addDefaultVerifications();
 
         try {
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
index 8c3fb7a..9bf1fd6 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
@@ -18,6 +18,7 @@
 import android.content.Context;
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
+import android.hardware.cts.helpers.SensorCtsHelper;
 import android.hardware.cts.helpers.TestSensorEnvironment;
 import android.hardware.cts.helpers.sensoroperations.ParallelSensorOperation;
 import android.hardware.cts.helpers.sensoroperations.RepeatingSensorOperation;
@@ -62,6 +63,7 @@
      * of several clients can lead to the failing state.
      */
     public void testSensorsWithSeveralClients() throws Throwable {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         final int ITERATIONS = 50;
         final int MAX_REPORTING_LATENCY_US = (int) TimeUnit.SECONDS.toMicros(5);
         final Context context = getContext();
@@ -121,6 +123,7 @@
      * of several clients can lead to the failing state.
      */
     public void testSensorsMovingRates() throws Throwable {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         // use at least two instances to ensure more than one client of any given sensor is in play
         final int INSTANCES_TO_USE = 5;
         final int ITERATIONS_TO_EXECUTE = 100;
@@ -219,6 +222,7 @@
     public void verifySensorStoppingInteraction(
             int sensorTypeTestee,
             int sensorTypeTester) throws Throwable {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         Context context = getContext();
 
         TestSensorEnvironment testerEnvironment = new TestSensorEnvironment(
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorParameterRangeTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorParameterRangeTest.java
new file mode 100644
index 0000000..4750b09
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorParameterRangeTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.hardware.cts;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.hardware.cts.helpers.SensorCtsHelper;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test min-max frequency, max range parameters for sensors.
+ *
+ * <p>To execute these test cases, the following command can be used:</p>
+ * <pre>
+ * adb shell am instrument -e class android.hardware.cts.SensorParameterRangeTest \
+ *     -w com.android.cts.hardware/android.test.AndroidJUnitRunner
+ * </pre>
+ */
+public class SensorParameterRangeTest extends SensorTestCase {
+
+    private static final double ACCELEROMETER_MAX_RANGE = 8 * 9.81; // 8G
+    private static final int ACCELEROMETER_MIN_FREQUENCY = 5;
+    private static final int ACCELEROMETER_MAX_FREQUENCY = 200;
+
+    private static final double GYRO_MAX_RANGE = 1000/57.295; // 1000 degrees per sec.
+    private static final int GYRO_MIN_FREQUENCY = 5;
+    private static final int GYRO_MAX_FREQUENCY = 200;
+
+    private static final int MAGNETOMETER_MAX_RANGE = 900;   // micro telsa
+    private static final int MAGNETOMETER_MIN_FREQUENCY = 5;
+    private static final int MAGNETOMETER_MAX_FREQUENCY = 50;
+
+    private static final int PRESSURE_MAX_RANGE = 1100;     // hecto-pascal
+    private static final int PRESSURE_MIN_FREQUENCY = 1;
+    private static final int PRESSURE_MAX_FREQUENCY = 10;
+
+    private boolean mHasHifiSensors;
+    private SensorManager mSensorManager;
+
+    @Override
+    public void setUp() {
+        mSensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
+        mHasHifiSensors = getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_HIFI_SENSORS);
+    }
+
+    public void testAccelerometerRange() {
+        checkSensorRangeAndFrequency(
+                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
+                ACCELEROMETER_MAX_RANGE,
+                ACCELEROMETER_MIN_FREQUENCY,
+                ACCELEROMETER_MAX_FREQUENCY);
+  }
+
+  public void testGyroscopeRange() {
+        checkSensorRangeAndFrequency(
+                mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE),
+                GYRO_MAX_RANGE,
+                GYRO_MIN_FREQUENCY,
+                GYRO_MAX_FREQUENCY);
+  }
+
+    public void testMagnetometerRange() {
+        checkSensorRangeAndFrequency(
+                mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
+                MAGNETOMETER_MAX_RANGE,
+                MAGNETOMETER_MIN_FREQUENCY,
+                MAGNETOMETER_MAX_FREQUENCY);
+    }
+
+    public void testPressureRange() {
+        checkSensorRangeAndFrequency(
+                mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
+                PRESSURE_MAX_RANGE,
+                PRESSURE_MIN_FREQUENCY,
+                PRESSURE_MAX_FREQUENCY);
+    }
+
+    private void checkSensorRangeAndFrequency(
+          Sensor sensor, double maxRange, int minFrequency, int maxFrequency) {
+        if (!mHasHifiSensors) return;
+        assertTrue(String.format("%s Range actual=%.2f expected=%.2f %s",
+                    sensor.getName(), sensor.getMaximumRange(), maxRange,
+                    SensorCtsHelper.getUnitsForSensor(sensor)),
+                sensor.getMaximumRange() >= maxRange);
+        double actualMinFrequency = SensorCtsHelper.getFrequency(sensor.getMaxDelay(),
+                TimeUnit.MICROSECONDS);
+        assertTrue(String.format("%s Min Frequency actual=%.2f expected=%dHz",
+                    sensor.getName(), actualMinFrequency, minFrequency), actualMinFrequency <=
+                minFrequency);
+
+        double actualMaxFrequency = SensorCtsHelper.getFrequency(sensor.getMinDelay(),
+                TimeUnit.MICROSECONDS);
+        assertTrue(String.format("%s Max Frequency actual=%.2f expected=%dHz",
+                    sensor.getName(), actualMaxFrequency, maxFrequency), actualMaxFrequency >=
+                maxFrequency);
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorSupportTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorSupportTest.java
new file mode 100644
index 0000000..2f25c8d
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorSupportTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.hardware.cts;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.test.AndroidTestCase;
+
+/**
+ * Checks if Hifi sensors are supported. When supported, checks individual support for
+ * Accelerometer, Gyroscope, Gyroscope_uncal, GeoMagneticField, MagneticField_uncal
+ * Pressure, RotationVector, SignificantMotion, StepDetector, StepCounter, TiltDetector.
+ *
+ * <p>To execute these test cases, the following command can be used:</p>
+ * <pre>
+ * adb shell am instrument -e class android.hardware.cts.SensorSupportTest \
+ *     -w com.android.cts.hardware/android.test.AndroidJUnitRunner
+ * </pre>
+ */
+public class SensorSupportTest extends AndroidTestCase {
+    private SensorManager mSensorManager;
+    private boolean mAreHifiSensorsSupported;
+
+    @Override
+    public void setUp() {
+        // Tests will only run if HIFI_SENSORS are supported.
+        mAreHifiSensorsSupported = getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_HIFI_SENSORS);
+        if (mAreHifiSensorsSupported) {
+            mSensorManager =
+                    (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
+        }
+    }
+
+    public void testSupportsAccelerometer() {
+        checkSupportsSensor(Sensor.TYPE_ACCELEROMETER);
+    }
+
+    public void testSupportsGyroscope() {
+        checkSupportsSensor(Sensor.TYPE_GYROSCOPE);
+    }
+
+    public void testSupportsGyroscopeUncalibrated() {
+        checkSupportsSensor(Sensor.TYPE_GYROSCOPE_UNCALIBRATED);
+    }
+
+    public void testSupportsGeoMagneticField() {
+        checkSupportsSensor(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR);
+    }
+
+    public void testSupportsMagneticFieldUncalibrated() {
+        checkSupportsSensor(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED);
+    }
+
+    public void testSupportsPressure() {
+        checkSupportsSensor(Sensor.TYPE_PRESSURE);
+    }
+
+    public void testSupportsRotationVector() {
+        checkSupportsSensor(Sensor.TYPE_ROTATION_VECTOR);
+    }
+
+    public void testSupportsSignificantMotion() {
+        checkSupportsSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
+    }
+
+    public void testSupportsStepDetector() {
+        checkSupportsSensor(Sensor.TYPE_STEP_DETECTOR);
+    }
+
+    public void testSupportsStepCounter() {
+        checkSupportsSensor(Sensor.TYPE_STEP_COUNTER);
+    }
+
+    public void testSupportsTiltDetector() {
+        final int TYPE_TILT_DETECTOR = 22;
+        checkSupportsSensor(TYPE_TILT_DETECTOR);
+    }
+
+    private void checkSupportsSensor(int sensorType) {
+        if (mAreHifiSensorsSupported) {
+            assertTrue(mSensorManager.getDefaultSensor(sensorType) != null);
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
index 6beeec8..2c3c6f4 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
@@ -29,6 +29,7 @@
 import android.hardware.SensorManager;
 import android.hardware.TriggerEvent;
 import android.hardware.TriggerEventListener;
+import android.hardware.cts.helpers.SensorCtsHelper;
 import android.hardware.cts.helpers.SensorNotSupportedException;
 import android.hardware.cts.helpers.SensorTestStateNotSupportedException;
 import android.hardware.cts.helpers.TestSensorEnvironment;
@@ -311,6 +312,7 @@
     // TODO: remove when parameterized tests are supported (see SensorBatchingTests.java)
     @TimeoutReq(minutes=20)
     public void testBatchAndFlush() throws Exception {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         ArrayList<Throwable> errorsFound = new ArrayList<>();
         for (Sensor sensor : mSensorList) {
             verifyRegisterListenerCallFlush(sensor, null /* handler */, errorsFound);
@@ -323,6 +325,7 @@
      */
     @TimeoutReq(minutes=10)
     public void testBatchAndFlushWithHandler() throws Exception {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         Sensor sensor = null;
         for (Sensor s : mSensorList) {
             if (s.getReportingMode() == Sensor.REPORTING_MODE_CONTINUOUS) {
@@ -359,6 +362,7 @@
      */
     @TimeoutReq(minutes=10)
     public void testBatchAndFlushUseDefaultHandler() throws Exception {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         Sensor sensor = null;
         for (Sensor s : mSensorList) {
             if (s.getReportingMode() == Sensor.REPORTING_MODE_CONTINUOUS) {
@@ -391,6 +395,7 @@
     // TODO: after L release move to SensorBatchingTests and run in all sensors with default
     //       verifications enabled
     public void testBatchAndFlushWithMultipleSensors() throws Exception {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         final int maxSensors = 3;
         final int maxReportLatencyUs = (int) TimeUnit.SECONDS.toMicros(10);
         List<Sensor> sensorsToTest = new ArrayList<Sensor>();
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTestCase.java b/tests/tests/hardware/src/android/hardware/cts/SensorTestCase.java
index 42b8d33..10992c5 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorTestCase.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTestCase.java
@@ -32,15 +32,12 @@
     protected static final String LOG_TAG = "TestRunner";
 
     /**
-     * By default tests need to run in a {@link TestSensorEnvironment} that assumes each sensor is
-     * running with a load of several listeners, requesting data at different rates.
-     *
-     * In a better world the component acting as builder of {@link SensorOperation} would compute
-     * this value based on the tests composed.
-     *
-     * Ideally, each {@link Sensor} object would expose this information to clients.
+     * Previously for L release, we had this flag to know if each sensor is running with multiple
+     * listeners each requesting different data rates. Now before running CTS tests all sensors
+     * are de-activated by putting SensorService in RESTRICTED mode. Only CTS tests can
+     * activate/deactivate sensors in this mode. So we can default this flag value to false.
      */
-    private volatile boolean mEmulateSensorUnderLoad = true;
+    private volatile boolean mEmulateSensorUnderLoad = false;
 
     /**
      * By default the test class is the root of the test hierarchy.
diff --git a/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java b/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
index 0fbd8fa..73d61a5 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
+import android.hardware.cts.helpers.SensorCtsHelper;
 import android.hardware.cts.helpers.SensorStats;
 import android.hardware.cts.helpers.TestSensorEnvironment;
 import android.hardware.cts.helpers.sensoroperations.TestSensorOperation;
@@ -542,6 +543,7 @@
     }
 
     private void runSensorTest(int sensorType, int rateUs) throws Throwable {
+        SensorCtsHelper.sleep(3, TimeUnit.SECONDS);
         TestSensorEnvironment environment = new TestSensorEnvironment(
                 getContext(),
                 sensorType,
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java
index 490e965..55465ac 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCtsHelper.java
@@ -15,6 +15,7 @@
  */
 package android.hardware.cts.helpers;
 
+import android.hardware.Sensor;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -259,4 +260,20 @@
             throw new IllegalStateException("Collection cannot be null or empty");
         }
     }
+
+    public static String getUnitsForSensor(Sensor sensor) {
+        switch(sensor.getType()) {
+            case Sensor.TYPE_ACCELEROMETER:
+                return "m/s^2";
+            case Sensor.TYPE_MAGNETIC_FIELD:
+            case Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED:
+                return "uT";
+            case Sensor.TYPE_GYROSCOPE:
+            case Sensor.TYPE_GYROSCOPE_UNCALIBRATED:
+                return "radians/sec";
+            case Sensor.TYPE_PRESSURE:
+                return "hPa";
+        };
+        return "";
+    }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SuspendStateMonitor.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SuspendStateMonitor.java
index 4426967..627e876 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/SuspendStateMonitor.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SuspendStateMonitor.java
@@ -1,5 +1,7 @@
 package android.hardware.cts.helpers;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.CountDownLatch;
@@ -14,12 +16,14 @@
 
 import junit.framework.Assert;
 
-public class SuspendStateMonitor {
+public class SuspendStateMonitor extends TimerTask {
     private final double firstRealTimeMillis;
     private final double firstUpTimeMillis;
     private double lastSleepTimeSeconds = 0;
     private volatile long lastWakeUpTime = 0;
     Timer sleepMonitoringTimer = new Timer();
+    private final List<CountDownLatch> mWaitForWakeUpLatch = new ArrayList<>();
+    private final String TAG = "SensorCTSDeviceSuspendMonitor";
 
     /**
      * Returns the time the device slept since the start of the application,
@@ -35,23 +39,45 @@
         return lastWakeUpTime;
     }
 
-    public void cancel() {
-        sleepMonitoringTimer.cancel();
+
+    public void waitForWakeUp(int numSeconds) throws InterruptedException {
+        CountDownLatch latch = new CountDownLatch(1);
+        synchronized(mWaitForWakeUpLatch) {
+            mWaitForWakeUpLatch.add(latch);
+        }
+        if (numSeconds == -1) {
+            // Wait indefinitely.
+            latch.await();
+        } else {
+            // Wait for the specified number of seconds.
+            boolean countZero = latch.await(numSeconds, TimeUnit.SECONDS);
+            if (!countZero) {
+               Log.e(TAG, "Device did not enter suspend state.");
+            }
+        }
     }
 
-     public SuspendStateMonitor() {
+    /**
+     * Run every 100ms inside the TimerTask.
+     */
+    @Override
+    public void run() {
+        if (getSleepTimeSeconds() - lastSleepTimeSeconds > 0.1) {
+            lastSleepTimeSeconds = getSleepTimeSeconds();
+            lastWakeUpTime = SystemClock.elapsedRealtime();
+            // If any client is waiting for wake-up, call countDown to unblock it.
+            synchronized(mWaitForWakeUpLatch) {
+                for (CountDownLatch latch : mWaitForWakeUpLatch) {
+                    latch.countDown();
+                }
+            }
+        }
+    }
+
+    public SuspendStateMonitor() {
         firstRealTimeMillis = android.os.SystemClock.elapsedRealtime();
         firstUpTimeMillis = android.os.SystemClock.uptimeMillis();
         // Every 100 miliseconds, check whether the device has slept.
-        TimerTask sleepMonitoringTask = new TimerTask() {
-                @Override
-                public void run() {
-                    if (getSleepTimeSeconds() - lastSleepTimeSeconds > 0.1) {
-                        lastSleepTimeSeconds = getSleepTimeSeconds();
-                        lastWakeUpTime = SystemClock.elapsedRealtime();
-                    }
-                }
-        };
-        sleepMonitoringTimer.schedule(sleepMonitoringTask, 0, 100);
+        sleepMonitoringTimer.schedule(this, 0, 100);
     }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
index 23effb9..3e70e75 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
@@ -225,7 +225,7 @@
                     builder.append("\n");
                     builder.append("ReceivedTimestamp=")
                     .append(mTimeStampFlushCompleteEvents.get(j)/1000000)
-                    .append(" Flush complete Event");
+                    .append("ms Flush complete Event");
                     ++j;
                 }
             }
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java
index d6cc54e..11fdc93 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java
@@ -145,7 +145,6 @@
         for (ISensorVerification verification : mVerifications) {
             failed |= evaluateResults(collectedEvents, verification, sb);
         }
-
         if (failed) {
             trySaveCollectedEvents(parent, listener);
 
@@ -250,42 +249,69 @@
      */
     public static TestSensorOperation createOperation(
             final TestSensorEnvironment environment,
-            final int eventCount,
             final WakeLock wakeLock,
-            final boolean flushRequested) {
+            final boolean flushBeforeAfterSuspend) {
         Executor executor = new Executor() {
             @Override
             public void execute(TestSensorManager sensorManager, TestSensorEventListener listener)
                     throws InterruptedException {
                 try {
-                    int eventCountForLatch = eventCount;
-                    if (flushRequested) {
-                        eventCountForLatch = eventCount + (int)environment.getFrequencyHz();
+                    sensorManager.registerListener(listener);
+                    if (flushBeforeAfterSuspend) {
+                        int initialNumEvents1 = listener.getCollectedEvents().size();
+                        SensorCtsHelper.sleep(2, TimeUnit.SECONDS);
+                        CountDownLatch flushLatch1 = sensorManager.requestFlush();
+                        listener.waitForFlushComplete(flushLatch1, false);
+                        Assert.assertTrue("1.No sensor events collected on calling flush " +
+                                environment.toString(),
+                                listener.getCollectedEvents().size() - initialNumEvents1 > 0);
                     }
-                    CountDownLatch latch = sensorManager.registerListener(listener,
-                                                                           eventCountForLatch);
-                    if (flushRequested) {
-                        SensorCtsHelper.sleep(1, TimeUnit.SECONDS);
-                        CountDownLatch flushLatch = sensorManager.requestFlush();
-                        listener.waitForFlushComplete(flushLatch, false);
-                    }
+
+                    Log.i(TAG, "Collected sensor events size1=" +
+                            listener.getCollectedEvents().size());
+                    int initialNumEvents2 = listener.getCollectedEvents().size();
                     if (wakeLock.isHeld()) {
                         wakeLock.release();
                     }
                     listener.releaseWakeLock();
-                    Log.v("TestSensorOperation", "waitForEvents " +
-                            environment.getSensor().getName()
-                          + " " + latch.getCount());
-                    listener.waitForEvents(latch, eventCount, false);
-                    Log.v("TestSensorOperation", "waitForEvents DONE " + environment.getSensor().getName());
+
+                    SuspendStateMonitor suspendMonitor = new SuspendStateMonitor();
+                    long approxStartTimeMs = SystemClock.elapsedRealtime();
+                    // Allow the device to go into suspend. Wait for wake-up.
+                    suspendMonitor.waitForWakeUp(15);
+                    suspendMonitor.cancel();
+
                     if (!wakeLock.isHeld()) {
                         wakeLock.acquire();
                     }
-                    if (flushRequested) {
-                        SensorCtsHelper.sleep(1, TimeUnit.SECONDS);
-                        CountDownLatch flushLatch = sensorManager.requestFlush();
-                        listener.waitForFlushComplete(flushLatch, false);
+
+                    CountDownLatch flushLatch2 = sensorManager.requestFlush();
+                    listener.waitForFlushComplete(flushLatch2, false);
+
+                    Log.i(TAG, "Collected sensor events size2=" +
+                            listener.getCollectedEvents().size());
+
+                    if (listener.getCollectedEvents().size() - initialNumEvents2 <= 0 &&
+                            suspendMonitor.getLastWakeUpTime() > 0) {
+                        // Fail
+                        String str = String.format("No Sensor events collected by calling flush " +
+                                "after device wake up. Approx time after which device went into " +
+                                "suspend %dms ,approx AP wake-up time %dms %s",
+                                approxStartTimeMs, suspendMonitor.getLastWakeUpTime(),
+                                environment.toString());
+                        Assert.fail(str);
                     }
+                    if (flushBeforeAfterSuspend) {
+                        int initialNumEvents3 = listener.getCollectedEvents().size();
+                        SensorCtsHelper.sleep(2, TimeUnit.SECONDS);
+                        CountDownLatch flushLatch3 = sensorManager.requestFlush();
+                        listener.waitForFlushComplete(flushLatch3, false);
+                        Assert.assertTrue("3.No sensor events collected on calling flush " +
+                                environment.toString(),
+                                listener.getCollectedEvents().size() - initialNumEvents3 > 0);
+                    }
+                    Log.i(TAG, "Collected sensor events size3=" +
+                            listener.getCollectedEvents().size());
                 } finally {
                     if(!wakeLock.isHeld()) {
                         wakeLock.acquire();
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java
index 1e775e3..4c449dd 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java
@@ -82,4 +82,8 @@
             this.previousEvent = previousEvent;
         }
     }
+
+    protected double nanosToMillis(long nanos) {
+        return nanos/(1000.0 * 1000.0);
+    }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/BatchArrivalVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/BatchArrivalVerification.java
index 5e50c3a..db6dc72 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/BatchArrivalVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/BatchArrivalVerification.java
@@ -37,6 +37,7 @@
     private final List<IndexedEventPair> mFailures = new LinkedList<IndexedEventPair>();
     private TestSensorEvent mFirstEvent = null;
     private int mIndex = 0;
+    private final long mEstimatedTestStartTimeMs;
 
     /**
      * Construct a {@link EventGapVerification}
@@ -45,6 +46,7 @@
      */
     public BatchArrivalVerification(long expectedBatchArrivalTimeUs) {
          mExpectedBatchArrivalTimeUs = expectedBatchArrivalTimeUs;
+         mEstimatedTestStartTimeMs = SystemClock.elapsedRealtime();
     }
 
     /**
@@ -91,13 +93,14 @@
 
         if (count > 0) {
             StringBuilder sb = new StringBuilder();
-            sb.append(count).append(" batch delayed: ");
+            sb.append(count).append(" BatchArrivalDelayed: ");
             for (int i = 0; i < Math.min(count, TRUNCATE_MESSAGE_LENGTH); i++) {
                 IndexedEventPair info = mFailures.get(i);
                 sb.append(String.format("expectedBatchArrival=%dms actualBatchArrivalTime=%dms "+
-                                        "diff=%dms tolerance=%dms",
+                                        "estimedTestStartTime=%dms diff=%dms tolerance=%dms",
                                          (mExpectedBatchArrivalTimeUs)/1000,
                                          info.event.receivedTimestamp/(1000 * 1000),
+                                         mEstimatedTestStartTimeMs,
                                          (mExpectedBatchArrivalTimeUs -
                                           info.event.receivedTimestamp/1000)/1000,
                                          BATCH_ARRIVAL_TOLERANCE_US/1000)
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java
index b692f0f..76f1594 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java
@@ -28,6 +28,10 @@
     // Number of events to truncate (discard) from the initial events received
     private static final int TRUNCATE_EVENTS_COUNT = 1;
 
+    // Number of event gaps to tolerate is the minimum of 1% of total events received or 10.
+    private static final int EVENT_GAP_TOLERANCE_COUNT = 10;
+    private static final double EVENT_GAP_TOLERANCE_PERCENT = 0.01;
+
     private final int mExpectedDelayUs;
 
     private final List<IndexedEventPair> mEventGaps = new LinkedList<IndexedEventPair>();
@@ -68,24 +72,26 @@
         }
 
         final int count = mEventGaps.size();
-        stats.addValue(PASSED_KEY, count == 0);
+        // Ensure that eventGapTolerance is at least 1.
+        int eventGapTolerance = (int)Math.max(1, Math.min(EVENT_GAP_TOLERANCE_COUNT,
+                    EVENT_GAP_TOLERANCE_PERCENT * mIndex));
+        stats.addValue(PASSED_KEY, count <= eventGapTolerance);
         stats.addValue(SensorStats.EVENT_GAP_COUNT_KEY, count);
         stats.addValue(SensorStats.EVENT_GAP_POSITIONS_KEY, getIndexArray(mEventGaps));
 
-        if (count > 0) {
+        if (count > eventGapTolerance) {
             StringBuilder sb = new StringBuilder();
             sb.append(count).append(" events gaps: ");
             for (int i = 0; i < Math.min(count, TRUNCATE_MESSAGE_LENGTH); i++) {
                 IndexedEventPair info = mEventGaps.get(i);
-                sb.append(String.format("position=%d, delta_time=%dns; ", info.index,
-                        info.event.timestamp - info.previousEvent.timestamp));
+                sb.append(String.format("position=%d, delta_time=%.2fms; ", info.index,
+                        nanosToMillis(info.event.timestamp - info.previousEvent.timestamp)));
             }
             if (count > TRUNCATE_MESSAGE_LENGTH) {
                 sb.append(count - TRUNCATE_MESSAGE_LENGTH).append(" more; ");
             }
-            sb.append(String.format("(expected <%dns)",
-                    TimeUnit.NANOSECONDS.convert((int) (THRESHOLD * mExpectedDelayUs),
-                            TimeUnit.MICROSECONDS)));
+            sb.append(String.format("(expected <%.2fms)",
+                    (double)(THRESHOLD * mExpectedDelayUs)/1000.0));
             Assert.fail(sb.toString());
         }
     }
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java
index 6f17e7b..687e63b 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java
@@ -62,7 +62,7 @@
     public void testVerify_missing_events() {
         // Timestamps in ns, expected in us
         long[] timestamps = {1000000, 2000000, 3000000, 5000000, 6000000};
-        runVerification(1000, timestamps, false, new int[]{3});
+        runVerification(1000, timestamps, true, new int[]{3});
     }
 
     private void runVerification(int expected, long[] timestamps, boolean pass,
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerification.java
index 7b77ead..5a176d5 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerification.java
@@ -49,10 +49,8 @@
     @SuppressWarnings("deprecation")
     public static EventOrderingVerification getDefault(TestSensorEnvironment environment) {
         int reportingMode = environment.getSensor().getReportingMode();
-        if (reportingMode != Sensor.REPORTING_MODE_CONTINUOUS
-                && reportingMode != Sensor.REPORTING_MODE_ON_CHANGE) {
+        if (reportingMode == Sensor.REPORTING_MODE_ONE_SHOT)
             return null;
-        }
         return new EventOrderingVerification();
     }
 
@@ -84,8 +82,9 @@
             sb.append(count).append(" events out of order: ");
             for (int i = 0; i < Math.min(count, TRUNCATE_MESSAGE_LENGTH); i++) {
                 IndexedEventPair info = mOutOfOrderEvents.get(i);
-                sb.append(String.format("position=%d, previous=%d, timestamp=%d; ", info.index,
-                        info.previousEvent.timestamp, info.event.timestamp));
+                sb.append(String.format("position=%d, previous_ts=%.2fms, current_ts=%.2fms",
+                            info.index, nanosToMillis(info.previousEvent.timestamp),
+                            nanosToMillis(info.event.timestamp)));
             }
             if (count > TRUNCATE_MESSAGE_LENGTH) {
                 sb.append(count - TRUNCATE_MESSAGE_LENGTH).append(" more");
@@ -114,9 +113,9 @@
         if (mPreviousEvent == null) {
             mMaxTimestamp = event.timestamp;
         } else {
-            if (event.timestamp < mMaxTimestamp) {
+            if (event.timestamp <= mMaxTimestamp) {
                 mOutOfOrderEvents.add(new IndexedEventPair(mIndex, event, mPreviousEvent));
-            } else if (event.timestamp > mMaxTimestamp) {
+            } else {
                 mMaxTimestamp = event.timestamp;
             }
         }
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java
index b9848fa..f1dc229c8 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java
@@ -41,16 +41,6 @@
     }
 
     /**
-     * Test that the verification passes when the timestamps are the same.
-     */
-    public void testSameTimestamp() {
-        SensorStats stats = new SensorStats();
-        EventOrderingVerification verification = getVerification(0, 0, 0, 0, 0);
-        verification.verify(stats);
-        verifyStats(stats, true, 0);
-    }
-
-    /**
      * Test that the verification passes when the timestamps are increasing.
      */
     public void testSequentialTimestamp() {
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventTimestampSynchronizationVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventTimestampSynchronizationVerification.java
index 3af3f03..15ff5c03 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventTimestampSynchronizationVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventTimestampSynchronizationVerification.java
@@ -71,11 +71,10 @@
         long fifoMaxEventCount = environment.getSensor().getFifoMaxEventCount();
         int maximumExpectedSamplingPeriodUs = environment.getMaximumExpectedSamplingPeriodUs();
         if (fifoMaxEventCount > 0 && maximumExpectedSamplingPeriodUs != Integer.MAX_VALUE) {
-            long fifoBasedReportLatencyUs =
-                    fifoMaxEventCount * maximumExpectedSamplingPeriodUs;
-            reportLatencyUs = Math.min(reportLatencyUs, fifoBasedReportLatencyUs) +
-                (long)(2.5 * maximumExpectedSamplingPeriodUs);
-            // of each event will be equal to the time it takes to fill up the FIFO.
+            long fifoBasedReportLatencyUs = fifoMaxEventCount * maximumExpectedSamplingPeriodUs;
+            // If the device goes into suspend mode and the sensor is a non wake-up sensor, the
+            // FIFO will keep overwriting itself and the reportLatency will be equal to the time
+            // it takes to fill up the FIFO.
             if (environment.isDeviceSuspendTest() && !environment.getSensor().isWakeUpSensor()) {
                 reportLatencyUs = fifoBasedReportLatencyUs;
             } else {
@@ -86,7 +85,9 @@
                 reportLatencyUs = Math.min(reportLatencyUs, fifoBasedReportLatencyUs);
             }
         }
-        long expectedSyncLatencyNs = TimeUnit.MICROSECONDS.toNanos(reportLatencyUs);
+        // Add an additional filter delay which is a function of the samplingPeriod.
+        long filterDelayUs = (long)(2.5 * maximumExpectedSamplingPeriodUs);
+        long expectedSyncLatencyNs = TimeUnit.MICROSECONDS.toNanos(reportLatencyUs + filterDelayUs);
         return new EventTimestampSynchronizationVerification(DEFAULT_THRESHOLD_NS,
                                                               expectedSyncLatencyNs);
     }
@@ -149,9 +150,12 @@
             if (eventTimestampNs < lowerThresholdNs || eventTimestampNs > upperThresholdNs) {
                 if (failures.size() < TRUNCATE_MESSAGE_LENGTH) {
                     builder.append("position=").append(i);
-                    builder.append(", timestamp=").append(eventTimestampNs).append("ns");
-                    builder.append(", expected=[").append(lowerThresholdNs);
-                    builder.append(", ").append(upperThresholdNs).append("]ns; ");
+                    builder.append(", timestamp=").append(String.format("%.2fms",
+                                nanosToMillis(eventTimestampNs)));
+                    builder.append(", expected=[").append(String.format("%.2fms",
+                                nanosToMillis(lowerThresholdNs)));
+                    builder.append(", ").append(String.format("%.2f]ms; ",
+                                nanosToMillis(upperThresholdNs)));
                 }
                 failures.add(new IndexedEvent(i, event));
             }
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerification.java
index 6633903..e5a5053 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerification.java
@@ -18,6 +18,10 @@
 
 import junit.framework.Assert;
 
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import android.util.Log;
 import android.hardware.Sensor;
 import android.hardware.cts.helpers.SensorCtsHelper;
 import android.hardware.cts.helpers.SensorStats;
@@ -39,6 +43,8 @@
 
     // sensorType: threshold (% of expected period)
     private static final SparseIntArray DEFAULTS = new SparseIntArray(12);
+    // Max allowed jitter (in percentage).
+    private static final int THRESHOLD_PERCENT_FOR_HIFI_SENSORS = 1;
     static {
         // Use a method so that the @deprecation warning can be set for that method only
         setDefaults();
@@ -68,6 +74,11 @@
         if (threshold == -1) {
             return null;
         }
+        boolean hasHifiSensors = environment.getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_HIFI_SENSORS);
+        if (hasHifiSensors) {
+           threshold = THRESHOLD_PERCENT_FOR_HIFI_SENSORS;
+        }
         return new JitterVerification(threshold);
     }
 
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java
index f7c2c53..20dd2d2 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerification.java
@@ -18,10 +18,13 @@
 
 import junit.framework.Assert;
 
+import android.content.Context;
+import android.content.pm.PackageManager;
 import android.hardware.Sensor;
 import android.hardware.cts.helpers.SensorStats;
 import android.hardware.cts.helpers.TestSensorEnvironment;
 import android.hardware.cts.helpers.TestSensorEvent;
+import android.util.Log;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -66,7 +69,21 @@
         if (!DEFAULTS.containsKey(sensorType)) {
             return null;
         }
+        boolean hasHifiSensors = environment.getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_HIFI_SENSORS);
 
+        if (hasHifiSensors) {
+            // Max accelerometer deviation: 400uG/√Hz
+            DEFAULTS.put(Sensor.TYPE_ACCELEROMETER, new float[]{0.004f, 0.004f, 0.004f});
+            // Max gyro deviation: 0.014°/s/√Hz
+            float deviationInRadians = (float) (0.014f * (Math.PI / 180));
+            DEFAULTS.put(Sensor.TYPE_GYROSCOPE,
+                    new float[]{deviationInRadians,deviationInRadians, deviationInRadians});
+            // Max magnetometer deviation: 0.1uT/√Hz
+            DEFAULTS.put(Sensor.TYPE_MAGNETIC_FIELD, new float[]{0.1f, 0.1f, 0.1f});
+            // Max pressure deviation: 2Pa/√Hz
+            DEFAULTS.put(Sensor.TYPE_PRESSURE, new float[]{2.0f, 2.0f, 2.0f});
+        }
         return new StandardDeviationVerification(DEFAULTS.get(sensorType));
     }
 
@@ -107,9 +124,9 @@
             if (stdDevs[i] > mThreshold[i]) {
                 failed = true;
             }
-            stddevSb.append(String.format("%.2f", stdDevs[i]));
+            stddevSb.append(String.format("%.3f", stdDevs[i]));
             if (i != stdDevs.length - 1) stddevSb.append(", ");
-            expectedSb.append(String.format("<%.2f", mThreshold[i]));
+            expectedSb.append(String.format("<%.3f", mThreshold[i]));
             if (i != stdDevs.length - 1) expectedSb.append(", ");
         }
         if (stdDevs.length > 1) {
diff --git a/tests/tests/hardware/src/android/hardware/fingerprint/cts/FingerprintManagerTest.java b/tests/tests/hardware/src/android/hardware/fingerprint/cts/FingerprintManagerTest.java
new file mode 100644
index 0000000..95704b9
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/fingerprint/cts/FingerprintManagerTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.hardware.fingerprint.cts;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.fingerprint.FingerprintManager;
+import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
+import android.os.CancellationSignal;
+import android.test.AndroidTestCase;
+
+/**
+ * Basic test cases for FingerprintManager
+ */
+public class FingerprintManagerTest extends AndroidTestCase {
+    private enum AuthState {
+        AUTH_UNKNOWN, AUTH_ERROR, AUTH_FAILED, AUTH_SUCCEEDED
+    }
+    private AuthState mAuthState = AuthState.AUTH_UNKNOWN;
+    private FingerprintManager mFingerprintManager;
+
+    boolean mHasFingerprintManager;
+    private AuthenticationCallback mAuthCallback = new AuthenticationCallback() {
+
+        @Override
+        public void onAuthenticationError(int errorCode, CharSequence errString) {
+        }
+
+        @Override
+        public void onAuthenticationFailed() {
+            mAuthState = AuthState.AUTH_SUCCEEDED;
+        }
+
+        @Override
+        public void onAuthenticationSucceeded(
+                android.hardware.fingerprint.FingerprintManager.AuthenticationResult result) {
+            mAuthState = AuthState.AUTH_SUCCEEDED;
+        }
+    };
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mAuthState = AuthState.AUTH_UNKNOWN;
+
+        PackageManager pm = getContext().getPackageManager();
+        if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
+            mHasFingerprintManager = true;
+            mFingerprintManager = (FingerprintManager)
+                    getContext().getSystemService(Context.FINGERPRINT_SERVICE);
+        }
+    }
+
+    public void test_hasFingerprintHardware() {
+        if (!mHasFingerprintManager) {
+            return; // skip test if no fingerprint feature
+        }
+        assertTrue(mFingerprintManager.isHardwareDetected());
+    }
+
+    public void test_hasEnrolledFingerprints() {
+        if (!mHasFingerprintManager) {
+            return; // skip test if no fingerprint feature
+        }
+        boolean hasEnrolledFingerprints = mFingerprintManager.hasEnrolledFingerprints();
+        assertTrue(!hasEnrolledFingerprints);
+    }
+
+    public void test_authenticateNullCallback() {
+        if (!mHasFingerprintManager) {
+            return; // skip test if no fingerprint feature
+        }
+        boolean exceptionTaken = false;
+        CancellationSignal cancelAuth = new CancellationSignal();
+        try {
+            mFingerprintManager.authenticate(null, cancelAuth, 0, null, null);
+        } catch (IllegalArgumentException e) {
+            exceptionTaken = true;
+        } finally {
+            assertTrue(mAuthState == AuthState.AUTH_UNKNOWN);
+            assertTrue(exceptionTaken);
+            cancelAuth.cancel();
+        }
+    }
+
+    public void test_authenticate() {
+        if (!mHasFingerprintManager) {
+            return; // skip test if no fingerprint feature
+        }
+        boolean exceptionTaken = false;
+        CancellationSignal cancelAuth = new CancellationSignal();
+        try {
+            mFingerprintManager.authenticate(null, cancelAuth, 0, mAuthCallback, null);
+        } catch (IllegalArgumentException e) {
+            exceptionTaken = true;
+        } finally {
+            assertFalse(exceptionTaken);
+            // We should never get out of this state without user interaction
+            assertTrue(mAuthState == AuthState.AUTH_UNKNOWN);
+            cancelAuth.cancel();
+        }
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/InputCtsActivity.java b/tests/tests/hardware/src/android/hardware/input/cts/InputCtsActivity.java
deleted file mode 100644
index b16cadb..0000000
--- a/tests/tests/hardware/src/android/hardware/input/cts/InputCtsActivity.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.
- */
-
-package android.hardware.input.cts;
-
-import android.app.Activity;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class InputCtsActivity extends Activity {
-    private InputCallback mInputCallback;
-
-    @Override
-    public boolean dispatchGenericMotionEvent(MotionEvent ev) {
-        if (mInputCallback != null) {
-            mInputCallback.onMotionEvent(ev);
-        }
-        return true;
-    }
-
-    @Override
-    public boolean dispatchTouchEvent(MotionEvent ev) {
-        if (mInputCallback != null) {
-            mInputCallback.onMotionEvent(ev);
-        }
-        return true;
-    }
-
-    @Override
-    public boolean dispatchTrackballEvent(MotionEvent ev) {
-        if (mInputCallback != null) {
-            mInputCallback.onMotionEvent(ev);
-        }
-        return true;
-    }
-
-    @Override
-    public boolean dispatchKeyEvent(KeyEvent ev) {
-        if (mInputCallback != null) {
-            mInputCallback.onKeyEvent(ev);
-        }
-        return true;
-    }
-
-    public void setInputCallback(InputCallback callback) {
-        mInputCallback = callback;
-    }
-}
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/tests/GamepadTestCase.java b/tests/tests/hardware/src/android/hardware/input/cts/tests/GamepadTestCase.java
deleted file mode 100644
index 92fba12..0000000
--- a/tests/tests/hardware/src/android/hardware/input/cts/tests/GamepadTestCase.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.
- */
-
-package android.hardware.input.cts.tests;
-
-import android.util.Log;
-import android.view.KeyEvent;
-
-import java.io.Writer;
-import java.util.List;
-
-import com.android.cts.hardware.R;
-
-public class GamepadTestCase extends InputTestCase {
-    private static final String TAG = "GamepadTests";
-
-    public void testButtonA() throws Exception {
-        sendHidCommands(R.raw.gamepad_press_a);
-        assertReceivedKeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_A);
-        assertReceivedKeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BUTTON_A);
-        assertNoMoreEvents();
-    }
-}
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/tests/InputTestCase.java b/tests/tests/hardware/src/android/hardware/input/cts/tests/InputTestCase.java
deleted file mode 100644
index fba5f51..0000000
--- a/tests/tests/hardware/src/android/hardware/input/cts/tests/InputTestCase.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * 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.
- */
-
-package android.hardware.input.cts.tests;
-
-import android.app.UiAutomation;
-import android.hardware.input.cts.InputCtsActivity;
-import android.hardware.input.cts.InputCallback;
-import android.system.ErrnoException;
-import android.system.Os;
-import android.test.ActivityInstrumentationTestCase2;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.List;
-import java.util.UUID;
-
-public class InputTestCase extends ActivityInstrumentationTestCase2<InputCtsActivity> {
-    private static final String TAG = "InputTestCase";
-    private static final String HID_EXECUTABLE = "hid";
-    private static final int SHELL_UID = 2000;
-    private static final String[] KEY_ACTIONS = {"DOWN", "UP", "MULTIPLE"};
-
-    private File mFifo;
-    private Writer mWriter;
-
-    private BlockingQueue<KeyEvent> mKeys;
-    private BlockingQueue<MotionEvent> mMotions;
-    private InputListener mInputListener;
-
-    public InputTestCase() {
-        super(InputCtsActivity.class);
-        mKeys = new LinkedBlockingQueue<KeyEvent>();
-        mMotions = new LinkedBlockingQueue<MotionEvent>();
-        mInputListener = new InputListener();
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mFifo = setupFifo();
-        clearKeys();
-        clearMotions();
-        getActivity().setInputCallback(mInputListener);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        if (mFifo != null) {
-            mFifo.delete();
-            mFifo = null;
-        }
-        closeQuietly(mWriter);
-        mWriter = null;
-        super.tearDown();
-    }
-
-    /**
-     * Sends the HID commands designated by the given resource id.
-     * The commands must be in the format expected by the `hid` shell command.
-     *
-     * @param id The resource id from which to load the HID commands. This must be a "raw"
-     * resource.
-     */
-    public void sendHidCommands(int id) {
-        try {
-            Writer w = getWriter();
-            w.write(getEvents(id));
-            w.flush();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Asserts that the application received a {@link android.view.KeyEvent} with the given action
-     * and keycode.
-     *
-     * If other KeyEvents are received by the application prior to the expected KeyEvent, or no
-     * KeyEvents are received within a reasonable amount of time, then this will throw an
-     * AssertionFailedError.
-     *
-     * @param action The action to expect on the next KeyEvent
-     * (e.g. {@link android.view.KeyEvent#ACTION_DOWN}).
-     * @param keyCode The expected key code of the next KeyEvent.
-     */
-    public void assertReceivedKeyEvent(int action, int keyCode) {
-        KeyEvent k = waitForKey();
-        if (k == null) {
-            fail("Timed out waiting for " + KeyEvent.keyCodeToString(keyCode)
-                    + " with action " + KEY_ACTIONS[action]);
-            return;
-        }
-        assertEquals(action, k.getAction());
-        assertEquals(keyCode, k.getKeyCode());
-    }
-
-    /**
-     * Asserts that no more events have been received by the application.
-     *
-     * If any more events have been received by the application, this throws an
-     * AssertionFailedError.
-     */
-    public void assertNoMoreEvents() {
-        KeyEvent key;
-        MotionEvent motion;
-        if ((key = mKeys.poll()) != null) {
-            fail("Extraneous key events generated: " + key);
-        }
-        if ((motion = mMotions.poll()) != null) {
-            fail("Extraneous motion events generated: " + motion);
-        }
-    }
-
-    private KeyEvent waitForKey() {
-        try {
-            return mKeys.poll(1, TimeUnit.SECONDS);
-        } catch (InterruptedException e) {
-            return null;
-        }
-    }
-
-    private void clearKeys() {
-        mKeys.clear();
-    }
-
-    private void clearMotions() {
-        mMotions.clear();
-    }
-
-    private File setupFifo() throws ErrnoException {
-        File dir = getActivity().getCacheDir();
-        String filename = dir.getAbsolutePath() + File.separator +  UUID.randomUUID().toString();
-        Os.mkfifo(filename, 0666);
-        File f = new File(filename);
-        return f;
-    }
-
-    private Writer getWriter() throws IOException {
-        if (mWriter == null) {
-            UiAutomation ui = getInstrumentation().getUiAutomation();
-            ui.executeShellCommand("hid " + mFifo.getAbsolutePath());
-            mWriter = new FileWriter(mFifo);
-        }
-        return mWriter;
-    }
-
-    private String getEvents(int id) throws IOException {
-        InputStream is =
-            getInstrumentation().getTargetContext().getResources().openRawResource(id);
-        return readFully(is);
-    }
-
-
-    private static void closeQuietly(AutoCloseable closeable) {
-        if (closeable != null) {
-            try {
-                closeable.close();
-            } catch (RuntimeException rethrown) {
-                throw rethrown;
-            } catch (Exception ignored) { }
-        }
-    }
-
-    private static String readFully(InputStream is) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        int read = 0;
-        byte[] buffer = new byte[1024];
-        while ((read = is.read(buffer)) >= 0) {
-            baos.write(buffer, 0, read);
-        }
-        return baos.toString();
-    }
-
-    private class InputListener implements InputCallback {
-        public void onKeyEvent(KeyEvent ev) {
-            boolean done = false;
-            do {
-                try {
-                    mKeys.put(new KeyEvent(ev));
-                    done = true;
-                } catch (InterruptedException ignore) { }
-            } while (!done);
-        }
-
-        public void onMotionEvent(MotionEvent ev) {
-            boolean done = false;
-            do {
-                try {
-                    mMotions.put(MotionEvent.obtain(ev));
-                    done = true;
-                } catch (InterruptedException ignore) { }
-            } while (!done);
-        }
-    }
-}
diff --git a/tests/tests/hardware/src/android/hardware/multiprocess/camera/cts/CameraEvictionTest.java b/tests/tests/hardware/src/android/hardware/multiprocess/camera/cts/CameraEvictionTest.java
index 3cf1dc7..aa34de3 100644
--- a/tests/tests/hardware/src/android/hardware/multiprocess/camera/cts/CameraEvictionTest.java
+++ b/tests/tests/hardware/src/android/hardware/multiprocess/camera/cts/CameraEvictionTest.java
@@ -121,7 +121,6 @@
 
     @Override
     protected void tearDown() throws Exception {
-        super.tearDown();
         if (mProcessPid != -1) {
             android.os.Process.killProcess(mProcessPid);
             mProcessPid = -1;
@@ -140,6 +139,7 @@
         }
         mContext = null;
         mActivityManager = null;
+        super.tearDown();
     }
 
     /**
@@ -241,7 +241,12 @@
         CameraManager manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
         assertNotNull(manager);
         String[] cameraIds = manager.getCameraIdList();
-        assertNotEmpty(cameraIds);
+
+        if (cameraIds.length == 0) {
+            Log.i(TAG, "Skipping testBasicCamera2ActivityEviction, device has no cameras.");
+            return;
+        }
+
         assertTrue(mContext.getMainLooper() != null);
 
         // Setup camera manager
diff --git a/tests/tests/keystore/res/raw/ec_key3_secp224r1_cert.der b/tests/tests/keystore/res/raw/ec_key3_secp224r1_cert.der
new file mode 100644
index 0000000..454edb3
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key3_secp224r1_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/ec_key3_secp224r1_pkcs8.der b/tests/tests/keystore/res/raw/ec_key3_secp224r1_pkcs8.der
new file mode 100644
index 0000000..2b89ca3
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key3_secp224r1_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/ec_key4_secp256r1_cert.der b/tests/tests/keystore/res/raw/ec_key4_secp256r1_cert.der
new file mode 100644
index 0000000..1641a65
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key4_secp256r1_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/ec_key4_secp256r1_pkcs8.der b/tests/tests/keystore/res/raw/ec_key4_secp256r1_pkcs8.der
new file mode 100644
index 0000000..2631a6e
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key4_secp256r1_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/ec_key5_secp384r1_cert.der b/tests/tests/keystore/res/raw/ec_key5_secp384r1_cert.der
new file mode 100644
index 0000000..cf19be8
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key5_secp384r1_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/ec_key5_secp384r1_pkcs8.der b/tests/tests/keystore/res/raw/ec_key5_secp384r1_pkcs8.der
new file mode 100644
index 0000000..f864258
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key5_secp384r1_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/ec_key6_secp521r1_cert.der b/tests/tests/keystore/res/raw/ec_key6_secp521r1_cert.der
new file mode 100644
index 0000000..cc5d973
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key6_secp521r1_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/ec_key6_secp521r1_pkcs8.der b/tests/tests/keystore/res/raw/ec_key6_secp521r1_pkcs8.der
new file mode 100644
index 0000000..d21815f
--- /dev/null
+++ b/tests/tests/keystore/res/raw/ec_key6_secp521r1_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key3_1024_cert.der b/tests/tests/keystore/res/raw/rsa_key3_1024_cert.der
new file mode 100644
index 0000000..36f6820
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key3_1024_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key3_1024_pkcs8.der b/tests/tests/keystore/res/raw/rsa_key3_1024_pkcs8.der
new file mode 100644
index 0000000..3b70b0d
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key3_1024_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key4_4096_cert.der b/tests/tests/keystore/res/raw/rsa_key4_4096_cert.der
new file mode 100644
index 0000000..24d9a52
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key4_4096_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key4_4096_pkcs8.der b/tests/tests/keystore/res/raw/rsa_key4_4096_pkcs8.der
new file mode 100644
index 0000000..d3d08ca
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key4_4096_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key5_512_cert.der b/tests/tests/keystore/res/raw/rsa_key5_512_cert.der
new file mode 100644
index 0000000..56079dc
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key5_512_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key5_512_pkcs8.der b/tests/tests/keystore/res/raw/rsa_key5_512_pkcs8.der
new file mode 100644
index 0000000..8f723d3
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key5_512_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key6_768_cert.der b/tests/tests/keystore/res/raw/rsa_key6_768_cert.der
new file mode 100644
index 0000000..8afc59b
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key6_768_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key6_768_pkcs8.der b/tests/tests/keystore/res/raw/rsa_key6_768_pkcs8.der
new file mode 100644
index 0000000..7d25fe7
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key6_768_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key7_3072_cert.der b/tests/tests/keystore/res/raw/rsa_key7_3072_cert.der
new file mode 100644
index 0000000..414c35d
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key7_3072_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key7_3072_pksc8.der b/tests/tests/keystore/res/raw/rsa_key7_3072_pksc8.der
new file mode 100644
index 0000000..32788d2
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key7_3072_pksc8.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key8_2048_cert.der b/tests/tests/keystore/res/raw/rsa_key8_2048_cert.der
new file mode 100644
index 0000000..bbbd81b
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key8_2048_cert.der
Binary files differ
diff --git a/tests/tests/keystore/res/raw/rsa_key8_2048_pkcs8.der b/tests/tests/keystore/res/raw/rsa_key8_2048_pkcs8.der
new file mode 100644
index 0000000..94211ad
--- /dev/null
+++ b/tests/tests/keystore/res/raw/rsa_key8_2048_pkcs8.der
Binary files differ
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES128GCMNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES128GCMNoPaddingCipherTest.java
index 6ae13ce..ed9c2b1 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AES128GCMNoPaddingCipherTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AES128GCMNoPaddingCipherTest.java
@@ -23,9 +23,14 @@
     private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
             "6d7596a8fd56ceaec61de7940984b7736fec44f572afc3c8952e4dc6541e2bc6a702c440a37610989543f6"
             + "3fedb047ca2173bc18581944");
-    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+    private static final byte[] KAT_CIPHERTEXT_WITHOUT_AAD = HexEncoding.decode(
             "b3f6799e8f9326f2df1e80fcd2cb16d78c9dc7cc14bb677862dc6c639b3a6338d24b312d3989e5920b5dbf"
             + "c976765efbfe57bb385940a7a43bdf05bddae3c9d6a2fbbdfcc0cba0");
+    private static final byte[] KAT_AAD = HexEncoding.decode(
+            "d3bc7458914f45d56d5fcfbb2eeff2dcc0e620c1229d90904e98930ea71aa43b6898f846f3244d");
+    private static final byte[] KAT_CIPHERTEXT_WITH_AAD = HexEncoding.decode(
+            "b3f6799e8f9326f2df1e80fcd2cb16d78c9dc7cc14bb677862dc6c639b3a6338d24b312d3989e5920b5dbf"
+            + "c976765efbfe57bb385940a70c106264d81506f8daf9cd6a1c70988c");
 
     @Override
     protected byte[] getKatKey() {
@@ -44,6 +49,16 @@
 
     @Override
     protected byte[] getKatCiphertext() {
-        return KAT_CIPHERTEXT.clone();
+        return KAT_CIPHERTEXT_WITHOUT_AAD.clone();
+    }
+
+    @Override
+    protected byte[] getKatAad() {
+        return KAT_AAD.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertextWhenKatAadPresent() {
+        return KAT_CIPHERTEXT_WITH_AAD.clone();
     }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES192CBCNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES192CBCNoPaddingCipherTest.java
new file mode 100644
index 0000000..f49c7c3
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES192CBCNoPaddingCipherTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES192CBCNoPaddingCipherTest extends AESCBCNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "be8cc4e25cce46e5d55725e2391f7d3cf59ed60062f5a43b");
+    private static final byte[] KAT_IV = HexEncoding.decode("80a199aab0eee77e7762ddf3b3a32f40");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "064f9200e0df37d4711af4a69d11addf9e1c345d9d8195f9f1f715019ce96a167f2497c994bd496eb80bfb"
+            + "2ba2c9d5af");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "859b90becaa85e95a71e104efbd7a3b723bcbf4eb39865544a05d9e90b6fe572c134552f3a138e726fbe49"
+            + "3b3a839598");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES192CBCPKCS7PaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES192CBCPKCS7PaddingCipherTest.java
new file mode 100644
index 0000000..b17befc
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES192CBCPKCS7PaddingCipherTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES192CBCPKCS7PaddingCipherTest extends AESCBCPKCS7PaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "68969215ec41e4df7d23de0e806f458f52aff492bd7c5263");
+    private static final byte[] KAT_IV = HexEncoding.decode("e61d13dfbf0533289f0e7950209da418");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "8d4c1cac27511ee2d82409a7f378e7e402b0eb189c1eaa5c506eb72a9074b170");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "e70bcd62c595dc1b2b8c197bb91a7447e1be2cbcf3fdc69e7e991faf0f57cf4e3884138ff403a41fd99818"
+            + "708ada301c");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES192CTRNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES192CTRNoPaddingCipherTest.java
new file mode 100644
index 0000000..d4a4143
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES192CTRNoPaddingCipherTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES192CTRNoPaddingCipherTest extends AESCTRNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "5e2036e790d38815c90beb67a1c9e5aa0e167ef082927317");
+    private static final byte[] KAT_IV = HexEncoding.decode("df0694959b89054156962d68a226965c");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "6ed2781c99e03e45314d6019932220c2c98130c53f9f67ad10ac519adf50e928091e09cdbbd3b42b");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "e427b6666502e05b82d0b20ae50e862b1936d71266fc49178ac984e71571f22ae0f90f0c19f42b4a");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES192ECBNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES192ECBNoPaddingCipherTest.java
new file mode 100644
index 0000000..0557d03
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES192ECBNoPaddingCipherTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES192ECBNoPaddingCipherTest extends AESECBNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "3cab83fb338ba985fbfe74c5e9d2e900adb570b1d67faf92");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "2cc64c335a13fb838f3c6aad0a6b47297ca90bb886ddb059200f0b41740c44ab");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "9c5c825328f5ee0aa24947e374d3f9165f484b39dd808c790d7a129648102453");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return null;
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES192ECBPKCS7PaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES192ECBPKCS7PaddingCipherTest.java
new file mode 100644
index 0000000..1cf193c
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES192ECBPKCS7PaddingCipherTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES192ECBPKCS7PaddingCipherTest extends AESECBPKCS7PaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "d57f4e5446f736c16476ec4db5decc7b1bf3936e4f7e4618");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "b115777f1ee7a43a07daa6401e59c46b7a98213a8747eabfbe3ca4ec93524de2c7");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "1e92cd20da08bb5fa174a7a69879d4fc25a155e6af06d75b26c5b450d273c8bb7e3a889dd4a9589098b44a"
+            + "cf1056e7aa");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return null;
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES192GCMNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES192GCMNoPaddingCipherTest.java
new file mode 100644
index 0000000..66b37d3
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES192GCMNoPaddingCipherTest.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES192GCMNoPaddingCipherTest extends AESGCMNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "21339fc1d011abca65d50ce2365230603fd47d07e8830f6e");
+    private static final byte[] KAT_IV = HexEncoding.decode("d5fb1469a8d81dd75286a418");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "cf776dedf53a828d51a0073db3ef0dd1ee19e2e9e243ce97e95841bb9ad4e3ff52");
+    private static final byte[] KAT_CIPHERTEXT_WITHOUT_AAD = HexEncoding.decode(
+            "3a0d48278111d3296bc663df8a5dbeb2474ea47fd85b608f8d9375d9dcf7de1413ad70fb0e1970669095ad"
+            + "77ebb5974ae8");
+    private static final byte[] KAT_AAD = HexEncoding.decode(
+            "04cdc1d840c17dcfccf78b3d792463740ce0bfdc167b98a632e144cafe9663");
+    private static final byte[] KAT_CIPHERTEXT_WITH_AAD = HexEncoding.decode(
+            "3a0d48278111d3296bc663df8a5dbeb2474ea47fd85b608f8d9375d9dcf7de141380718b9f6c023fb091c7"
+            + "6891a91683e2");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT_WITHOUT_AAD.clone();
+    }
+
+    @Override
+    protected byte[] getKatAad() {
+        return KAT_AAD.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertextWhenKatAadPresent() {
+        return KAT_CIPHERTEXT_WITH_AAD.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES256CBCNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES256CBCNoPaddingCipherTest.java
new file mode 100644
index 0000000..b6620ef
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES256CBCNoPaddingCipherTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES256CBCNoPaddingCipherTest extends AESCBCNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "dd2f20dc6b98c100bac919120ff95eb5d96003f8229987b283a1e777b0cd5c30");
+    private static final byte[] KAT_IV = HexEncoding.decode("23b4d85239fb90db93b07a981e90a170");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "2fbe5d46dca5cea433e550d8b291740ab9551c2a2d37680d7fb7b993225f58494cb53caca353e4b637ba05"
+            + "687be20f8d");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "5aba24fc316936c8369061ee8fe463e4faed04288e204456626b988c0e376b6047da1e4fd7c4e1cf265609"
+            + "7f75ae8685");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES256CBCPKCS7PaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES256CBCPKCS7PaddingCipherTest.java
new file mode 100644
index 0000000..6613463
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES256CBCPKCS7PaddingCipherTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES256CBCPKCS7PaddingCipherTest extends AESCBCPKCS7PaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "03ab2510520f5cfebfab0a17a7f8324c9634911f6fc59e586f85346bb38ac88a");
+    private static final byte[] KAT_IV = HexEncoding.decode("9af96967195bb0184f129beffa8241ae");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "2d6944653ac14988a772a2730b7c5bfa99a21732ae26f40cdc5b3a2874c7942545a82b73c48078b9dae622"
+            + "61c65909");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "26b308f7e1668b55705a79c8b3ad10e244655f705f027f390a5c34e4536f519403a71987b95124073d69f2"
+            + "a3cb95b0ab");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES256CTRNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES256CTRNoPaddingCipherTest.java
new file mode 100644
index 0000000..bdcff41
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES256CTRNoPaddingCipherTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES256CTRNoPaddingCipherTest extends AESCTRNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "928b380a8fed4b4b4cfeb56e0c66a4cb0f9ff58d61ac68bcfd0e3fbd910a684f");
+    private static final byte[] KAT_IV = HexEncoding.decode("0b678a5249e6eeda461dfb4776b6c58e");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "f358de57543b297e997cba46fb9100553d6abd65377e55b9aac3006400ead11f6db3c884");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "a07a35fbd1776ad81462e1935f542337add60962bf289249476817b6ddd532a7be30d4c3");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES256ECBNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES256ECBNoPaddingCipherTest.java
new file mode 100644
index 0000000..847a767
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES256ECBNoPaddingCipherTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES256ECBNoPaddingCipherTest extends AESECBNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "fa4622d9cf6485075daedd33d2c4fffdf859e2edb7f7df4f04603f7e647fae90");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "96ccabbe0c68970d8cdee2b30ab43c2d61cc50ee68271e77571e72478d713a31a476d6806b8116089c6ec5"
+            + "0bb543200f");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "0e81839e9dfbfe3b503d619e676abe5ac80fac3f245d8f09b9134b1b32a67dc83e377faf246288931136be"
+            + "f2a07c0be4");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return null;
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES256ECBPKCS7PaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES256ECBPKCS7PaddingCipherTest.java
new file mode 100644
index 0000000..0faffe9
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES256ECBPKCS7PaddingCipherTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES256ECBPKCS7PaddingCipherTest extends AESECBPKCS7PaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "bf3f07c68467fead0ca8e2754500ab514258abf02eb7e615a493bcaaa45d5ee1");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "af0757e49018dad628f16998628a407db5f28291bef3bc2e4d8a5a31fb238e6f");
+    private static final byte[] KAT_CIPHERTEXT = HexEncoding.decode(
+            "21ec3011074bf1ef140643d47130326c5e183f61237c69bc77551ca207d71fc2b90cfac6c8d2d125e5cd9f"
+            + "f353dee0df");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return null;
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AES256GCMNoPaddingCipherTest.java b/tests/tests/keystore/src/android/keystore/cts/AES256GCMNoPaddingCipherTest.java
new file mode 100644
index 0000000..971e610
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/AES256GCMNoPaddingCipherTest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+public class AES256GCMNoPaddingCipherTest extends AESGCMNoPaddingCipherTestBase {
+
+    private static final byte[] KAT_KEY = HexEncoding.decode(
+            "7972140d831eedac75d5ea515c9a4c3bb124499a90b5f317ac1a685e88fae395");
+    private static final byte[] KAT_IV = HexEncoding.decode("a66c5252808d823dd4151fed");
+    private static final byte[] KAT_PLAINTEXT = HexEncoding.decode(
+            "c2b9dabf3a55adaa94e8c0d1e77a84a3435aee23b2c3c4abb587b09a9c2afbf0");
+    private static final byte[] KAT_CIPHERTEXT_WITHOUT_AAD = HexEncoding.decode(
+            "a960619314657b2afb96b93bebb372bffd09e19d53e351f17d1ba2611f9dc33c9c92d563e8fd381254ac26"
+            + "2aa2a4ea0d");
+    private static final byte[] KAT_AAD = HexEncoding.decode(
+            "3727229db7a3ccda7283f628fb8a3cdf093ea1f4e8bd1bc40a830fc6df6fb0e249845dd7d449b2bc3b5ba4"
+            + "2258fb92c7");
+    private static final byte[] KAT_CIPHERTEXT_WITH_AAD = HexEncoding.decode(
+            "a960619314657b2afb96b93bebb372bffd09e19d53e351f17d1ba2611f9dc33c1501caa6cca0a281f42bc3"
+            + "10d1e4488f");
+
+    @Override
+    protected byte[] getKatKey() {
+        return KAT_KEY.clone();
+    }
+
+    @Override
+    protected byte[] getKatIv() {
+        return KAT_IV.clone();
+    }
+
+    @Override
+    protected byte[] getKatPlaintext() {
+        return KAT_PLAINTEXT.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertext() {
+        return KAT_CIPHERTEXT_WITHOUT_AAD.clone();
+    }
+
+    @Override
+    protected byte[] getKatAad() {
+        return KAT_AAD.clone();
+    }
+
+    @Override
+    protected byte[] getKatCiphertextWhenKatAadPresent() {
+        return KAT_CIPHERTEXT_WITH_AAD.clone();
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/AESCipherNistCavpKatTest.java b/tests/tests/keystore/src/android/keystore/cts/AESCipherNistCavpKatTest.java
index 520b54d..1f6ebd7 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AESCipherNistCavpKatTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AESCipherNistCavpKatTest.java
@@ -19,7 +19,6 @@
 import android.security.keystore.KeyProperties;
 import android.security.keystore.KeyProtection;
 import android.test.AndroidTestCase;
-import android.util.Log;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
@@ -28,7 +27,6 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.security.KeyStore;
-import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -40,58 +38,142 @@
 
 public class AESCipherNistCavpKatTest extends AndroidTestCase {
 
-    private static final String TAG = AESCipherNistCavpKatTest.class.getSimpleName();
+    public void testECBVarKey128() throws Exception {
+        runTestsForKatFile("ECBVarKey128.rsp");
+    }
 
-    public void testSomething() throws Exception {
+    public void testECBVarKey192() throws Exception {
+        runTestsForKatFile("ECBVarKey192.rsp");
+    }
+    public void testECBVarKey256() throws Exception {
+        runTestsForKatFile("ECBVarKey256.rsp");
+    }
+
+    public void testECBVarTxt128() throws Exception {
+        runTestsForKatFile("ECBVarTxt128.rsp");
+    }
+
+    public void testECBVarTxt192() throws Exception {
+        runTestsForKatFile("ECBVarTxt192.rsp");
+    }
+
+    public void testECBVarTxt256() throws Exception {
+        runTestsForKatFile("ECBVarTxt256.rsp");
+    }
+
+    public void testECBGFSbox128() throws Exception {
+        runTestsForKatFile("ECBGFSbox128.rsp");
+    }
+
+    public void testECBGFSbox192() throws Exception {
+        runTestsForKatFile("ECBGFSbox192.rsp");
+    }
+
+    public void testECBGFSbox256() throws Exception {
+        runTestsForKatFile("ECBGFSbox256.rsp");
+    }
+
+    public void testECBKeySbox128() throws Exception {
+        runTestsForKatFile("ECBKeySbox128.rsp");
+    }
+
+    public void testECBKeySbox192() throws Exception {
+        runTestsForKatFile("ECBKeySbox192.rsp");
+    }
+
+    public void testECBKeySbox256() throws Exception {
+        runTestsForKatFile("ECBKeySbox256.rsp");
+    }
+
+    public void testCBCVarKey128() throws Exception {
+        runTestsForKatFile("CBCVarKey128.rsp");
+    }
+
+    public void testCBCVarKey192() throws Exception {
+        runTestsForKatFile("CBCVarKey192.rsp");
+    }
+    public void testCBCVarKey256() throws Exception {
+        runTestsForKatFile("CBCVarKey256.rsp");
+    }
+
+    public void testCBCVarTxt128() throws Exception {
+        runTestsForKatFile("CBCVarTxt128.rsp");
+    }
+
+    public void testCBCVarTxt192() throws Exception {
+        runTestsForKatFile("CBCVarTxt192.rsp");
+    }
+
+    public void testCBCVarTxt256() throws Exception {
+        runTestsForKatFile("CBCVarTxt256.rsp");
+    }
+
+    public void testCBCGFSbox128() throws Exception {
+        runTestsForKatFile("CBCGFSbox128.rsp");
+    }
+
+    public void testCBCGFSbox192() throws Exception {
+        runTestsForKatFile("CBCGFSbox192.rsp");
+    }
+
+    public void testCBCGFSbox256() throws Exception {
+        runTestsForKatFile("CBCGFSbox256.rsp");
+    }
+
+    public void testCBCKeySbox128() throws Exception {
+        runTestsForKatFile("CBCKeySbox128.rsp");
+    }
+
+    public void testCBCKeySbox192() throws Exception {
+        runTestsForKatFile("CBCKeySbox192.rsp");
+    }
+
+    public void testCBCKeySbox256() throws Exception {
+        runTestsForKatFile("CBCKeySbox256.rsp");
+    }
+
+    private void runTestsForKatFile(String fileName) throws Exception {
         try (ZipInputStream zipIn = new ZipInputStream(
                 getContext().getResources().getAssets().open("nist_cavp_aes_kat.zip"))) {
             ZipEntry zipEntry;
+            byte[] entryContents = null;
             while ((zipEntry = zipIn.getNextEntry()) != null) {
                 String entryName = zipEntry.getName();
-                if (!entryName.endsWith(".rsp")) {
-                    continue;
-                }
 
-                if (zipEntry.getSize() > 1024 * 1024) {
-                    fail("Entry " + entryName + " too large: " + zipEntry.getSize() + " bytes");
-                }
-                byte[] entryContents = new byte[(int) zipEntry.getSize()];
+                // We have to read the contents of all entries because there's no way to skip an
+                // entry without reading its contents.
+                entryContents = new byte[(int) zipEntry.getSize()];
                 readFully(zipIn, entryContents);
-                runTestsForKatFile(entryName, entryContents);
+
+                if (fileName.equals(entryName)) {
+                    break;
+                }
             }
+
+            if (entryContents == null) {
+                fail(fileName + " not found");
+                return;
+            }
+
+            String blockMode = fileName.substring(0, 3);
+            if ("CFB".equals(blockMode)) {
+                blockMode = fileName.substring(0, 4);
+            }
+            runTestsForKatFile(blockMode, entryContents);
         }
     }
 
-    private void runTestsForKatFile(String fileName, byte[] contents) throws Exception {
-        if ((!fileName.endsWith(".rsp")) || (fileName.length() < 10)) {
-            Log.i(TAG, "Ignoring " + fileName + " -- not a KAT file");
-            return;
-        }
-        String mode = fileName.substring(0, 3);
-        if ("CFB".equals(mode)) {
-            mode = fileName.substring(0, 4);
-        }
-        try {
-            Cipher.getInstance("AES/" + mode + "/NoPadding", "AndroidKeyStoreBCWorkaround");
-        } catch (NoSuchAlgorithmException e) {
-            if (("CBC".equals(mode)) || ("ECB".equals(mode))) {
-                fail("Supported mode is apparently not supported: " + mode);
-            }
-            Log.i(TAG, "Skipping " + fileName
-                    + " -- transformation not supported by AndroidKeyStore");
-            return;
-        }
-
+    private void runTestsForKatFile(String blockMode, byte[] fileContents) throws Exception {
         BufferedReader in = null;
+        int testNumber = 0;
         try {
             in = new BufferedReader(new InputStreamReader(
-                    new ByteArrayInputStream(contents), "ISO-8859-1"));
+                    new ByteArrayInputStream(fileContents), "ISO-8859-1"));
             String line;
             int lineNumber = 0;
             String section = null; // ENCRYPT or DECRYPT
 
             boolean insideTestDefinition = false;
-            int testNumber = 0;
             TestVector testVector = null;
 
             while ((line = in.readLine()) != null) {
@@ -145,8 +227,7 @@
                         } else {
                             throw new IOException("Unexpected test operation: " + section);
                         }
-                        Log.d(TAG, "Running test #" + testNumber + ": AES/" + mode + " from " + fileName);
-                        runKatTest(mode, encrypt, testVector);
+                        runKatTest(blockMode, encrypt, testVector);
                         insideTestDefinition = false;
                         testVector = null;
                     } else {
@@ -174,6 +255,8 @@
                     }
                 }
             }
+        } catch (Throwable e) {
+            throw new RuntimeException("Test #" + testNumber + " failed", e);
         } finally {
             if (in != null) {
                 try {
@@ -225,7 +308,7 @@
         while (remaining > 0) {
             int chunkSize = in.read(buf, offset, remaining);
             if (chunkSize == -1) {
-                throw new EOFException("Premature EOF. Remainig: " + remaining);
+                throw new EOFException("Premature EOF. Remaining: " + remaining);
             }
             offset += chunkSize;
             remaining -= chunkSize;
diff --git a/tests/tests/keystore/src/android/keystore/cts/AESECBCipherTestBase.java b/tests/tests/keystore/src/android/keystore/cts/AESECBCipherTestBase.java
index 5ecf22f..b2752dc 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AESECBCipherTestBase.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AESECBCipherTestBase.java
@@ -54,4 +54,8 @@
         }
         return null;
     }
+
+    public void testInitRejectsIvParameterSpec() throws Exception {
+        assertInitRejectsIvParameterSpec(new byte[getBlockSize()]);
+    }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/AESGCMCipherTestBase.java b/tests/tests/keystore/src/android/keystore/cts/AESGCMCipherTestBase.java
index d901674..1c3404a 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AESGCMCipherTestBase.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AESGCMCipherTestBase.java
@@ -16,14 +16,21 @@
 
 package android.keystore.cts;
 
+import java.nio.ByteBuffer;
 import java.security.AlgorithmParameters;
+import java.security.Key;
 import java.security.spec.AlgorithmParameterSpec;
 import java.security.spec.InvalidParameterSpecException;
 
+import javax.crypto.AEADBadTagException;
+import javax.crypto.Cipher;
 import javax.crypto.spec.GCMParameterSpec;
 
 abstract class AESGCMCipherTestBase extends BlockCipherTestBase {
 
+    protected abstract byte[] getKatAad();
+    protected abstract byte[] getKatCiphertextWhenKatAadPresent();
+
     @Override
     protected boolean isStreamCipher() {
         return true;
@@ -54,4 +61,148 @@
         GCMParameterSpec spec = params.getParameterSpec(GCMParameterSpec.class);
         return spec.getIV();
     }
+
+    public void testKatEncryptWithAadProvidedInOneGo() throws Exception {
+        createCipher();
+        assertKatTransformWithAadProvidedInOneGo(
+                Cipher.ENCRYPT_MODE,
+                getKatAad(),
+                getKatPlaintext(),
+                getKatCiphertextWhenKatAadPresent());
+    }
+
+    public void testKatDecryptWithAadProvidedInOneGo() throws Exception {
+        createCipher();
+        assertKatTransformWithAadProvidedInOneGo(
+                Cipher.DECRYPT_MODE,
+                getKatAad(),
+                getKatCiphertextWhenKatAadPresent(),
+                getKatPlaintext());
+    }
+
+    public void testKatEncryptWithAadProvidedInChunks() throws Exception {
+        createCipher();
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.ENCRYPT_MODE,
+                getKatAad(),
+                getKatPlaintext(),
+                getKatCiphertextWhenKatAadPresent(),
+                1);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.ENCRYPT_MODE,
+                getKatAad(),
+                getKatPlaintext(),
+                getKatCiphertextWhenKatAadPresent(),
+                8);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.ENCRYPT_MODE,
+                getKatAad(),
+                getKatPlaintext(),
+                getKatCiphertextWhenKatAadPresent(),
+                3);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.ENCRYPT_MODE,
+                getKatAad(),
+                getKatPlaintext(),
+                getKatCiphertextWhenKatAadPresent(),
+                7);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.ENCRYPT_MODE,
+                getKatAad(),
+                getKatPlaintext(),
+                getKatCiphertextWhenKatAadPresent(),
+                23);
+    }
+
+    public void testKatDecryptWithAadProvidedInChunks() throws Exception {
+        createCipher();
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.DECRYPT_MODE,
+                getKatAad(),
+                getKatCiphertextWhenKatAadPresent(),
+                getKatPlaintext(),
+                1);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.DECRYPT_MODE,
+                getKatAad(),
+                getKatCiphertextWhenKatAadPresent(),
+                getKatPlaintext(),
+                8);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.DECRYPT_MODE,
+                getKatAad(),
+                getKatCiphertextWhenKatAadPresent(),
+                getKatPlaintext(),
+                3);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.DECRYPT_MODE,
+                getKatAad(),
+                getKatCiphertextWhenKatAadPresent(),
+                getKatPlaintext(),
+                7);
+        assertKatTransformWithAadProvidedInChunks(
+                Cipher.DECRYPT_MODE,
+                getKatAad(),
+                getKatCiphertextWhenKatAadPresent(),
+                getKatPlaintext(),
+                23);
+    }
+
+    private void assertKatTransformWithAadProvidedInOneGo(int opmode,
+            byte[] aad, byte[] input, byte[] expectedOutput) throws Exception {
+        initKat(opmode);
+        updateAAD(aad);
+        assertEquals(expectedOutput, doFinal(input));
+
+        initKat(opmode);
+        updateAAD(aad, 0, aad.length);
+        assertEquals(expectedOutput, doFinal(input));
+
+        initKat(opmode);
+        updateAAD(ByteBuffer.wrap(aad));
+        assertEquals(expectedOutput, doFinal(input));
+    }
+
+    private void assertKatTransformWithAadProvidedInChunks(int opmode,
+            byte[] aad, byte[] input, byte[] expectedOutput, int maxChunkSize) throws Exception {
+        createCipher();
+        initKat(opmode);
+        int aadOffset = 0;
+        while (aadOffset < aad.length) {
+            int chunkSize = Math.min(aad.length - aadOffset, maxChunkSize);
+            updateAAD(aad, aadOffset, chunkSize);
+            aadOffset += chunkSize;
+        }
+        assertEquals(expectedOutput, doFinal(input));
+    }
+
+    public void testCiphertextBitflipDetectedWhenDecrypting() throws Exception {
+        createCipher();
+        Key key = importKey(getKatKey());
+        byte[] ciphertext = getKatCiphertext();
+        ciphertext[ciphertext.length / 2] ^= 0x40;
+        init(Cipher.DECRYPT_MODE, key, getKatAlgorithmParameterSpec());
+        try {
+            doFinal(ciphertext);
+            fail();
+        } catch (AEADBadTagException expected) {}
+    }
+
+    public void testAadBitflipDetectedWhenDecrypting() throws Exception {
+        createCipher();
+        Key key = importKey(getKatKey());
+        byte[] ciphertext = getKatCiphertextWhenKatAadPresent();
+        byte[] aad = getKatCiphertext();
+        aad[aad.length / 3] ^= 0x2;
+        init(Cipher.DECRYPT_MODE, key, getKatAlgorithmParameterSpec());
+        updateAAD(aad);
+        try {
+            doFinal(ciphertext);
+            fail();
+        } catch (AEADBadTagException expected) {}
+    }
+
+    public void testInitRejectsIvParameterSpec() throws Exception {
+        assertInitRejectsIvParameterSpec(getKatIv());
+    }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
index 841bdab..5fe3505 100644
--- a/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/AndroidKeyStoreTest.java
@@ -62,7 +62,6 @@
 import javax.crypto.Cipher;
 import javax.crypto.Mac;
 import javax.crypto.SecretKey;
-import javax.crypto.spec.SecretKeySpec;
 import javax.security.auth.x500.X500Principal;
 
 public class AndroidKeyStoreTest extends AndroidTestCase {
@@ -1888,7 +1887,7 @@
                 0x00, 0x05, (byte) 0xAA, (byte) 0x0A5, (byte) 0xFF, 0x55, 0x0A
         };
 
-        SecretKey expectedSecret = new SecretKeySpec(expectedKey, "AES");
+        SecretKey expectedSecret = new TransparentSecretKey(expectedKey, "AES");
 
         byte[] wrappedExpected = c.wrap(expectedSecret);
 
@@ -2009,9 +2008,9 @@
         Signature.getInstance("NONEwithECDSA").initVerify(publicKey);
     }
 
-    private static final int MIN_SUPPORTED_KEY_COUNT = 2000;
+    private static final int MIN_SUPPORTED_KEY_COUNT = 1500;
     private static final long MINUTE_IN_MILLIS = 1000 * 60;
-    private static final long LARGE_NUMBER_OF_KEYS_TEST_MAX_DURATION_MILLIS = 3 * MINUTE_IN_MILLIS;
+    private static final long LARGE_NUMBER_OF_KEYS_TEST_MAX_DURATION_MILLIS = 2 * MINUTE_IN_MILLIS;
 
     private static boolean isDeadlineReached(long startTimeMillis, long durationMillis) {
         long nowMillis = System.currentTimeMillis();
@@ -2072,6 +2071,7 @@
                     throw new RuntimeException("Entry " + entryAlias + " import failed", e);
                 }
             }
+            Log.i(TAG, "Imported " + latestImportedEntryNumber + " keys");
             if (latestImportedEntryNumber < MIN_SUPPORTED_KEY_COUNT) {
                 fail("Failed to import " + MIN_SUPPORTED_KEY_COUNT + " keys in "
                         + (System.currentTimeMillis() - testStartTimeMillis)
@@ -2108,9 +2108,14 @@
         } finally {
             // Clean up Keystore without using KeyStore.aliases() which can't handle this many
             // entries.
+            Log.i(TAG, "Deleting imported keys");
             for (int i = 0; i <= latestImportedEntryNumber; i++) {
+                if ((i > 0) && ((i % 1000) == 0)) {
+                    Log.i(TAG, "Deleted " + i + " keys");
+                }
                 mKeyStore.deleteEntry("test" + i);
             }
+            Log.i(TAG, "Deleted " + (latestImportedEntryNumber + 1) + " keys");
         }
     }
 
@@ -2164,6 +2169,7 @@
                     throw new RuntimeException("Entry " + entryAlias + " import failed", e);
                 }
             }
+            Log.i(TAG, "Imported " + latestImportedEntryNumber + " keys");
             if (latestImportedEntryNumber < MIN_SUPPORTED_KEY_COUNT) {
                 fail("Failed to import " + MIN_SUPPORTED_KEY_COUNT + " keys in "
                         + (System.currentTimeMillis() - testStartTimeMillis)
@@ -2200,9 +2206,14 @@
         } finally {
             // Clean up Keystore without using KeyStore.aliases() which can't handle this many
             // entries.
+            Log.i(TAG, "Deleting imported keys");
             for (int i = 0; i <= latestImportedEntryNumber; i++) {
+                if ((i > 0) && ((i % 1000) == 0)) {
+                    Log.i(TAG, "Deleted " + i + " keys");
+                }
                 mKeyStore.deleteEntry("test" + i);
             }
+            Log.i(TAG, "Deleted " + (latestImportedEntryNumber + 1) + " keys");
         }
     }
 
@@ -2219,15 +2230,15 @@
 
         long testStartTimeMillis = System.currentTimeMillis();
 
-        SecretKey key1 =
-                new SecretKeySpec(HexEncoding.decode("010203040506070809fafbfcfdfeffcc"), "AES");
+        SecretKey key1 = new TransparentSecretKey(
+                HexEncoding.decode("010203040506070809fafbfcfdfeffcc"), "AES");
         String entryName1 = "test0";
 
-        SecretKey key2 =
-                new SecretKeySpec(HexEncoding.decode("808182838485868788897a7b7c7d7e7f"), "AES");
+        SecretKey key2 = new TransparentSecretKey(
+                HexEncoding.decode("808182838485868788897a7b7c7d7e7f"), "AES");
 
-        SecretKey key3 =
-                new SecretKeySpec(HexEncoding.decode("33333333333333333333777777777777"), "AES");
+        SecretKey key3 = new TransparentSecretKey(
+                HexEncoding.decode("33333333333333333333777777777777"), "AES");
 
         mKeyStore.load(null);
         int latestImportedEntryNumber = 0;
@@ -2254,6 +2265,7 @@
                     throw new RuntimeException("Entry " + entryAlias + " import failed", e);
                 }
             }
+            Log.i(TAG, "Imported " + latestImportedEntryNumber + " keys");
             if (latestImportedEntryNumber < MIN_SUPPORTED_KEY_COUNT) {
                 fail("Failed to import " + MIN_SUPPORTED_KEY_COUNT + " keys in "
                         + (System.currentTimeMillis() - testStartTimeMillis)
@@ -2285,9 +2297,14 @@
         } finally {
             // Clean up Keystore without using KeyStore.aliases() which can't handle this many
             // entries.
+            Log.i(TAG, "Deleting imported keys");
             for (int i = 0; i <= latestImportedEntryNumber; i++) {
+                if ((i > 0) && ((i % 1000) == 0)) {
+                    Log.i(TAG, "Deleted " + i + " keys");
+                }
                 mKeyStore.deleteEntry("test" + i);
             }
+            Log.i(TAG, "Deleted " + (latestImportedEntryNumber + 1) + " keys");
         }
     }
 
@@ -2304,14 +2321,14 @@
 
         long testStartTimeMillis = System.currentTimeMillis();
 
-        SecretKey key1 = new SecretKeySpec(
+        SecretKey key1 = new TransparentSecretKey(
                 HexEncoding.decode("010203040506070809fafbfcfdfeffcc"), "HmacSHA256");
         String entryName1 = "test0";
 
-        SecretKey key2 = new SecretKeySpec(
+        SecretKey key2 = new TransparentSecretKey(
                 HexEncoding.decode("808182838485868788897a7b7c7d7e7f"), "HmacSHA256");
 
-        SecretKey key3 = new SecretKeySpec(
+        SecretKey key3 = new TransparentSecretKey(
                 HexEncoding.decode("33333333333333333333777777777777"), "HmacSHA256");
 
         mKeyStore.load(null);
@@ -2337,6 +2354,7 @@
                     throw new RuntimeException("Entry " + entryAlias + " import failed", e);
                 }
             }
+            Log.i(TAG, "Imported " + latestImportedEntryNumber + " keys");
             if (latestImportedEntryNumber < MIN_SUPPORTED_KEY_COUNT) {
                 fail("Failed to import " + MIN_SUPPORTED_KEY_COUNT + " keys in "
                         + (System.currentTimeMillis() - testStartTimeMillis)
@@ -2366,9 +2384,193 @@
         } finally {
             // Clean up Keystore without using KeyStore.aliases() which can't handle this many
             // entries.
+            Log.i(TAG, "Deleting imported keys");
             for (int i = 0; i <= latestImportedEntryNumber; i++) {
+                if ((i > 0) && ((i % 1000) == 0)) {
+                    Log.i(TAG, "Deleted " + i + " keys");
+                }
                 mKeyStore.deleteEntry("test" + i);
             }
+            Log.i(TAG, "Deleted " + (latestImportedEntryNumber + 1) + " keys");
+        }
+    }
+
+    public void testKeyStore_OnlyOneDigestCanBeAuthorized_HMAC() throws Exception {
+        mKeyStore.load(null);
+
+        for (String algorithm : KeyGeneratorTest.EXPECTED_ALGORITHMS) {
+            if (!TestUtils.isHmacAlgorithm(algorithm)) {
+                continue;
+            }
+            try {
+                String digest = TestUtils.getHmacAlgorithmDigest(algorithm);
+                assertNotNull(digest);
+                SecretKey keyBeingImported = new TransparentSecretKey(new byte[16], algorithm);
+
+                KeyProtection.Builder goodSpec =
+                        new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN);
+
+                // Digests authorization not specified in import parameters
+                assertFalse(goodSpec.build().isDigestsSpecified());
+                mKeyStore.setEntry(TEST_ALIAS_1,
+                        new KeyStore.SecretKeyEntry(keyBeingImported),
+                        goodSpec.build());
+                SecretKey key = (SecretKey) mKeyStore.getKey(TEST_ALIAS_1, null);
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(TestUtils.getKeyInfo(key).getDigests()), digest);
+
+                // The same digest is specified in import parameters
+                mKeyStore.setEntry(TEST_ALIAS_1,
+                        new KeyStore.SecretKeyEntry(keyBeingImported),
+                        TestUtils.buildUpon(goodSpec).setDigests(digest).build());
+                key = (SecretKey) mKeyStore.getKey(TEST_ALIAS_1, null);
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(TestUtils.getKeyInfo(key).getDigests()), digest);
+
+                // Empty set of digests specified in import parameters
+                try {
+                    mKeyStore.setEntry(TEST_ALIAS_1,
+                            new KeyStore.SecretKeyEntry(keyBeingImported),
+                            TestUtils.buildUpon(goodSpec).setDigests().build());
+                    fail();
+                } catch (KeyStoreException expected) {}
+
+                // A different digest specified in import parameters
+                String anotherDigest = "SHA-256".equalsIgnoreCase(digest) ? "SHA-384" : "SHA-256";
+                try {
+                    mKeyStore.setEntry(TEST_ALIAS_1,
+                            new KeyStore.SecretKeyEntry(keyBeingImported),
+                            TestUtils.buildUpon(goodSpec).setDigests(anotherDigest).build());
+                    fail();
+                } catch (KeyStoreException expected) {}
+                try {
+                    mKeyStore.setEntry(TEST_ALIAS_1,
+                            new KeyStore.SecretKeyEntry(keyBeingImported),
+                            TestUtils.buildUpon(goodSpec)
+                                    .setDigests(digest, anotherDigest)
+                                    .build());
+                    fail();
+                } catch (KeyStoreException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testKeyStore_ImportSupportedSizes_AES() throws Exception {
+        mKeyStore.load(null);
+
+        KeyProtection params = new KeyProtection.Builder(
+                KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
+                .build();
+        String alias = "test1";
+        mKeyStore.deleteEntry(alias);
+        assertFalse(mKeyStore.containsAlias(alias));
+        for (int keySizeBytes = 0; keySizeBytes <= 512 / 8; keySizeBytes++) {
+            int keySizeBits = keySizeBytes * 8;
+            try {
+                KeyStore.SecretKeyEntry entry = new KeyStore.SecretKeyEntry(
+                        new TransparentSecretKey(new byte[keySizeBytes], "AES"));
+                if (TestUtils.contains(KeyGeneratorTest.AES_SUPPORTED_KEY_SIZES, keySizeBits)) {
+                    mKeyStore.setEntry(alias, entry, params);
+                    SecretKey key = (SecretKey) mKeyStore.getKey(alias, null);
+                    assertEquals("AES", key.getAlgorithm());
+                    assertEquals(keySizeBits, TestUtils.getKeyInfo(key).getKeySize());
+                } else {
+                    mKeyStore.deleteEntry(alias);
+                    assertFalse(mKeyStore.containsAlias(alias));
+                    try {
+                        mKeyStore.setEntry(alias, entry, params);
+                        fail();
+                    } catch (KeyStoreException expected) {}
+                    assertFalse(mKeyStore.containsAlias(alias));
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key size " + keySizeBits, e);
+            }
+        }
+    }
+
+    public void testKeyStore_ImportSupportedSizes_HMAC() throws Exception {
+        mKeyStore.load(null);
+
+        KeyProtection params = new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN).build();
+        String alias = "test1";
+        mKeyStore.deleteEntry(alias);
+        assertFalse(mKeyStore.containsAlias(alias));
+        for (String algorithm : KeyGeneratorTest.EXPECTED_ALGORITHMS) {
+            if (!TestUtils.isHmacAlgorithm(algorithm)) {
+                continue;
+            }
+            for (int keySizeBytes = 0; keySizeBytes <= 1024 / 8; keySizeBytes++) {
+                try {
+                    KeyStore.SecretKeyEntry entry = new KeyStore.SecretKeyEntry(
+                            new TransparentSecretKey(new byte[keySizeBytes], algorithm));
+                    if (keySizeBytes > 0) {
+                        mKeyStore.setEntry(alias, entry, params);
+                        SecretKey key = (SecretKey) mKeyStore.getKey(alias, null);
+                        assertEquals(algorithm, key.getAlgorithm());
+                        assertEquals(keySizeBytes * 8, TestUtils.getKeyInfo(key).getKeySize());
+                    } else {
+                        mKeyStore.deleteEntry(alias);
+                        assertFalse(mKeyStore.containsAlias(alias));
+                        try {
+                            mKeyStore.setEntry(alias, entry, params);
+                            fail();
+                        } catch (KeyStoreException expected) {}
+                    }
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key size " + (keySizeBytes * 8), e);
+                }
+            }
+        }
+    }
+
+    public void testKeyStore_ImportSupportedSizes_EC() throws Exception {
+        mKeyStore.load(null);
+        KeyProtection params =
+                TestUtils.getMinimalWorkingImportParametersForSigningingWith("SHA256withECDSA");
+        checkKeyPairImportSucceeds(
+                "secp224r1", R.raw.ec_key3_secp224r1_pkcs8, R.raw.ec_key3_secp224r1_cert, params);
+        checkKeyPairImportSucceeds(
+                "secp256r1", R.raw.ec_key4_secp256r1_pkcs8, R.raw.ec_key4_secp256r1_cert, params);
+        checkKeyPairImportSucceeds(
+                "secp384r1", R.raw.ec_key5_secp384r1_pkcs8, R.raw.ec_key5_secp384r1_cert, params);
+        checkKeyPairImportSucceeds(
+                "secp512r1", R.raw.ec_key6_secp521r1_pkcs8, R.raw.ec_key6_secp521r1_cert, params);
+    }
+
+    public void testKeyStore_ImportSupportedSizes_RSA() throws Exception {
+        mKeyStore.load(null);
+        KeyProtection params =
+                TestUtils.getMinimalWorkingImportParametersForSigningingWith("SHA256withRSA");
+        checkKeyPairImportSucceeds(
+                "512", R.raw.rsa_key5_512_pkcs8, R.raw.rsa_key5_512_cert, params);
+        checkKeyPairImportSucceeds(
+                "768", R.raw.rsa_key6_768_pkcs8, R.raw.rsa_key6_768_cert, params);
+        checkKeyPairImportSucceeds(
+                "1024", R.raw.rsa_key3_1024_pkcs8, R.raw.rsa_key3_1024_cert, params);
+        checkKeyPairImportSucceeds(
+                "2048", R.raw.rsa_key8_2048_pkcs8, R.raw.rsa_key8_2048_cert, params);
+        checkKeyPairImportSucceeds(
+                "3072", R.raw.rsa_key7_3072_pksc8, R.raw.rsa_key7_3072_cert, params);
+        checkKeyPairImportSucceeds(
+                "4096", R.raw.rsa_key4_4096_pkcs8, R.raw.rsa_key4_4096_cert, params);
+    }
+
+    private void checkKeyPairImportSucceeds(
+            String alias, int privateResId, int certResId, KeyProtection params) throws Exception {
+        try {
+            mKeyStore.deleteEntry(alias);
+            TestUtils.importIntoAndroidKeyStore(
+                    alias, getContext(), privateResId, certResId, params);
+        } catch (Throwable e) {
+            throw new RuntimeException("Failed for " + alias, e);
+        } finally {
+            try {
+                mKeyStore.deleteEntry(alias);
+            } catch (Exception ignored) {}
         }
     }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/BlockCipherTestBase.java b/tests/tests/keystore/src/android/keystore/cts/BlockCipherTestBase.java
index 398d373..197adc2 100644
--- a/tests/tests/keystore/src/android/keystore/cts/BlockCipherTestBase.java
+++ b/tests/tests/keystore/src/android/keystore/cts/BlockCipherTestBase.java
@@ -45,6 +45,7 @@
 import javax.crypto.NoSuchPaddingException;
 import javax.crypto.SecretKey;
 import javax.crypto.ShortBufferException;
+import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
 
 abstract class BlockCipherTestBase extends AndroidTestCase {
@@ -211,7 +212,6 @@
                     // cause an error. Thus, there's no need to account for its ciphertext.
                 }
                 int actualOutputSize = mCipher.getOutputSize(input);
-                System.out.println("*** buffered: " + buffered + ", input: " + input + ", min: " + minExpectedOutputSize + ", actual: " + actualOutputSize);
                 if (actualOutputSize < minExpectedOutputSize) {
                     fail("getOutputSize(" + input + ") underestimated output size when buffered == "
                             + buffered + ". min expected: <"
@@ -289,7 +289,6 @@
                     minExpectedOutputSize = 0;
                 }
                 int actualOutputSize = mCipher.getOutputSize(input);
-                System.out.println("*** buffered: " + buffered + ", input: " + input + ", min: " + minExpectedOutputSize + ", actual: " + actualOutputSize);
                 if (actualOutputSize < minExpectedOutputSize) {
                     fail("getOutputSize(" + input + ") underestimated output size when buffered == "
                             + buffered + ". min expected: <"
@@ -828,21 +827,33 @@
     }
 
     public void testUpdateAADNotSupported() throws Exception {
-        createCipher();
-        initKat(Cipher.ENCRYPT_MODE);
         if (isAuthenticatedCipher()) {
-            assertUpdateAADSupported();
-        } else {
-            assertUpdateAADNotSupported();
+            // Not applicable to authenticated ciphers where updateAAD is supported.
+            return;
         }
 
         createCipher();
+        initKat(Cipher.ENCRYPT_MODE);
+        assertUpdateAADNotSupported();
+
+        createCipher();
         initKat(Cipher.DECRYPT_MODE);
-        if (isAuthenticatedCipher()) {
-            assertUpdateAADSupported();
-        } else {
-            assertUpdateAADNotSupported();
+        assertUpdateAADNotSupported();
+    }
+
+    public void testUpdateAADSupported() throws Exception {
+        if (!isAuthenticatedCipher()) {
+            // Not applicable to unauthenticated ciphers where updateAAD is not supported.
+            return;
         }
+
+        createCipher();
+        initKat(Cipher.ENCRYPT_MODE);
+        assertUpdateAADSupported();
+
+        createCipher();
+        initKat(Cipher.DECRYPT_MODE);
+        assertUpdateAADSupported();
     }
 
     private void assertUpdateAADNotSupported() throws Exception {
@@ -1235,7 +1246,7 @@
                 subarray(buffer, outputOffsetInBuffer, outputEndIndexInBuffer));
     }
 
-    private void createCipher() throws NoSuchAlgorithmException,
+    protected void createCipher() throws NoSuchAlgorithmException,
             NoSuchPaddingException  {
         mCipher = Cipher.getInstance(getTransformation());
     }
@@ -1279,7 +1290,7 @@
         return importKey(getKatKey());
     }
 
-    private SecretKey importKey(byte[] keyMaterial) {
+    protected SecretKey importKey(byte[] keyMaterial) {
         try {
             int keyId = mNextKeyId++;
             String keyAlias = "key" + keyId;
@@ -1318,75 +1329,75 @@
         }
     }
 
-    private void initKat(int opmode)
+    protected void initKat(int opmode)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         init(opmode, getKey(), getKatAlgorithmParameterSpec());
     }
 
-    private void init(int opmode, Key key, AlgorithmParameters spec)
+    protected void init(int opmode, Key key, AlgorithmParameters spec)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         mCipher.init(opmode, key, spec);
         mOpmode = opmode;
     }
 
-    private void init(int opmode, Key key, AlgorithmParameters spec, SecureRandom random)
+    protected void init(int opmode, Key key, AlgorithmParameters spec, SecureRandom random)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         mCipher.init(opmode, key, spec, random);
         mOpmode = opmode;
     }
 
-    private void init(int opmode, Key key, AlgorithmParameterSpec spec)
+    protected void init(int opmode, Key key, AlgorithmParameterSpec spec)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         mCipher.init(opmode, key, spec);
         mOpmode = opmode;
     }
 
-    private void init(int opmode, Key key, AlgorithmParameterSpec spec, SecureRandom random)
+    protected void init(int opmode, Key key, AlgorithmParameterSpec spec, SecureRandom random)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
         mCipher.init(opmode, key, spec, random);
         mOpmode = opmode;
     }
 
-    private void init(int opmode, Key key) throws InvalidKeyException {
+    protected void init(int opmode, Key key) throws InvalidKeyException {
         mCipher.init(opmode, key);
         mOpmode = opmode;
     }
 
-    private void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException {
+    protected void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException {
         mCipher.init(opmode, key, random);
         mOpmode = opmode;
     }
 
-    private byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException {
+    protected byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException {
         return mCipher.doFinal();
     }
 
-    private byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException {
+    protected byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException {
         return mCipher.doFinal(input);
     }
 
-    private byte[] doFinal(byte[] input, int inputOffset, int inputLen)
+    protected byte[] doFinal(byte[] input, int inputOffset, int inputLen)
             throws IllegalBlockSizeException, BadPaddingException {
         return mCipher.doFinal(input, inputOffset, inputLen);
     }
 
-    private int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output)
+    protected int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output)
             throws ShortBufferException, IllegalBlockSizeException, BadPaddingException {
         return mCipher.doFinal(input, inputOffset, inputLen, output);
     }
 
-    private int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output,
+    protected int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output,
             int outputOffset) throws ShortBufferException, IllegalBlockSizeException,
             BadPaddingException {
         return mCipher.doFinal(input, inputOffset, inputLen, output, outputOffset);
     }
 
-    private int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException,
+    protected int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException,
             ShortBufferException, BadPaddingException {
         return mCipher.doFinal(output, outputOffset);
     }
 
-    private int doFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException,
+    protected int doFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException,
             IllegalBlockSizeException, BadPaddingException {
         return mCipher.doFinal(input, output);
     }
@@ -1415,21 +1426,21 @@
         }
     }
 
-    private byte[] update(byte[] input) {
+    protected byte[] update(byte[] input) {
         byte[] output = mCipher.update(input);
         assertUpdateOutputSize(
                 (input != null) ? input.length : 0, (output != null) ? output.length : 0);
         return output;
     }
 
-    private byte[] update(byte[] input, int offset, int len) {
+    protected byte[] update(byte[] input, int offset, int len) {
         byte[] output = mCipher.update(input, offset, len);
         assertUpdateOutputSize(len, (output != null) ? output.length : 0);
 
         return output;
     }
 
-    private int update(byte[] input, int offset, int len, byte[] output)
+    protected int update(byte[] input, int offset, int len, byte[] output)
             throws ShortBufferException {
         int outputLen = mCipher.update(input, offset, len, output);
         assertUpdateOutputSize(len, outputLen);
@@ -1437,7 +1448,7 @@
         return outputLen;
     }
 
-    private int update(byte[] input, int offset, int len, byte[] output, int outputOffset)
+    protected int update(byte[] input, int offset, int len, byte[] output, int outputOffset)
             throws ShortBufferException {
         int outputLen = mCipher.update(input, offset, len, output, outputOffset);
         assertUpdateOutputSize(len, outputLen);
@@ -1445,7 +1456,7 @@
         return outputLen;
     }
 
-    private int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException {
+    protected int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException {
         int inputLimitBefore = input.limit();
         int outputLimitBefore = output.limit();
         int inputLen = input.remaining();
@@ -1463,8 +1474,20 @@
         return outputLen;
     }
 
+    protected void updateAAD(byte[] input) {
+        mCipher.updateAAD(input);
+    }
+
+    protected void updateAAD(byte[] input, int offset, int len) {
+        mCipher.updateAAD(input, offset, len);
+    }
+
+    protected void updateAAD(ByteBuffer input) {
+        mCipher.updateAAD(input);
+    }
+
     @SuppressWarnings("unused")
-    private static void assertEquals(Buffer expected, Buffer actual) {
+    protected static void assertEquals(Buffer expected, Buffer actual) {
         throw new RuntimeException(
                 "Comparing ByteBuffers using their .equals is probably not what you want"
                 + " -- use assertByteBufferEquals instead.");
@@ -1474,7 +1497,7 @@
      * Asserts that the position, limit, and capacity of the provided buffers are the same, and that
      * their contents (from position {@code 0} to capacity) are the same.
      */
-    private static void assertByteBufferEquals(ByteBuffer expected, ByteBuffer actual) {
+    protected static void assertByteBufferEquals(ByteBuffer expected, ByteBuffer actual) {
         if (expected == null) {
             if (actual == null) {
                 return;
@@ -1504,7 +1527,7 @@
                         buffer.array(), buffer.arrayOffset(), buffer.capacity()) + "]";
     }
 
-    private static boolean equals(byte[] arr1, int offset1, int len1, byte[] arr2, int offset2,
+    protected static boolean equals(byte[] arr1, int offset1, int len1, byte[] arr2, int offset2,
             int len2) {
         if (arr1 == null) {
             return (arr2 == null);
@@ -1523,13 +1546,13 @@
         }
     }
 
-    private static byte[] subarray(byte[] array, int beginIndex, int endIndex) {
+    protected static byte[] subarray(byte[] array, int beginIndex, int endIndex) {
         byte[] result = new byte[endIndex - beginIndex];
         System.arraycopy(array, beginIndex, result, 0, result.length);
         return result;
     }
 
-    private static byte[] concat(byte[]... arrays) {
+    protected static byte[] concat(byte[]... arrays) {
         int resultLength = 0;
         for (byte[] array : arrays) {
             resultLength += (array != null) ? array.length : 0;
@@ -1546,11 +1569,11 @@
         return result;
     }
 
-    private static void assertEquals(byte[] expected, byte[] actual) {
+    protected static void assertEquals(byte[] expected, byte[] actual) {
         assertEquals(null, expected, actual);
     }
 
-    private static void assertEquals(String message, byte[] expected, byte[] actual) {
+    protected static void assertEquals(String message, byte[] expected, byte[] actual) {
         if (!Arrays.equals(expected, actual)) {
             StringBuilder detail = new StringBuilder();
             if (expected != null) {
@@ -1572,4 +1595,51 @@
             }
         }
     }
+
+    protected final void assertInitRejectsIvParameterSpec(byte[] iv) throws Exception {
+        Key key = importKey(getKatKey());
+        createCipher();
+        IvParameterSpec spec = new IvParameterSpec(iv);
+        try {
+            init(Cipher.ENCRYPT_MODE, key, spec);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+
+        try {
+            init(Cipher.WRAP_MODE, key, spec);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+
+        try {
+            init(Cipher.DECRYPT_MODE, key, spec);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+
+        try {
+            init(Cipher.UNWRAP_MODE, key, spec);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+
+        AlgorithmParameters param = AlgorithmParameters.getInstance("AES");
+        param.init(new IvParameterSpec(iv));
+        try {
+            init(Cipher.ENCRYPT_MODE, key, param);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+
+        try {
+            init(Cipher.WRAP_MODE, key, param);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+
+        try {
+            init(Cipher.DECRYPT_MODE, key, param);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+
+        try {
+            init(Cipher.UNWRAP_MODE, key, param);
+            fail();
+        } catch (InvalidAlgorithmParameterException expected) {}
+    }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/CipherTest.java b/tests/tests/keystore/src/android/keystore/cts/CipherTest.java
new file mode 100644
index 0000000..e2c1d69
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/CipherTest.java
@@ -0,0 +1,1550 @@
+/*
+ * 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.
+ */
+
+package android.keystore.cts;
+
+import android.security.keystore.KeyProperties;
+import android.security.keystore.KeyProtection;
+import android.test.AndroidTestCase;
+import android.test.MoreAsserts;
+
+import com.android.cts.keystore.R;
+
+import java.security.AlgorithmParameters;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.Provider;
+import java.security.Security;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.MGF1ParameterSpec;
+import java.security.Provider.Service;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.spec.GCMParameterSpec;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.OAEPParameterSpec;
+import javax.crypto.spec.PSource;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Tests for algorithm-agnostic functionality of {@code Cipher} implementations backed by Android
+ * Keystore.
+ */
+public class CipherTest extends AndroidTestCase {
+
+    private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_CRYPTO_OP_PROVIDER_NAME;
+
+    private static final String[] EXPECTED_ALGORITHMS = {
+        "AES/ECB/NoPadding",
+        "AES/ECB/PKCS7Padding",
+        "AES/CBC/NoPadding",
+        "AES/CBC/PKCS7Padding",
+        "AES/CTR/NoPadding",
+        "AES/GCM/NoPadding",
+        "RSA/ECB/NoPadding",
+        "RSA/ECB/PKCS1Padding",
+        "RSA/ECB/OAEPPadding",
+        "RSA/ECB/OAEPWithSHA-1AndMGF1Padding",
+        "RSA/ECB/OAEPWithSHA-224AndMGF1Padding",
+        "RSA/ECB/OAEPWithSHA-256AndMGF1Padding",
+        "RSA/ECB/OAEPWithSHA-384AndMGF1Padding",
+        "RSA/ECB/OAEPWithSHA-512AndMGF1Padding",
+    };
+
+    private static class KatVector {
+        private final byte[] plaintext;
+        private final byte[] ciphertext;
+        private final AlgorithmParameterSpec params;
+
+        private KatVector(String plaintextHex, String ciphertextHex) {
+            this(plaintextHex, null, ciphertextHex);
+        }
+
+        private KatVector(String plaintextHex, AlgorithmParameterSpec params,
+                String ciphertextHex) {
+            this(HexEncoding.decode(plaintextHex), params, HexEncoding.decode(ciphertextHex));
+        }
+
+        private KatVector(byte[] plaintext, byte[] ciphertext) {
+            this(plaintext, null, ciphertext);
+        }
+
+        private KatVector(byte[] plaintext, AlgorithmParameterSpec params, byte[] ciphertext) {
+            this.plaintext = plaintext;
+            this.ciphertext = ciphertext;
+            this.params = params;
+        }
+    }
+    private static final Map<String, KatVector> KAT_VECTORS =
+            new TreeMap<String, KatVector>(String.CASE_INSENSITIVE_ORDER);
+    static {
+        // From RI
+        KAT_VECTORS.put("AES/ECB/NoPadding", new KatVector(
+                "0383911bb1519d58e6656f3fd35639c502dbeb2196cea937fca272666cb4a80b",
+                "6574c5065283b89e0c930019e4655d8516b98170db6516cd83e589bd9c5e5adc"));
+        KAT_VECTORS.put("AES/ECB/PKCS7Padding", new KatVector(
+                "1ad3d73a3cfa66dac78a51a95c2cb2125ea701e6e9ecbca2415b436f0258e2ba7439b67545",
+                "920f873f2f9e91bac4c9c948d66496a21b8b2606850490dac7abecae83317488ee550b9973ac5cd142"
+                + "f387d7d2a12752"));
+        KAT_VECTORS.put("AES/CBC/NoPadding", new KatVector(
+                "1dffe21c8f18276c3a39ed0c53ab257b84efcedab60095c4cadd131143058cf7",
+                new IvParameterSpec(HexEncoding.decode("10b3eea6cc8a7d6f48337e9b6987d28c")),
+                "47ab115bfadca91eaebec73ab942a06f3121fdd5aa55d223bd2cbcc3855e1ef8"));
+        KAT_VECTORS.put("AES/CBC/PKCS7Padding", new KatVector(
+                "9d49fb970b23bfe742ae7c45a773ada9faad84708c8858a06e4a192e0a90e2f6083548e0bf3f67",
+                new IvParameterSpec(HexEncoding.decode("ecd87bf9c49f37dcd2294e309192289a")),
+                "aeb64f48ec18a086eda7ee080948651a50b6f582ab54aac5454c9ab0a4de5b4a4abac526a4307011d1"
+                + "2881f1849c32ae"));
+        KAT_VECTORS.put("AES/CTR/NoPadding", new KatVector(
+                "b4e786cab9df48d2fce0c7872651314db1318d1f31a1b10a2c334d2555b4117668",
+                new IvParameterSpec(HexEncoding.decode("94d9f7a6d16f58018819b668020b68cc")),
+                "022e74572a70be57a0b65b2fb5bc9b803ce48973b6163f528bbe1fd001e29d330a"));
+        KAT_VECTORS.put("AES/GCM/NoPadding", new KatVector(
+                "03889a6ca811e3fd7e78467e3dae587d2110e80e98edbc9dfe17afba238c4c493186",
+                new GCMParameterSpec(128, HexEncoding.decode("f67aaf97cdec65b12188315e")),
+                "159eb1ffc86589b38f18097c32db646c7de3525b603876c3ae671bc2ca52a5395a374b377a915c9ed1"
+                + "a349abf9fc54c9ca81"));
+        KAT_VECTORS.put("RSA/ECB/NoPadding", new KatVector(
+                "50c499d558c38fd48ea76832887db2abc76e4e153a98fd4323ccb8006d34f11724a5692fb101b0eb96"
+                + "060eb9d15222",
+                "349b1d5061e98d0ab3f2327680bbc0cbb1b8ef8ee26148d7c67cf535223e3f78d822d369592ede29b1"
+                + "654aab25e6ae5e098318e55c13dc405f5ba27e5cc69ced32778592a51e6293a03f95e14ed17099fb"
+                + "0ac585e41297b87c3432953df0d98be7e505dc7de7bfe9d9ec750f475afeba4cc2dd78838c0d4399"
+                + "d8de02b07f00b292dc3d32d2a2f98ea5a5dac1a0fec4d01e5c3aea8c56eeff264896fb6cf2144401"
+                + "278c6663417bc00aafbb9eb97c056573cdec88d6ac6fd6c333d131337b16031da229029e3b6fe6f8"
+                + "ee427f2e90041e9636d67cddac75845914ce4be56092eed7188fe7e2bb33769efdeed86a7acbe15d"
+                + "debf92d9fbaaddede206acfa650697"));
+        KAT_VECTORS.put("RSA/ECB/PKCS1Padding", new KatVector(
+                "aed8cd94f35b2a54cdd3ed771482bd87e256b995408558fb82e5d475d1ee54711472f899ad6cbb6847"
+                + "99e52ff1d57cbc39f4",
+                "64148dee294dd3ea31d2b595ea661318cf90c89f71393cf6559087d6e8993e73eb1e6b5f4d3cfde3cb"
+                + "267938c5eca522b95a2df02df9c703dbe3103c157af0d2ed5b70da51cb4caa49061319420d0ea433"
+                + "f24b727530c162226bc806b7f39079cd494a5c8a242737413d27063f9fb74aadd20f521211316719"
+                + "c628fd4351d0608928949b6f59f351d9ccec4c596514335010834fcabd53a2cbb2642e0f83c4f89c"
+                + "199ee2c68ace9182cf484d99e86b0b2213c1cc113d24891958e5a0774b7486abae1475e46a939a94"
+                + "5d6491b98ad7979fd6e752b47e43e960557a0c0589d7d0444b011d75c9f5b143da6e1dcf7b678a2e"
+                + "f82fbe37a74df3e20fb1a9dbfd5978"));
+        KAT_VECTORS.put("RSA/ECB/OAEPPadding", new KatVector(
+                "c219f4e3e37eae2315f0fa4ebc4b46ef0c6befbb43a51ceda07435fc88a9",
+                "7a9bcfd0d02b6434025bbf5ba09c2dad118a4a3bca7cced8b404bc0fc2f17ddee13de82c8324294bf2"
+                + "60ad6e5171c2c3728a0c0fab20dd60e4e56cfef3e66239439ed2eddcc83ac8eeaedfd970e9966de3"
+                + "94ad1df0df503a0a640a49e10885b3a4115c3e94e893fff87bf9a5808350f957d6bc556ca6b08f81"
+                + "bf697704a3eb3db774797f883af0dcdc9bd9196d7595bab5e87d3187eb45b5771abe4e4dc70c25fa"
+                + "b9e3cddb6ae453a1d8e517d000779472e1376e5848b1654a51a9e90be4a4a6d0f6b8723c6e93c471"
+                + "313ea94f24504ca377b502057331355965a7e0b9c3b1d1fbd24ab5a4167f721d1ddac4d3c094d5c9"
+                + "0d2e277e9b5617cbf2770186323e89"));
+        KAT_VECTORS.put("RSA/ECB/OAEPWithSHA-1AndMGF1Padding", new KatVector(
+                "bb2854620bb0e361d1384703dda12acee1fefc22024bcfc40a86390d5342c693aab8c7ed6517d8da86"
+                + "04492c9d",
+                "77033c578f24ef0ed93bfe6dc6f7c3f9f0505e7562f67ce987a269cabaa8a3ae7dd5e567a8b37db42d"
+                + "a79aa86ea2e189af5b9560b39407ff86f2785cdaf660fc7c93649bc24a818de564cb0d03e7681fa8"
+                + "f3cd42b3bfc58c49d3f049e0c98b07aff95876f05ddc45ebaa7127a198f27ae0cfd161c5598ac795"
+                + "8ed386d98b13d45730e6dc16313fe012af27d7be0e45215040bbfb07f2d35e34291fe4335a68175a"
+                + "46be99a15c1ccf673659157e1f52105de5a0a6f8c9d946740216eefe2a01a37b0ab144a44ff0d800"
+                + "be713b5b44acf4fcb1a60d5db977af4d77fa77bdb8594032b2f5bbdd49346b08e0e98ab1051b462e"
+                + "160c1bff62b927cd26c936948b723a"));
+        KAT_VECTORS.put("RSA/ECB/OAEPWithSHA-224AndMGF1Padding", new KatVector(
+                "1bae19434be6599d1987b1ed866dd6b684dcd908bd98d797250be545eafea46d05ebdf9018",
+                "0f18b4a1153c6f8821e18a4275e4b570d540c8ad86bfc99146e5475238a43ecbe63bc81368cd64b9a2"
+                + "ab3ccd586e6afaad054c9d7bdc986adf022ec86335d110c53ebd5f2f2bd49d48d6da9541312c9b1b"
+                + "cc299ca4f59475869e4ec2253c91b137eae274a245fc9ee6262f74754bbda55d8bd25bfa4c1698f3"
+                + "a22d2d8d7fc6e9fbb56d828e61912b3085d82cceaeb1d2da425871575e7ba31a3d47b1b7d7df0bda"
+                + "81d62c75a9887bbc528fc6bb51db09884bb513b4cc94ca4a5fe0b370ca548dcdf60eebbf61e7efe7"
+                + "630fc47256d6d617fc1c2c774405f385650898abea03502cfbdcb53579fd18d896490e67aecdb7c7"
+                + "b7b950dc7ddba5c64188494c1a177b"));
+        KAT_VECTORS.put("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", new KatVector(
+                "332c2f2fc066fb29ec0928a52b5111ce6965546ce73927340c42d33b56b6ba547b77ac361ac0d13316"
+                + "345ca953840023d892fa4ff1aa32cc66d5aa88b79867",
+                "942c0ba1c67a34a7e116d9281b1df5084c66bc1458faf1b26d4f0f63a57307a9addcd3e5d2f3320071"
+                + "5a3d95ae84fb40a8dfe4cb0a28873fd5883ff8ee6efbfe38c460c755577b34fcf05bb2077afec7b2"
+                + "203799022be6a0903915e01e94abc51efe9c5548eb86bbbb4fd7f3bfc7b86f388128b6df1e6ce651"
+                + "230c6bc18bbf55b029f1e31da880c27d947ff97519df66a57ead6db791c4978f1d62edec0d89bb16"
+                + "83d237213f3f24271ddb8c4b50a82527954f0e49ae44d3acd8ddd3a57cfbfa456dd40675d5d75542"
+                + "31c6b79c7fb3500b1631be1d100e67d85ce423845fdc7c7f45e346a8ba573f5d11de9009069468dd"
+                + "8d517ad4adb1509dd5173ee1862d74"));
+        KAT_VECTORS.put("RSA/ECB/OAEPWithSHA-384AndMGF1Padding", new KatVector(
+                "f51f158cbad4dbab38403b839c724f09a480c49be29c0e72615539dbe57ec86143f31f19392f419b5b"
+                + "e4ba9e3c6f1e870d307a7cf1a9e2",
+                "944243f35f534e7a273e94986b6835a4f5cdc5bc4efb9970d4760986599a02f652a848fcae333ff25a"
+                + "64108c9b900aaf002688398ad9fc17c73be52726306af9c13540df9d1765336b6f09ba4cb8a54d72"
+                + "5a4e45854bfa3802cfb110a6d7f7054e6072440ec00da62828cb75fe2566ec5be79eb8a3d1fbe2c2"
+                + "4439c107e5018e445e201ad80725755543c00dec50bb464c6ca897600eb3cda51fcef8161ac13d75"
+                + "a3eb30d385a1e718a61ae1b5d47aadb966fc007becc84db397d0b3cd983121872f9975995153e869"
+                + "9e24554a3c5e885f0ed8cd03e916da5ed541f1598da9bd6209447301d00f086153da353deff9d045"
+                + "8976ff7570410f0bdcfb3f56b782f5"));
+        KAT_VECTORS.put("RSA/ECB/OAEPWithSHA-512AndMGF1Padding", new KatVector(
+                "d45f6ccc7e663957f234c237c1f09bf7791f6f5c1b9ef4fefb16e55ded0d96112e590f1bb08a60f85c"
+                + "2d0d2533f1d69792dfd8d647d880b18f87cfe32488c73613a3d535da7d776d90d9a4ba6a0311f456"
+                + "8511da49107c",
+                "5a037df3e5d6f3f703541e2db2aef7c69985e513bdff67c8ade6a09f50e27267bfb444f6c69b40a77a"
+                + "9136a27b29876af9d2bf4e7099863445d35b188d31f376b89fbd196059667ca657e10b9454c2b25f"
+                + "046fc9f7b42506e382e6b6fd99409cf97e865e65f8dce5d14a06b8aa8833c4bc72c8764467758f2d"
+                + "7960243161dce4ca8231e91bfcd3c933a80bc703ceab976224c876b1f550f91a6c2a0332d4377bd8"
+                + "dfe4b1283ab114e517b7b9e4a6e0bf166d5b506e7a3b7328078e12cb23b1d938760767dc9b3c3eb0"
+                + "848ddda101792aca9273ad414314c13fc511ffa0358a8f4c5f38edded3a2dc111fa62c80e6032c32"
+                + "ae04aeac7729f16a6310f1f6785c27"));
+    }
+
+    private static final long DAY_IN_MILLIS = TestUtils.DAY_IN_MILLIS;
+
+    private static final byte[] AES128_KAT_KEY_BYTES =
+            HexEncoding.decode("7d9f11a0da111e9d8bdd14f04648ed91");
+
+    private static final byte[] AES192_KAT_KEY_BYTES =
+            HexEncoding.decode("69ef2c44a48d3dc4d5744a281f7ebb5ca976c2202f91e10c");
+
+    private static final byte[] AES256_KAT_KEY_BYTES =
+            HexEncoding.decode("cf601cc10aaf434d1f01747136aff222af7fb426d101901712214c3fea18125f");
+
+    public void testAlgorithmList() {
+        // Assert that Android Keystore Provider exposes exactly the expected Cipher
+        // transformations. We don't care whether the transformations are exposed via aliases, as
+        // long as canonical names of transformation are accepted.
+        // If the Provider exposes extraneous algorithms, it'll be caught because it'll have to
+        // expose at least one Service for such an algorithm, and this Service's algorithm will
+        // not be in the expected set.
+
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        Set<Service> services = provider.getServices();
+        Set<String> actualAlgsLowerCase = new HashSet<String>();
+        Set<String> expectedAlgsLowerCase = new HashSet<String>(
+                Arrays.asList(TestUtils.toLowerCase(EXPECTED_ALGORITHMS)));
+        for (Service service : services) {
+            if ("Cipher".equalsIgnoreCase(service.getType())) {
+                String algLowerCase = service.getAlgorithm().toLowerCase(Locale.US);
+                actualAlgsLowerCase.add(algLowerCase);
+            }
+        }
+
+        TestUtils.assertContentsInAnyOrder(actualAlgsLowerCase,
+                expectedAlgsLowerCase.toArray(new String[0]));
+    }
+
+    public void testAndroidKeyStoreKeysHandledByAndroidKeyStoreProviderWhenDecrypting()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                ImportedKey key = importDefaultKatKey(
+                        algorithm,
+                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                        false);
+
+                // Decryption may need additional parameters. Initializing a Cipher for encryption
+                // forces it to generate any such parameters.
+                Cipher cipher = Cipher.getInstance(algorithm, provider);
+                cipher.init(Cipher.ENCRYPT_MODE, key.getKeystoreBackedEncryptionKey());
+                AlgorithmParameters params = cipher.getParameters();
+
+                // Test DECRYPT_MODE
+                cipher = Cipher.getInstance(algorithm);
+                Key decryptionKey = key.getKeystoreBackedDecryptionKey();
+                cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params);
+                assertSame(provider, cipher.getProvider());
+
+                // Test UNWRAP_MODE
+                cipher = Cipher.getInstance(algorithm);
+                if (params != null) {
+                    cipher.init(Cipher.UNWRAP_MODE, decryptionKey, params);
+                } else {
+                    cipher.init(Cipher.UNWRAP_MODE, decryptionKey);
+                }
+                assertSame(provider, cipher.getProvider());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testAndroidKeyStorePublicKeysAcceptedByHighestPriorityProviderWhenEncrypting()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(algorithm)) {
+                continue;
+            }
+            try {
+                Key key = importDefaultKatKey(
+                        algorithm,
+                        KeyProperties.PURPOSE_ENCRYPT,
+                        false).getKeystoreBackedEncryptionKey();
+
+                Cipher cipher = Cipher.getInstance(algorithm);
+                cipher.init(Cipher.ENCRYPT_MODE, key);
+
+                cipher = Cipher.getInstance(algorithm);
+                cipher.init(Cipher.WRAP_MODE, key);
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for" + algorithm, e);
+            }
+        }
+    }
+
+    public void testEmptyPlaintextEncryptsAndDecrypts()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        final byte[] originalPlaintext = EmptyArray.BYTE;
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            for (ImportedKey key : importKatKeys(
+                    algorithm,
+                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                    false)) {
+                try {
+                    Key encryptionKey = key.getKeystoreBackedEncryptionKey();
+                    byte[] plaintext = truncatePlaintextIfNecessary(
+                            algorithm, encryptionKey, originalPlaintext);
+                    if (plaintext == null) {
+                        // Key is too short to encrypt anything using this transformation
+                        continue;
+                    }
+                    Cipher cipher = Cipher.getInstance(algorithm, provider);
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);
+                    AlgorithmParameters params = cipher.getParameters();
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    byte[] expectedPlaintext = plaintext;
+                    if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                        // RSA decryption without padding left-pads resulting plaintext with NUL
+                        // bytes to the length of RSA modulus.
+                        int modulusLengthBytes = (TestUtils.getKeySizeBits(encryptionKey) + 7) / 8;
+                        expectedPlaintext = TestUtils.leftPadWithZeroBytes(
+                                expectedPlaintext, modulusLengthBytes);
+                    }
+
+                    cipher = Cipher.getInstance(algorithm, provider);
+                    Key decryptionKey = key.getKeystoreBackedDecryptionKey();
+                    cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params);
+                    byte[] actualPlaintext = cipher.doFinal(ciphertext);
+                    MoreAsserts.assertEquals(expectedPlaintext, actualPlaintext);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key " + key.getAlias(),
+                            e);
+                }
+            }
+        }
+    }
+
+    public void testCiphertextGeneratedByAndroidKeyStoreDecryptsByAndroidKeyStore()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        final byte[] originalPlaintext = "Very secret message goes here...".getBytes("US-ASCII");
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            for (ImportedKey key : importKatKeys(
+                    algorithm,
+                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                    false)) {
+                try {
+                    Key encryptionKey = key.getKeystoreBackedEncryptionKey();
+                    byte[] plaintext = truncatePlaintextIfNecessary(
+                            algorithm, encryptionKey, originalPlaintext);
+                    if (plaintext == null) {
+                        // Key is too short to encrypt anything using this transformation
+                        continue;
+                    }
+                    Cipher cipher = Cipher.getInstance(algorithm, provider);
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);
+                    AlgorithmParameters params = cipher.getParameters();
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    byte[] expectedPlaintext = plaintext;
+                    if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                        // RSA decryption without padding left-pads resulting plaintext with NUL
+                        // bytes to the length of RSA modulus.
+                        int modulusLengthBytes = (TestUtils.getKeySizeBits(encryptionKey) + 7) / 8;
+                        expectedPlaintext = TestUtils.leftPadWithZeroBytes(
+                                expectedPlaintext, modulusLengthBytes);
+                    }
+
+                    cipher = Cipher.getInstance(algorithm, provider);
+                    Key decryptionKey = key.getKeystoreBackedDecryptionKey();
+                    cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params);
+                    byte[] actualPlaintext = cipher.doFinal(ciphertext);
+                    MoreAsserts.assertEquals(expectedPlaintext, actualPlaintext);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key " + key.getAlias(),
+                            e);
+                }
+            }
+        }
+    }
+
+    public void testCiphertextGeneratedByHighestPriorityProviderDecryptsByAndroidKeyStore()
+            throws Exception {
+        Provider keystoreProvider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(keystoreProvider);
+        byte[] originalPlaintext = "Very secret message goes here...".getBytes("UTF-8");
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            for (ImportedKey key : importKatKeys(
+                    algorithm,
+                    KeyProperties.PURPOSE_DECRYPT,
+                    false)) {
+                Provider encryptionProvider = null;
+                try {
+                    Key encryptionKey = key.getOriginalEncryptionKey();
+                    byte[] plaintext = truncatePlaintextIfNecessary(
+                            algorithm, encryptionKey, originalPlaintext);
+                    if (plaintext == null) {
+                        // Key is too short to encrypt anything using this transformation
+                        continue;
+                    }
+
+                    Cipher cipher;
+                    try {
+                        cipher = Cipher.getInstance(algorithm);
+                        cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);
+                    } catch (InvalidKeyException e) {
+                        // No providers support encrypting using this algorithm and key.
+                        continue;
+                    }
+                    encryptionProvider = cipher.getProvider();
+                    if (keystoreProvider == encryptionProvider) {
+                        // This is covered by another test.
+                        continue;
+                    }
+                    AlgorithmParameters params = cipher.getParameters();
+
+                    // TODO: Remove this workaround for Bug 22405492 once the issue is fixed. The
+                    // issue is that Bouncy Castle incorrectly defaults the MGF1 digest to the
+                    // digest specified in the transformation. RI and Android Keystore keep the MGF1
+                    // digest defaulted at SHA-1.
+                    if ((params != null) && ("OAEP".equalsIgnoreCase(params.getAlgorithm()))) {
+                        OAEPParameterSpec spec = params.getParameterSpec(OAEPParameterSpec.class);
+                        if (!"SHA-1".equalsIgnoreCase(
+                                ((MGF1ParameterSpec) spec.getMGFParameters())
+                                        .getDigestAlgorithm())) {
+                            cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, new OAEPParameterSpec(
+                                    spec.getDigestAlgorithm(),
+                                    "MGF1",
+                                    MGF1ParameterSpec.SHA1,
+                                    PSource.PSpecified.DEFAULT));
+                            params = cipher.getParameters();
+                        }
+                    }
+
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    byte[] expectedPlaintext = plaintext;
+                    if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                        // RSA decryption without padding left-pads resulting plaintext with NUL
+                        // bytes to the length of RSA modulus.
+                        int modulusLengthBytes = (TestUtils.getKeySizeBits(encryptionKey) + 7) / 8;
+                        expectedPlaintext = TestUtils.leftPadWithZeroBytes(
+                                expectedPlaintext, modulusLengthBytes);
+                    }
+
+                    // TODO: Remove this workaround once Android Keystore AES-GCM supports IVs of
+                    // sizes other than 12 bytes. For example, Bouncy Castle auto-generates 16-byte
+                    // long IVs.
+                    if ("AES/GCM/NoPadding".equalsIgnoreCase(algorithm)) {
+                        byte[] iv = cipher.getIV();
+                        if ((iv != null) && (iv.length != 12)) {
+                            // Android Keystore AES-GCM only supports 12-byte long IVs.
+                            continue;
+                        }
+                    }
+
+                    // TODO: Remove this workaround for Bug 22319986 once the issue is fixed. The issue
+                    // is that Conscrypt and Bouncy Castle's AES/GCM/NoPadding implementations return
+                    // AlgorithmParameters of algorithm "AES" from which it's impossible to obtain a
+                    // GCMParameterSpec. They should be returning AlgorithmParameters of algorithm
+                    // "GCM".
+                    if (("AES/GCM/NoPadding".equalsIgnoreCase(algorithm))
+                            && (!"GCM".equalsIgnoreCase(params.getAlgorithm()))) {
+                        params = AlgorithmParameters.getInstance("GCM");
+                        params.init(new GCMParameterSpec(128, cipher.getIV()));
+                    }
+
+                    cipher = Cipher.getInstance(algorithm, keystoreProvider);
+                    Key decryptionKey = key.getKeystoreBackedDecryptionKey();
+                    cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params);
+                    byte[] actualPlaintext = cipher.doFinal(ciphertext);
+                    MoreAsserts.assertEquals(expectedPlaintext, actualPlaintext);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key " + key.getAlias()
+                                    + ", encryption provider: " + encryptionProvider,
+                            e);
+                }
+            }
+        }
+    }
+
+    public void testCiphertextGeneratedByAndroidKeyStoreDecryptsByHighestPriorityProvider()
+            throws Exception {
+        Provider keystoreProvider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(keystoreProvider);
+        byte[] originalPlaintext = "Very secret message goes here...".getBytes("UTF-8");
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            for (ImportedKey key : importKatKeys(
+                    algorithm,
+                    KeyProperties.PURPOSE_ENCRYPT,
+                    false)) {
+                Provider decryptionProvider = null;
+                try {
+                    Key encryptionKey = key.getKeystoreBackedEncryptionKey();
+                    byte[] plaintext = truncatePlaintextIfNecessary(
+                            algorithm, encryptionKey, originalPlaintext);
+                    if (plaintext == null) {
+                        // Key is too short to encrypt anything using this transformation
+                        continue;
+                    }
+                    Cipher cipher = Cipher.getInstance(algorithm, keystoreProvider);
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);
+                    AlgorithmParameters params = cipher.getParameters();
+
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    byte[] expectedPlaintext = plaintext;
+                    if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                        // RSA decryption without padding left-pads resulting plaintext with NUL
+                        // bytes to the length of RSA modulus.
+                        int modulusLengthBytes = (TestUtils.getKeySizeBits(encryptionKey) + 7) / 8;
+                        expectedPlaintext = TestUtils.leftPadWithZeroBytes(
+                                expectedPlaintext, modulusLengthBytes);
+                    }
+
+                    Key decryptionKey = key.getOriginalDecryptionKey();
+                    try {
+                        cipher = Cipher.getInstance(algorithm);
+                        if (params != null) {
+                            cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params);
+                        } else {
+                            cipher.init(Cipher.DECRYPT_MODE, decryptionKey);
+                        }
+                    } catch (InvalidKeyException e) {
+                        // No providers support decrypting using this algorithm and key.
+                        continue;
+                    }
+                    decryptionProvider = cipher.getProvider();
+                    if (keystoreProvider == decryptionProvider) {
+                        // This is covered by another test.
+                        continue;
+                    }
+                    byte[] actualPlaintext = cipher.doFinal(ciphertext);
+                    MoreAsserts.assertEquals(expectedPlaintext, actualPlaintext);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key " + key.getAlias()
+                                    + ", decryption provider: " + decryptionProvider,
+                            e);
+                }
+            }
+        }
+    }
+
+    public void testMaxSizedPlaintextSupported() throws Exception {
+        Provider keystoreProvider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(keystoreProvider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(algorithm)) {
+                // No input length restrictions (except multiple of block size for some
+                // transformations).
+                continue;
+            }
+            for (ImportedKey key : importKatKeys(
+                    algorithm,
+                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                    false)) {
+                int plaintextSizeBytes = -1;
+                Provider otherProvider = null;
+                try {
+                    Key encryptionKey = key.getKeystoreBackedEncryptionKey();
+                    int maxSupportedPlaintextSizeBytes =
+                            TestUtils.getMaxSupportedPlaintextInputSizeBytes(
+                                    algorithm, encryptionKey);
+                    if (maxSupportedPlaintextSizeBytes < 0) {
+                        // Key too short to encrypt anything using this transformation.
+                        continue;
+                    } else if (maxSupportedPlaintextSizeBytes == Integer.MAX_VALUE) {
+                        // No input length restrictions.
+                        continue;
+                    }
+                    byte[] plaintext = new byte[maxSupportedPlaintextSizeBytes];
+                    Arrays.fill(plaintext, (byte) 0xff);
+                    plaintextSizeBytes = plaintext.length;
+
+                    // Encrypt plaintext using Android Keystore Cipher
+                    Cipher cipher = Cipher.getInstance(algorithm, keystoreProvider);
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);
+                    AlgorithmParameters params = cipher.getParameters();
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    byte[] expectedPlaintext = plaintext;
+                    if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                        // RSA decryption without padding left-pads resulting plaintext with NUL
+                        // bytes to the length of RSA modulus.
+                        int modulusLengthBytes = (TestUtils.getKeySizeBits(encryptionKey) + 7) / 8;
+                        expectedPlaintext = TestUtils.leftPadWithZeroBytes(
+                                expectedPlaintext, modulusLengthBytes);
+                    }
+
+                    // Check that ciphertext decrypts using Android Keystore Cipher
+                    cipher = Cipher.getInstance(algorithm, keystoreProvider);
+                    Key decryptionKey = key.getKeystoreBackedDecryptionKey();
+                    cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params);
+                    byte[] actualPlaintext = cipher.doFinal(ciphertext);
+                    MoreAsserts.assertEquals(expectedPlaintext, actualPlaintext);
+
+                    // Check that ciphertext decrypts using the highest-priority provider.
+                    cipher = Cipher.getInstance(algorithm);
+                    decryptionKey = key.getOriginalDecryptionKey();
+                    try {
+                        cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params);
+                    } catch (InvalidKeyException e) {
+                        // No other providers offer decryption using this transformation and key.
+                        continue;
+                    }
+                    otherProvider = cipher.getProvider();
+                    if (otherProvider == keystoreProvider) {
+                        // This has already been tested above.
+                        continue;
+                    }
+                    actualPlaintext = cipher.doFinal(ciphertext);
+                    MoreAsserts.assertEquals(expectedPlaintext, actualPlaintext);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key " + key.getAlias()
+                                    + " and " + plaintextSizeBytes + " long plaintext"
+                                    + ", other provider: " + otherProvider,
+                            e);
+                }
+            }
+        }
+    }
+
+    public void testLargerThanMaxSizedPlaintextRejected() throws Exception {
+        Provider keystoreProvider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(keystoreProvider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(algorithm)) {
+                // No input length restrictions (except multiple of block size for some
+                // transformations).
+                continue;
+            }
+            for (ImportedKey key : importKatKeys(
+                    algorithm,
+                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                    false)) {
+                int plaintextSizeBytes = -1;
+                Provider otherProvider = null;
+                try {
+                    Key encryptionKey = key.getKeystoreBackedEncryptionKey();
+                    int maxSupportedPlaintextSizeBytes =
+                            TestUtils.getMaxSupportedPlaintextInputSizeBytes(
+                                    algorithm, encryptionKey);
+                    if (maxSupportedPlaintextSizeBytes < 0) {
+                        // Key too short to encrypt anything using this transformation.
+                        continue;
+                    } else if (maxSupportedPlaintextSizeBytes == Integer.MAX_VALUE) {
+                        // No input length restrictions.
+                        continue;
+                    }
+                    // Create plaintext which is one byte longer than maximum supported one.
+                    byte[] plaintext = new byte[maxSupportedPlaintextSizeBytes + 1];
+                    Arrays.fill(plaintext, (byte) 0xff);
+                    plaintextSizeBytes = plaintext.length;
+
+                    // Encrypting this plaintext using Android Keystore Cipher should fail.
+                    Cipher cipher = Cipher.getInstance(algorithm, keystoreProvider);
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);
+                    if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                        // This transformation is special: it's supposed to throw a
+                        // BadPaddingException instead of an IllegalBlockSizeException.
+                        try {
+                            byte[] ciphertext = cipher.doFinal(plaintext);
+                            fail("Unexpectedly produced ciphertext (" + ciphertext.length
+                                    + " bytes): " + HexEncoding.encode(ciphertext) + " for "
+                                    + plaintext.length + " byte long plaintext");
+                        } catch (BadPaddingException expected) {}
+                    } else {
+                        try {
+                            byte[] ciphertext = cipher.doFinal(plaintext);
+                            fail("Unexpectedly produced ciphertext (" + ciphertext.length
+                                    + " bytes): " + HexEncoding.encode(ciphertext) + " for "
+                                    + plaintext.length + " byte long plaintext");
+                        } catch (IllegalBlockSizeException expected) {}
+                    }
+
+                    // Encrypting this plaintext using the highest-priority implementation should
+                    // fail.
+                    cipher = Cipher.getInstance(algorithm);
+                    encryptionKey = key.getOriginalEncryptionKey();
+                    try {
+                        cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);
+                    } catch (InvalidKeyException e) {
+                        // No other providers support this transformation with this key.
+                        continue;
+                    }
+                    otherProvider = cipher.getProvider();
+                    if (otherProvider == keystoreProvider) {
+                        // This has already been tested above.
+                        continue;
+                    }
+                    if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                        // This transformation is special: it's supposed to throw a
+                        // BadPaddingException instead of an IllegalBlockSizeException.
+                        try {
+                            byte[] ciphertext = cipher.doFinal(plaintext);
+                            fail(otherProvider.getName() + " unexpectedly produced ciphertext ("
+                                    + ciphertext.length + " bytes): "
+                                    + HexEncoding.encode(ciphertext) + " for "
+                                    + plaintext.length + " byte long plaintext");
+                            // TODO: Remove this workaround once Conscrypt's RSA Cipher Bug 22567458
+                            // is fixed. Conscrypt's Cipher.doFinal throws a SignatureException.
+                            // This code is unreachable because of the fail() above. It's here only
+                            // so that the compiler does not complain about us catching
+                            // SignatureException.
+                            Signature sig = Signature.getInstance("SHA256withRSA");
+                            sig.sign();
+                        } catch (BadPaddingException | SignatureException expected) {}
+                    } else {
+                        try {
+                            byte[] ciphertext = cipher.doFinal(plaintext);
+                            fail(otherProvider.getName() + " unexpectedly produced ciphertext ("
+                                    + ciphertext.length + " bytes): "
+                                    + HexEncoding.encode(ciphertext) + " for "
+                                    + plaintext.length + " byte long plaintext");
+                            // TODO: Remove the catching of RuntimeException workaround once the
+                            // corresponding Bug 22567463 in Conscrypt is fixed.
+                        } catch (IllegalBlockSizeException | RuntimeException expected) {}
+                    }
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key " + key.getAlias()
+                            + " and " + plaintextSizeBytes + " byte long plaintext"
+                            + ", other provider: " + otherProvider,
+                            e);
+                }
+            }
+        }
+    }
+
+    public void testKat() throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                ImportedKey key = importDefaultKatKey(algorithm,
+                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                        true);
+                KatVector testVector = KAT_VECTORS.get(algorithm);
+                assertNotNull(testVector);
+                Cipher cipher = Cipher.getInstance(algorithm, provider);
+                Key decryptionKey = key.getKeystoreBackedDecryptionKey();
+                cipher.init(Cipher.DECRYPT_MODE, decryptionKey, testVector.params);
+                byte[] actualPlaintext = cipher.doFinal(testVector.ciphertext);
+                byte[] expectedPlaintext = testVector.plaintext;
+                if ("RSA/ECB/NoPadding".equalsIgnoreCase(algorithm)) {
+                    // RSA decryption without padding left-pads resulting plaintext with NUL bytes
+                    // to the length of RSA modulus.
+                    int modulusLengthBytes = (TestUtils.getKeySizeBits(decryptionKey) + 7) / 8;
+                    expectedPlaintext = TestUtils.leftPadWithZeroBytes(
+                            expectedPlaintext, modulusLengthBytes);
+                }
+                MoreAsserts.assertEquals(expectedPlaintext, actualPlaintext);
+                if (!isRandomizedEncryption(algorithm)) {
+                    // Deterministic encryption: ciphertext depends only on plaintext and input
+                    // parameters. Assert that encrypting the plaintext results in the same
+                    // ciphertext as in the test vector.
+                    Key encryptionKey = key.getKeystoreBackedEncryptionKey();
+                    cipher = Cipher.getInstance(algorithm, provider);
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, testVector.params);
+                    byte[] actualCiphertext = cipher.doFinal(testVector.plaintext);
+                    MoreAsserts.assertEquals(testVector.ciphertext, actualCiphertext);
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    private static boolean isRandomizedEncryption(String transformation) {
+        String transformationUpperCase = transformation.toUpperCase(Locale.US);
+        return (transformationUpperCase.endsWith("/PKCS1PADDING"))
+                || (transformationUpperCase.contains("OAEP"));
+    }
+
+    public void testInitDecryptFailsWhenNotAuthorizedToDecrypt() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_DECRYPT);
+                assertInitDecryptSucceeds(transformation, good);
+                assertInitDecryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good, KeyProperties.PURPOSE_ENCRYPT).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitEncryptSymmetricFailsWhenNotAuthorizedToEncrypt() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (!isSymmetric(transformation)) {
+                continue;
+            }
+
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good, KeyProperties.PURPOSE_DECRYPT).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitEncryptAsymmetricIgnoresAuthorizedPurposes() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(transformation)) {
+                continue;
+            }
+
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good, 0).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitDecryptFailsWhenBlockModeNotAuthorized() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(
+                    TestUtils.getCipherKeyAlgorithm(transformation))) {
+                // Block modes do not apply
+                continue;
+            }
+
+            String goodBlockMode = TestUtils.getCipherBlockMode(transformation);
+            String badBlockMode = KeyProperties.BLOCK_MODE_CBC.equalsIgnoreCase(goodBlockMode)
+                    ? KeyProperties.BLOCK_MODE_CTR : KeyProperties.BLOCK_MODE_CBC;
+
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_DECRYPT);
+                assertInitDecryptSucceeds(transformation, good);
+                assertInitDecryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good).setBlockModes(badBlockMode).build());
+            } catch (Throwable e) {
+                throw new RuntimeException(
+                        "Failed for " + transformation + " when authorized only for "
+                                + badBlockMode,
+                        e);
+            }
+        }
+    }
+
+    public void testInitEncryptSymmetricFailsWhenBlockModeNotAuthorized() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (!isSymmetric(transformation)) {
+                continue;
+            }
+
+            if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(
+                    TestUtils.getCipherKeyAlgorithm(transformation))) {
+                // Block modes do not apply
+                continue;
+            }
+
+            String goodBlockMode = TestUtils.getCipherBlockMode(transformation);
+            String badBlockMode = KeyProperties.BLOCK_MODE_CBC.equalsIgnoreCase(goodBlockMode)
+                    ? KeyProperties.BLOCK_MODE_CTR : KeyProperties.BLOCK_MODE_CBC;
+
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good).setBlockModes(badBlockMode).build());
+            } catch (Throwable e) {
+                throw new RuntimeException(
+                        "Failed for " + transformation + " when authorized only for "
+                                + badBlockMode,
+                        e);
+            }
+        }
+    }
+
+    public void testInitEncryptAsymmetricIgnoresAuthorizedBlockModes() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(transformation)) {
+                continue;
+            }
+
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good).setBlockModes().build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitDecryptFailsWhenDigestNotAuthorized() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            String impliedDigest = TestUtils.getCipherDigest(transformation);
+            if (impliedDigest == null) {
+                // No digest used by this transformation
+                continue;
+            }
+
+            String badDigest = KeyProperties.DIGEST_SHA256.equalsIgnoreCase(impliedDigest)
+                    ? KeyProperties.DIGEST_SHA512 : KeyProperties.DIGEST_SHA256;
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_DECRYPT);
+
+                assertInitDecryptSucceeds(transformation, good);
+                assertInitDecryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good).setDigests(badDigest).build());
+
+                if (!KeyProperties.DIGEST_NONE.equalsIgnoreCase(impliedDigest)) {
+                    // Check that authorized digest NONE does not mean ANY digest is authorized.
+                    badDigest = KeyProperties.DIGEST_NONE;
+                    assertInitDecryptThrowsInvalidKeyException(transformation,
+                            TestUtils.buildUpon(good).setDigests(badDigest).build());
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException(
+                        "Failed for " + transformation + " when authorized only for " + badDigest,
+                        e);
+            }
+        }
+    }
+
+    public void testInitEncryptSymmetricFailsWhenDigestNotAuthorized() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (!isSymmetric(transformation)) {
+                continue;
+            }
+
+            String impliedDigest = TestUtils.getCipherDigest(transformation);
+            if (impliedDigest == null) {
+                // No digest used by this transformation
+                continue;
+            }
+
+            String badDigest = KeyProperties.DIGEST_SHA256.equalsIgnoreCase(impliedDigest)
+                    ? KeyProperties.DIGEST_SHA512 : KeyProperties.DIGEST_SHA256;
+
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good).setDigests(badDigest).build());
+
+                if (!KeyProperties.DIGEST_NONE.equalsIgnoreCase(impliedDigest)) {
+                    // Check that authorized digest NONE does not mean ANY digest is authorized.
+                    badDigest = KeyProperties.DIGEST_NONE;
+                    assertInitEncryptThrowsInvalidKeyException(transformation,
+                            TestUtils.buildUpon(good).setDigests(badDigest).build());
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException(
+                        "Failed for " + transformation + " when authorized only for " + badDigest,
+                        e);
+            }
+        }
+    }
+
+    public void testInitEncryptAsymmetricIgnoresAuthorizedDigests() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(transformation)) {
+                continue;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good).setDigests().build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitDecryptFailsWhenPaddingSchemeNotAuthorized() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            String impliedEncryptionPadding = TestUtils.getCipherEncryptionPadding(transformation);
+            String badEncryptionPadding;
+            if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(
+                    TestUtils.getCipherKeyAlgorithm(transformation))) {
+                badEncryptionPadding =
+                        KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1.equalsIgnoreCase(
+                                impliedEncryptionPadding)
+                        ? KeyProperties.ENCRYPTION_PADDING_RSA_OAEP
+                        : KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1;
+            } else {
+                badEncryptionPadding = KeyProperties.ENCRYPTION_PADDING_PKCS7.equalsIgnoreCase(
+                        impliedEncryptionPadding)
+                        ? KeyProperties.ENCRYPTION_PADDING_NONE
+                        : KeyProperties.ENCRYPTION_PADDING_PKCS7;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_DECRYPT);
+
+                assertInitDecryptSucceeds(transformation, good);
+                assertInitDecryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good)
+                                .setEncryptionPaddings(badEncryptionPadding)
+                                .build());
+
+                if (!KeyProperties.ENCRYPTION_PADDING_NONE.equalsIgnoreCase(
+                        impliedEncryptionPadding)) {
+                    // Check that authorized padding NONE does not mean ANY padding is authorized.
+                    badEncryptionPadding = KeyProperties.ENCRYPTION_PADDING_NONE;
+                    assertInitDecryptThrowsInvalidKeyException(transformation,
+                            TestUtils.buildUpon(good)
+                                    .setEncryptionPaddings(badEncryptionPadding)
+                                    .build());
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException(
+                        "Failed for " + transformation + " when authorized only for "
+                                + badEncryptionPadding,
+                        e);
+            }
+        }
+    }
+
+    public void testInitEncryptSymmetricFailsWhenPaddingSchemeNotAuthorized() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (!isSymmetric(transformation)) {
+                continue;
+            }
+            String impliedEncryptionPadding = TestUtils.getCipherEncryptionPadding(transformation);
+            String badEncryptionPadding = KeyProperties.ENCRYPTION_PADDING_PKCS7.equalsIgnoreCase(
+                    impliedEncryptionPadding)
+                    ? KeyProperties.ENCRYPTION_PADDING_NONE
+                    : KeyProperties.ENCRYPTION_PADDING_PKCS7;
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good)
+                                .setEncryptionPaddings(badEncryptionPadding)
+                                .build());
+
+                if (!KeyProperties.ENCRYPTION_PADDING_NONE.equalsIgnoreCase(
+                        impliedEncryptionPadding)) {
+                    // Check that authorized padding NONE does not mean ANY padding is authorized.
+                    badEncryptionPadding = KeyProperties.ENCRYPTION_PADDING_NONE;
+                    assertInitEncryptThrowsInvalidKeyException(transformation,
+                            TestUtils.buildUpon(good)
+                                    .setEncryptionPaddings(badEncryptionPadding)
+                                    .build());
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException(
+                        "Failed for " + transformation + " when authorized only for "
+                                + badEncryptionPadding,
+                        e);
+            }
+        }
+    }
+
+    public void testInitEncryptAsymmetricIgnoresAuthorizedPaddingSchemes() throws Exception {
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(transformation)) {
+                continue;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good)
+                                .setEncryptionPaddings()
+                                .setSignaturePaddings()
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitDecryptFailsWhenKeyNotYetValid() throws Exception {
+        Date badStartDate = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_DECRYPT);
+
+                assertInitDecryptSucceeds(transformation, good);
+                assertInitDecryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitEncryptSymmetricFailsWhenKeyNotYetValid() throws Exception {
+        Date badStartDate = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (!isSymmetric(transformation)) {
+                continue;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitEncryptAsymmetricIgnoresThatKeyNotYetValid() throws Exception {
+        Date badStartDate = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(transformation)) {
+                continue;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitDecryptFailsWhenKeyNoLongerValidForConsumption() throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_DECRYPT);
+
+                assertInitDecryptSucceeds(transformation, good);
+                assertInitDecryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForConsumptionEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitDecryptIgnoresThatKeyNoLongerValidForOrigination() throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_DECRYPT);
+
+                assertInitDecryptSucceeds(transformation, good);
+                assertInitDecryptSucceeds(transformation,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForOriginationEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitEncryptSymmetricFailsWhenKeyNoLongerValidForOrigination() throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (!isSymmetric(transformation)) {
+                continue;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptThrowsInvalidKeyException(transformation,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForOriginationEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitEncryptSymmetricIgnoresThatKeyNoLongerValidForConsumption()
+            throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (!isSymmetric(transformation)) {
+                continue;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForConsumptionEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testInitEncryptAsymmetricIgnoresThatKeyNoLongerValid() throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            if (isSymmetric(transformation)) {
+                continue;
+            }
+            try {
+                KeyProtection good = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        transformation,
+                        KeyProperties.PURPOSE_ENCRYPT);
+
+                assertInitEncryptSucceeds(transformation, good);
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForOriginationEnd(badEndDate)
+                                .build());
+                assertInitEncryptSucceeds(transformation,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForConsumptionEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + transformation, e);
+            }
+        }
+    }
+
+    public void testEntropyConsumption() throws Exception {
+        // Assert that encryption consumes the correct amount of entropy from the provided
+        // SecureRandom and that decryption consumes no entropy.
+
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        CountingSecureRandom rng = new CountingSecureRandom();
+        for (String transformation : EXPECTED_ALGORITHMS) {
+            for (ImportedKey key : importKatKeys(
+                    transformation,
+                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                    true)) {
+                try {
+                    Cipher cipher = Cipher.getInstance(transformation, provider);
+                    Key encryptionKey = key.getKeystoreBackedEncryptionKey();
+                    byte[] plaintext = truncatePlaintextIfNecessary(
+                            transformation, encryptionKey, new byte[32]);
+                    if (plaintext == null) {
+                        // Key too short to encrypt anything using this transformation.
+                        continue;
+                    }
+                    Arrays.fill(plaintext, (byte) 0x1);
+
+                    // Cipher.init may only consume entropy for generating the IV.
+                    rng.resetCounters();
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, rng);
+                    int expectedEntropyBytesConsumedDuringInit;
+                    String keyAlgorithm = TestUtils.getCipherKeyAlgorithm(transformation);
+                    if (KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(keyAlgorithm)) {
+                        String blockMode =
+                                TestUtils.getCipherBlockMode(transformation).toUpperCase(Locale.US);
+                        // Entropy should consumed for IV generation only.
+                        switch (blockMode) {
+                            case "ECB":
+                                expectedEntropyBytesConsumedDuringInit = 0;
+                                break;
+                            case "CBC":
+                            case "CTR":
+                                expectedEntropyBytesConsumedDuringInit = 16;
+                                break;
+                            case "GCM":
+                                expectedEntropyBytesConsumedDuringInit = 12;
+                                break;
+                            default:
+                                throw new RuntimeException("Unsupported block mode " + blockMode);
+                        }
+                    } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+                        expectedEntropyBytesConsumedDuringInit = 0;
+                    } else {
+                        throw new RuntimeException("Unsupported key algorithm: " + transformation);
+                    }
+                    assertEquals(expectedEntropyBytesConsumedDuringInit, rng.getOutputSizeBytes());
+                    AlgorithmParameters params = cipher.getParameters();
+
+                    // Cipher.update should not consume entropy.
+                    rng.resetCounters();
+                    byte[] ciphertext = cipher.update(plaintext);
+                    assertEquals(0, rng.getOutputSizeBytes());
+
+                    // Cipher.doFinal may consume entropy to pad the message (RSA only).
+                    rng.resetCounters();
+                    ciphertext = TestUtils.concat(ciphertext, cipher.doFinal());
+                    int expectedEntropyBytesConsumedDuringDoFinal;
+                    if (KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(keyAlgorithm)) {
+                        expectedEntropyBytesConsumedDuringDoFinal = 0;
+                    } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+                        // Entropy should not be consumed during Cipher.init.
+                        String encryptionPadding =
+                                TestUtils.getCipherEncryptionPadding(transformation);
+                        if (KeyProperties.ENCRYPTION_PADDING_RSA_OAEP.equalsIgnoreCase(
+                                encryptionPadding)) {
+                            int digestOutputSizeBits =
+                                    TestUtils.getDigestOutputSizeBits(TestUtils.getCipherDigest(
+                                            transformation));
+                            expectedEntropyBytesConsumedDuringDoFinal =
+                                    (digestOutputSizeBits + 7) / 8;
+                        } else if (encryptionPadding.equalsIgnoreCase(
+                                KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)) {
+                            expectedEntropyBytesConsumedDuringDoFinal =
+                                    (TestUtils.getKeySizeBits(encryptionKey) + 7) / 8;
+                        } else if (encryptionPadding.equalsIgnoreCase(
+                                KeyProperties.ENCRYPTION_PADDING_NONE)) {
+                            expectedEntropyBytesConsumedDuringDoFinal = 0;
+                        } else {
+                            throw new RuntimeException(
+                                    "Unexpected encryption padding: " + encryptionPadding);
+                        }
+                    } else {
+                        throw new RuntimeException("Unsupported key algorithm: " + keyAlgorithm);
+                    }
+                    assertEquals(
+                            expectedEntropyBytesConsumedDuringDoFinal, rng.getOutputSizeBytes());
+
+                    // Assert that when initialization parameters are provided when encrypting, no
+                    // entropy is consumed by Cipher.init. This is because Cipher.init should only
+                    // use entropy for generating an IV which in this case no longer needs to be
+                    // generated because it's specified in the parameters.
+                    cipher = Cipher.getInstance(transformation, provider);
+                    rng.resetCounters();
+                    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey, params, rng);
+                    assertEquals(0, rng.getOutputSizeBytes());
+                    Key decryptionKey = key.getKeystoreBackedDecryptionKey();
+                    rng.resetCounters();
+                    cipher = Cipher.getInstance(transformation, provider);
+                    cipher.init(Cipher.DECRYPT_MODE, decryptionKey, params, rng);
+                    assertEquals(0, rng.getOutputSizeBytes());
+                    rng.resetCounters();
+                    cipher.update(ciphertext);
+                    assertEquals(0, rng.getOutputSizeBytes());
+                    rng.resetCounters();
+                    cipher.doFinal();
+                    assertEquals(0, rng.getOutputSizeBytes());
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + transformation + " with key " + key.getAlias(), e);
+                }
+            }
+        }
+    }
+
+    private AlgorithmParameterSpec getWorkingDecryptionParameterSpec(String transformation) {
+        String keyAlgorithm = TestUtils.getCipherKeyAlgorithm(transformation);
+        if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            return null;
+        } else if (KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(keyAlgorithm)) {
+            String blockMode = TestUtils.getCipherBlockMode(transformation);
+            if (KeyProperties.BLOCK_MODE_ECB.equalsIgnoreCase(blockMode)) {
+                return null;
+            } else if ((KeyProperties.BLOCK_MODE_CBC.equalsIgnoreCase(blockMode))
+                    || (KeyProperties.BLOCK_MODE_CTR.equalsIgnoreCase(blockMode))) {
+                return new IvParameterSpec(
+                        new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16});
+            } else if (KeyProperties.BLOCK_MODE_GCM.equalsIgnoreCase(blockMode)) {
+                return new GCMParameterSpec(
+                        128,
+                        new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12});
+            } else {
+                throw new IllegalArgumentException("Unsupported block mode: " + blockMode);
+            }
+        } else {
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+    }
+
+    private void assertInitDecryptSucceeds(String transformation, KeyProtection importParams)
+            throws Exception {
+        Cipher cipher = Cipher.getInstance(transformation, EXPECTED_PROVIDER_NAME);
+        Key key =
+                importDefaultKatKey(transformation, importParams).getKeystoreBackedDecryptionKey();
+        AlgorithmParameterSpec params = getWorkingDecryptionParameterSpec(transformation);
+        cipher.init(Cipher.DECRYPT_MODE, key, params);
+    }
+
+    private void assertInitDecryptThrowsInvalidKeyException(
+            String transformation, KeyProtection importParams) throws Exception {
+        Cipher cipher = Cipher.getInstance(transformation, EXPECTED_PROVIDER_NAME);
+        Key key =
+                importDefaultKatKey(transformation, importParams).getKeystoreBackedDecryptionKey();
+        AlgorithmParameterSpec params = getWorkingDecryptionParameterSpec(transformation);
+        try {
+            cipher.init(Cipher.DECRYPT_MODE, key, params);
+            fail("InvalidKeyException should have been thrown");
+        } catch (InvalidKeyException expected) {}
+    }
+
+    private void assertInitEncryptSucceeds(String transformation, KeyProtection importParams)
+            throws Exception {
+        Cipher cipher = Cipher.getInstance(transformation, EXPECTED_PROVIDER_NAME);
+        Key key =
+                importDefaultKatKey(transformation, importParams).getKeystoreBackedEncryptionKey();
+        cipher.init(Cipher.ENCRYPT_MODE, key);
+    }
+
+    private void assertInitEncryptThrowsInvalidKeyException(
+            String transformation, KeyProtection importParams) throws Exception {
+        Cipher cipher = Cipher.getInstance(transformation, EXPECTED_PROVIDER_NAME);
+        Key key =
+                importDefaultKatKey(transformation, importParams).getKeystoreBackedEncryptionKey();
+        try {
+            cipher.init(Cipher.ENCRYPT_MODE, key);
+            fail("InvalidKeyException should have been thrown");
+        } catch (InvalidKeyException expected) {}
+    }
+
+    private ImportedKey importDefaultKatKey(
+            String transformation, KeyProtection importParams)
+            throws Exception {
+        String keyAlgorithm = TestUtils.getCipherKeyAlgorithm(transformation);
+        if (KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(keyAlgorithm)) {
+            return TestUtils.importIntoAndroidKeyStore(
+                    "testAES",
+                    new SecretKeySpec(AES128_KAT_KEY_BYTES, "AES"),
+                    importParams);
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            return TestUtils.importIntoAndroidKeyStore(
+                    "testRSA",
+                    getContext(),
+                    R.raw.rsa_key2_pkcs8,
+                    R.raw.rsa_key2_cert,
+                    importParams);
+        } else {
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+    }
+
+    private ImportedKey importDefaultKatKey(
+            String transformation, int purposes, boolean ivProvidedWhenEncrypting)
+            throws Exception {
+        KeyProtection importParams = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                transformation, purposes, ivProvidedWhenEncrypting);
+        return importDefaultKatKey(transformation, importParams);
+    }
+
+    private Collection<ImportedKey> importKatKeys(
+            String transformation, int purposes, boolean ivProvidedWhenEncrypting)
+            throws Exception {
+        KeyProtection importParams = TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                transformation, purposes, ivProvidedWhenEncrypting);
+        String keyAlgorithm = TestUtils.getCipherKeyAlgorithm(transformation);
+        if (KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(keyAlgorithm)) {
+            return Arrays.asList(
+                    TestUtils.importIntoAndroidKeyStore(
+                            "testAES128",
+                            new SecretKeySpec(AES128_KAT_KEY_BYTES, "AES"),
+                            importParams),
+                    TestUtils.importIntoAndroidKeyStore(
+                            "testAES192",
+                            new SecretKeySpec(AES192_KAT_KEY_BYTES, "AES"),
+                            importParams),
+                    TestUtils.importIntoAndroidKeyStore(
+                            "testAES256",
+                            new SecretKeySpec(AES256_KAT_KEY_BYTES, "AES"),
+                            importParams)
+                    );
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            return RSASignatureTest.importKatKeyPairs(getContext(), importParams);
+        } else {
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+    }
+
+    private static boolean isSymmetric(String transformation) {
+        return TestUtils.isCipherSymmetric(transformation);
+    }
+
+    private static byte[] truncatePlaintextIfNecessary(
+            String transformation, Key encryptionKey, byte[] plaintext) {
+        int maxSupportedPlaintextSizeBytes =
+                TestUtils.getMaxSupportedPlaintextInputSizeBytes(
+                        transformation, encryptionKey);
+        if (plaintext.length <= maxSupportedPlaintextSizeBytes) {
+            // No need to truncate
+            return plaintext;
+        } else if (maxSupportedPlaintextSizeBytes < 0) {
+            // Key too short to encrypt anything at all using this transformation
+            return null;
+        } else {
+            // Truncate plaintext to exercise this transformation with this key
+            return Arrays.copyOf(plaintext, maxSupportedPlaintextSizeBytes);
+        }
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/ECDSASignatureTest.java b/tests/tests/keystore/src/android/keystore/cts/ECDSASignatureTest.java
index 2330209..ea3940d 100644
--- a/tests/tests/keystore/src/android/keystore/cts/ECDSASignatureTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/ECDSASignatureTest.java
@@ -16,38 +16,37 @@
 
 package android.keystore.cts;
 
-import android.security.keystore.KeyGenParameterSpec;
-import android.security.keystore.KeyProperties;
+import android.content.Context;
+import android.security.keystore.KeyProtection;
+import android.test.AndroidTestCase;
 
-import junit.framework.TestCase;
+import com.android.cts.keystore.R;
 
 import java.security.KeyPair;
-import java.security.KeyPairGenerator;
 import java.security.Security;
 import java.security.Signature;
+import java.util.Arrays;
+import java.util.Collection;
 
-public class ECDSASignatureTest extends TestCase {
+public class ECDSASignatureTest extends AndroidTestCase {
 
     public void testNONEwithECDSATruncatesInputToFieldSize() throws Exception {
-        assertNONEwithECDSATruncatesInputToFieldSize(224);
-        assertNONEwithECDSATruncatesInputToFieldSize(256);
-        assertNONEwithECDSATruncatesInputToFieldSize(384);
-        assertNONEwithECDSATruncatesInputToFieldSize(521);
+        for (ImportedKey key : importKatKeyPairs("NONEwithECDSA")) {
+            try {
+                assertNONEwithECDSATruncatesInputToFieldSize(key.getKeystoreBackedKeyPair());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + key.getAlias(), e);
+            }
+        }
     }
 
-    private void assertNONEwithECDSATruncatesInputToFieldSize(int keySizeBits) throws Exception {
+    private void assertNONEwithECDSATruncatesInputToFieldSize(KeyPair keyPair)
+            throws Exception {
+        int keySizeBits = TestUtils.getKeySizeBits(keyPair.getPublic());
         byte[] message = new byte[(keySizeBits * 3) / 8];
         for (int i = 0; i < message.length; i++) {
             message[i] = (byte) (i + 1);
         }
-        KeyPairGenerator generator = KeyPairGenerator.getInstance("EC", "AndroidKeyStore");
-        generator.initialize(new KeyGenParameterSpec.Builder(
-                "test1",
-                KeyProperties.PURPOSE_SIGN)
-                .setDigests(KeyProperties.DIGEST_NONE)
-                .setKeySize(keySizeBits)
-                .build());
-        KeyPair keyPair = generator.generateKeyPair();
 
         Signature signature = Signature.getInstance("NONEwithECDSA");
         signature.initSign(keyPair.getPrivate());
@@ -73,26 +72,23 @@
     }
 
     public void testNONEwithECDSASupportsMessagesShorterThanFieldSize() throws Exception {
-        assertNONEwithECDSASupportsMessagesShorterThanFieldSize(224);
-        assertNONEwithECDSASupportsMessagesShorterThanFieldSize(256);
-        assertNONEwithECDSASupportsMessagesShorterThanFieldSize(384);
-        assertNONEwithECDSASupportsMessagesShorterThanFieldSize(521);
+        for (ImportedKey key : importKatKeyPairs("NONEwithECDSA")) {
+            try {
+                assertNONEwithECDSASupportsMessagesShorterThanFieldSize(
+                        key.getKeystoreBackedKeyPair());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + key.getAlias(), e);
+            }
+        }
     }
 
-    private void assertNONEwithECDSASupportsMessagesShorterThanFieldSize(
-            int keySizeBits) throws Exception {
+    private void assertNONEwithECDSASupportsMessagesShorterThanFieldSize(KeyPair keyPair)
+            throws Exception {
+        int keySizeBits = TestUtils.getKeySizeBits(keyPair.getPublic());
         byte[] message = new byte[(keySizeBits * 3 / 4) / 8];
         for (int i = 0; i < message.length; i++) {
             message[i] = (byte) (i + 1);
         }
-        KeyPairGenerator generator = KeyPairGenerator.getInstance("EC", "AndroidKeyStore");
-        generator.initialize(new KeyGenParameterSpec.Builder(
-                "test1",
-                KeyProperties.PURPOSE_SIGN)
-                .setDigests(KeyProperties.DIGEST_NONE)
-                .setKeySize(keySizeBits)
-                .build());
-        KeyPair keyPair = generator.generateKeyPair();
 
         Signature signature = Signature.getInstance("NONEwithECDSA");
         signature.initSign(keyPair.getPrivate());
@@ -109,11 +105,29 @@
         assertTrue(signature.verify(sigBytes));
 
         // Assert that the message is left-padded with zero bits
-        byte[] fullLengthMessage = new byte[keySizeBits / 8];
-        System.arraycopy(message, 0,
-                fullLengthMessage, fullLengthMessage.length - message.length,
-                message.length);
+        byte[] fullLengthMessage = TestUtils.leftPadWithZeroBytes(message, keySizeBits / 8);
         signature.update(fullLengthMessage);
         assertTrue(signature.verify(sigBytes));
     }
+
+    private Collection<ImportedKey> importKatKeyPairs(String signatureAlgorithm)
+            throws Exception {
+        KeyProtection params =
+                TestUtils.getMinimalWorkingImportParametersForSigningingWith(signatureAlgorithm);
+        return importKatKeyPairs(getContext(), params);
+    }
+
+    static Collection<ImportedKey> importKatKeyPairs(
+            Context context, KeyProtection importParams) throws Exception {
+        return Arrays.asList(new ImportedKey[] {
+                TestUtils.importIntoAndroidKeyStore("testECsecp224r1", context,
+                        R.raw.ec_key3_secp224r1_pkcs8, R.raw.ec_key3_secp224r1_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testECsecp256r1", context,
+                        R.raw.ec_key4_secp256r1_pkcs8, R.raw.ec_key4_secp256r1_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testECsecp384r1", context,
+                        R.raw.ec_key5_secp384r1_pkcs8, R.raw.ec_key5_secp384r1_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testECsecp521r1", context,
+                        R.raw.ec_key6_secp521r1_pkcs8, R.raw.ec_key6_secp521r1_cert, importParams),
+                });
+    }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/EmptyArray.java b/tests/tests/keystore/src/android/keystore/cts/EmptyArray.java
index 90ac2c4..bf08b73 100644
--- a/tests/tests/keystore/src/android/keystore/cts/EmptyArray.java
+++ b/tests/tests/keystore/src/android/keystore/cts/EmptyArray.java
@@ -20,4 +20,5 @@
     private EmptyArray() {}
 
     public static final byte[] BYTE = new byte[0];
+    public static final String[] STRING = new String[0];
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/ImportedKey.java b/tests/tests/keystore/src/android/keystore/cts/ImportedKey.java
new file mode 100644
index 0000000..b6c868f
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/ImportedKey.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+import java.security.Key;
+import java.security.KeyPair;
+
+import javax.crypto.SecretKey;
+
+public class ImportedKey {
+    private final boolean mSymmetric;
+    private final String mAlias;
+    private final KeyPair mOriginalKeyPair;
+    private final KeyPair mKeystoreBackedKeyPair;
+    private final SecretKey mOriginalSecretKey;
+    private final SecretKey mKeystoreBackedSecretKey;
+
+    public ImportedKey(String alias, KeyPair original, KeyPair keystoreBacked) {
+        mAlias = alias;
+        mSymmetric = false;
+        mOriginalKeyPair = original;
+        mKeystoreBackedKeyPair = keystoreBacked;
+        mOriginalSecretKey = null;
+        mKeystoreBackedSecretKey = null;
+    }
+
+    public ImportedKey(String alias, SecretKey original, SecretKey keystoreBacked) {
+        mAlias = alias;
+        mSymmetric = true;
+        mOriginalKeyPair = null;
+        mKeystoreBackedKeyPair = null;
+        mOriginalSecretKey = original;
+        mKeystoreBackedSecretKey = keystoreBacked;
+    }
+
+    public String getAlias() {
+        return mAlias;
+    }
+
+    public Key getOriginalEncryptionKey() {
+        if (mSymmetric) {
+            return mOriginalSecretKey;
+        } else {
+            return mOriginalKeyPair.getPublic();
+        }
+    }
+
+    public Key getOriginalDecryptionKey() {
+        if (mSymmetric) {
+            return mOriginalSecretKey;
+        } else {
+            return mOriginalKeyPair.getPrivate();
+        }
+    }
+
+    public Key getOriginalSigningKey() {
+        if (mSymmetric) {
+            return mOriginalSecretKey;
+        } else {
+            return mOriginalKeyPair.getPrivate();
+        }
+    }
+
+    public Key getOriginalVerificationKey() {
+        if (mSymmetric) {
+            return mOriginalSecretKey;
+        } else {
+            return mOriginalKeyPair.getPublic();
+        }
+    }
+
+    public Key getKeystoreBackedEncryptionKey() {
+        if (mSymmetric) {
+            return mKeystoreBackedSecretKey;
+        } else {
+            return mKeystoreBackedKeyPair.getPublic();
+        }
+    }
+
+    public Key getKeystoreBackedDecryptionKey() {
+        if (mSymmetric) {
+            return mKeystoreBackedSecretKey;
+        } else {
+            return mKeystoreBackedKeyPair.getPrivate();
+        }
+    }
+
+    public Key getKeystoreBackedSigningKey() {
+        if (mSymmetric) {
+            return mKeystoreBackedSecretKey;
+        } else {
+            return mKeystoreBackedKeyPair.getPrivate();
+        }
+    }
+
+    public Key getKeystoreBackedVerificationKey() {
+        if (mSymmetric) {
+            return mKeystoreBackedSecretKey;
+        } else {
+            return mKeystoreBackedKeyPair.getPublic();
+        }
+    }
+
+
+    public KeyPair getOriginalKeyPair() {
+        checkIsKeyPair();
+        return mOriginalKeyPair;
+    }
+
+    public KeyPair getKeystoreBackedKeyPair() {
+        checkIsKeyPair();
+        return mKeystoreBackedKeyPair;
+    }
+
+    public SecretKey getOriginalSecretKey() {
+        checkIsSecretKey();
+        return mOriginalSecretKey;
+    }
+
+    public SecretKey getKeystoreBackedSecretKey() {
+        checkIsSecretKey();
+        return mKeystoreBackedSecretKey;
+    }
+
+    private void checkIsKeyPair() {
+        if (mSymmetric) {
+            throw new IllegalStateException("Not a KeyPair");
+        }
+    }
+
+    private void checkIsSecretKey() {
+        if (!mSymmetric) {
+            throw new IllegalStateException("Not a SecretKey");
+        }
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyFactoryTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyFactoryTest.java
new file mode 100644
index 0000000..344e75a
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyFactoryTest.java
@@ -0,0 +1,477 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyInfo;
+import android.security.keystore.KeyProperties;
+import android.test.AndroidTestCase;
+import android.test.MoreAsserts;
+
+import com.android.cts.keystore.R;
+
+import java.io.InputStream;
+import java.security.InvalidKeyException;
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.PrivateKey;
+import java.security.Provider;
+import java.security.Security;
+import java.security.interfaces.ECPublicKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.ECPrivateKeySpec;
+import java.security.spec.ECPublicKeySpec;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.RSAPrivateKeySpec;
+import java.security.spec.RSAPublicKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import java.security.Provider.Service;
+import java.security.PublicKey;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+public class KeyFactoryTest extends AndroidTestCase {
+    private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_PROVIDER_NAME;
+
+    private static final String[] EXPECTED_ALGORITHMS = {
+        "EC",
+        "RSA",
+    };
+
+    public void testAlgorithmList() {
+        // Assert that Android Keystore Provider exposes exactly the expected KeyFactory algorithms.
+        // We don't care whether the algorithms are exposed via aliases, as long as canonical names
+        // of algorithms are accepted. If the Provider exposes extraneous algorithms, it'll be
+        // caught because it'll have to expose at least one Service for such an algorithm, and this
+        // Service's algorithm will not be in the expected set.
+
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        Set<Service> services = provider.getServices();
+        Set<String> actualAlgsLowerCase = new HashSet<String>();
+        Set<String> expectedAlgsLowerCase = new HashSet<String>(
+                Arrays.asList(TestUtils.toLowerCase(EXPECTED_ALGORITHMS)));
+        for (Service service : services) {
+            if ("KeyFactory".equalsIgnoreCase(service.getType())) {
+                String algLowerCase = service.getAlgorithm().toLowerCase(Locale.US);
+                actualAlgsLowerCase.add(algLowerCase);
+            }
+        }
+
+        TestUtils.assertContentsInAnyOrder(actualAlgsLowerCase,
+                expectedAlgsLowerCase.toArray(new String[0]));
+    }
+
+    public void testGetKeySpecWithKeystorePrivateKeyAndKeyInfoReflectsAllAuthorizations()
+            throws Exception {
+        Date keyValidityStart = new Date(System.currentTimeMillis() - TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForOriginationEnd =
+                new Date(System.currentTimeMillis() + TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForConsumptionEnd =
+                new Date(System.currentTimeMillis() + 3 * TestUtils.DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                String[] blockModes = new String[] {KeyProperties.BLOCK_MODE_ECB};
+                String[] encryptionPaddings =
+                        new String[] {KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1,
+                                KeyProperties.ENCRYPTION_PADDING_RSA_OAEP};
+                String[] digests = new String[] {KeyProperties.DIGEST_SHA1,
+                        KeyProperties.DIGEST_SHA224,
+                        KeyProperties.DIGEST_SHA384,
+                        KeyProperties.DIGEST_SHA512};
+                int purposes = KeyProperties.PURPOSE_DECRYPT | KeyProperties.PURPOSE_SIGN;
+                KeyPairGenerator keyGenerator =
+                        KeyPairGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.initialize(new KeyGenParameterSpec.Builder("test1", purposes)
+                        .setBlockModes(blockModes)
+                        .setEncryptionPaddings(encryptionPaddings)
+                        .setDigests(digests)
+                        .setKeyValidityStart(keyValidityStart)
+                        .setKeyValidityForOriginationEnd(keyValidityForOriginationEnd)
+                        .setKeyValidityForConsumptionEnd(keyValidityForConsumptionEnd)
+                        .build());
+                KeyPair keyPair = keyGenerator.generateKeyPair();
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                KeyInfo keyInfo = keyFactory.getKeySpec(keyPair.getPrivate(), KeyInfo.class);
+                assertEquals("test1", keyInfo.getKeystoreAlias());
+                assertEquals(purposes, keyInfo.getPurposes());
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(blockModes), keyInfo.getBlockModes());
+                List<String> encryptionPaddingsList =
+                        new ArrayList<String>(Arrays.asList(encryptionPaddings));
+                if (keyInfo.getEncryptionPaddings().length > encryptionPaddingsList.size()) {
+                    // Keystore may have added ENCRYPTION_PADDING_NONE to allow software digesting.
+                    encryptionPaddingsList.add(KeyProperties.ENCRYPTION_PADDING_NONE);
+                }
+                TestUtils.assertContentsInAnyOrder(
+                        encryptionPaddingsList, keyInfo.getEncryptionPaddings());
+                List<String> digestsList = new ArrayList<String>(Arrays.asList(digests));
+                if (keyInfo.getDigests().length > digestsList.size()) {
+                    // Keystore may have added DIGEST_NONE to allow software digesting.
+                    digestsList.add(KeyProperties.DIGEST_NONE);
+                }
+                TestUtils.assertContentsInAnyOrder(digestsList, keyInfo.getDigests());
+                MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
+                assertEquals(keyValidityStart, keyInfo.getKeyValidityStart());
+                assertEquals(keyValidityForOriginationEnd,
+                        keyInfo.getKeyValidityForOriginationEnd());
+                assertEquals(keyValidityForConsumptionEnd,
+                        keyInfo.getKeyValidityForConsumptionEnd());
+                assertFalse(keyInfo.isUserAuthenticationRequired());
+                assertFalse(keyInfo.isUserAuthenticationRequirementEnforcedBySecureHardware());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGetKeySpecWithKeystorePublicKeyRejectsKeyInfo()
+            throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator keyGenerator =
+                        KeyPairGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.initialize(new KeyGenParameterSpec.Builder("test1", 0).build());
+                KeyPair keyPair = keyGenerator.generateKeyPair();
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.getKeySpec(keyPair.getPublic(), KeyInfo.class);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGetKeySpecWithKeystorePrivateKeyRejectsTransparentKeySpecAndEncodedKeySpec()
+            throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                Class<? extends KeySpec> transparentKeySpecClass;
+                if ("EC".equalsIgnoreCase(algorithm)) {
+                    transparentKeySpecClass = ECPrivateKeySpec.class;
+                } else if ("RSA".equalsIgnoreCase(algorithm)) {
+                    transparentKeySpecClass = RSAPrivateKeySpec.class;
+                } else {
+                    throw new RuntimeException("Unsupported key algorithm: " + algorithm);
+                }
+
+                KeyPairGenerator keyGenerator =
+                        KeyPairGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.initialize(new KeyGenParameterSpec.Builder("test1", 0).build());
+                KeyPair keyPair = keyGenerator.generateKeyPair();
+
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.getKeySpec(keyPair.getPrivate(), transparentKeySpecClass);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+
+                try {
+                    keyFactory.getKeySpec(keyPair.getPrivate(), PKCS8EncodedKeySpec.class);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGetKeySpecWithKeystorePublicKeyAcceptsX509EncodedKeySpec()
+            throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator keyGenerator =
+                        KeyPairGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.initialize(new KeyGenParameterSpec.Builder("test1", 0).build());
+                KeyPair keyPair = keyGenerator.generateKeyPair();
+                PublicKey publicKey = keyPair.getPublic();
+
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                X509EncodedKeySpec x509EncodedSpec =
+                        keyFactory.getKeySpec(publicKey, X509EncodedKeySpec.class);
+                MoreAsserts.assertEquals(publicKey.getEncoded(), x509EncodedSpec.getEncoded());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGetKeySpecWithKeystorePublicKeyAcceptsTransparentKeySpec()
+            throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator keyGenerator =
+                        KeyPairGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.initialize(new KeyGenParameterSpec.Builder("test1", 0).build());
+                KeyPair keyPair = keyGenerator.generateKeyPair();
+                PublicKey publicKey = keyPair.getPublic();
+
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                if ("EC".equalsIgnoreCase(algorithm)) {
+                    ECPublicKey ecPublicKey = (ECPublicKey) publicKey;
+                    ECPublicKeySpec spec =
+                            keyFactory.getKeySpec(publicKey, ECPublicKeySpec.class);
+                    assertEquals(ecPublicKey.getW(), spec.getW());
+                    TestUtils.assertECParameterSpecEqualsIgnoreSeedIfNotPresent(
+                            ecPublicKey.getParams(), spec.getParams());
+                } else if ("RSA".equalsIgnoreCase(algorithm)) {
+                    RSAPublicKey rsaPublicKey = (RSAPublicKey) publicKey;
+                    RSAPublicKeySpec spec =
+                            keyFactory.getKeySpec(publicKey, RSAPublicKeySpec.class);
+                    assertEquals(rsaPublicKey.getModulus(), spec.getModulus());
+                    assertEquals(rsaPublicKey.getPublicExponent(), spec.getPublicExponent());
+                } else {
+                    throw new RuntimeException("Unsupported key algorithm: " + algorithm);
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testTranslateKeyWithNullKeyThrowsInvalidKeyException() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.translateKey(null);
+                    fail();
+                } catch (InvalidKeyException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testTranslateKeyRejectsNonAndroidKeystoreKeys() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                SecretKey key = new SecretKeySpec(new byte[16], algorithm);
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.translateKey(key);
+                    fail();
+                } catch (InvalidKeyException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testTranslateKeyAcceptsAndroidKeystoreKeys() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator keyGenerator =
+                        KeyPairGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.initialize(new KeyGenParameterSpec.Builder("test1", 0).build());
+                KeyPair keyPair = keyGenerator.generateKeyPair();
+
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                assertSame(keyPair.getPrivate(), keyFactory.translateKey(keyPair.getPrivate()));
+                assertSame(keyPair.getPublic(), keyFactory.translateKey(keyPair.getPublic()));
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGeneratePrivateWithNullSpecThrowsInvalidKeySpecException() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generatePrivate(null);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGeneratePublicWithNullSpecThrowsInvalidKeySpecException() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generatePublic(null);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGeneratePrivateRejectsPKCS8EncodedKeySpec() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            int resId;
+            if ("EC".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.ec_key1_pkcs8;
+            } else if ("RSA".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.rsa_key2_pkcs8;
+            } else {
+                throw new RuntimeException("Unsupported key algorithm: " + algorithm);
+            }
+
+            byte[] pkcs8EncodedForm;
+            try (InputStream in = getContext().getResources().openRawResource(resId)) {
+                pkcs8EncodedForm = TestUtils.drain(in);
+            }
+            PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(pkcs8EncodedForm);
+            try {
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generatePrivate(spec);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGeneratePublicRejectsX509EncodedKeySpec() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            int resId;
+            if ("EC".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.ec_key2_cert;
+            } else if ("RSA".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.rsa_key1_cert;
+            } else {
+                throw new RuntimeException("Unsupported key algorithm: " + algorithm);
+            }
+
+            byte[] x509EncodedForm;
+            try (InputStream in = getContext().getResources().openRawResource(resId)) {
+                x509EncodedForm = TestUtils.drain(in);
+            }
+            X509EncodedKeySpec spec = new X509EncodedKeySpec(x509EncodedForm);
+            try {
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generatePublic(spec);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGeneratePrivateRejectsTransparentKeySpec() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            int resId;
+            Class<? extends KeySpec> keySpecClass;
+            if ("EC".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.ec_key2_pkcs8;
+                keySpecClass = ECPrivateKeySpec.class;
+            } else if ("RSA".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.rsa_key2_pkcs8;
+                keySpecClass = RSAPrivateKeySpec.class;
+            } else {
+                throw new RuntimeException("Unsupported key algorithm: " + algorithm);
+            }
+            PrivateKey key = TestUtils.getRawResPrivateKey(getContext(), resId);
+            KeyFactory anotherKeyFactory = KeyFactory.getInstance(algorithm);
+            KeySpec spec = anotherKeyFactory.getKeySpec(key, keySpecClass);
+
+            try {
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generatePrivate(spec);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGeneratePublicRejectsTransparentKeySpec() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            int resId;
+            Class<? extends KeySpec> keySpecClass;
+            if ("EC".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.ec_key2_cert;
+                keySpecClass = ECPublicKeySpec.class;
+            } else if ("RSA".equalsIgnoreCase(algorithm)) {
+                resId = R.raw.rsa_key2_cert;
+                keySpecClass = RSAPublicKeySpec.class;
+            } else {
+                throw new RuntimeException("Unsupported key algorithm: " + algorithm);
+            }
+            PublicKey key = TestUtils.getRawResX509Certificate(getContext(), resId).getPublicKey();
+            KeyFactory anotherKeyFactory = KeyFactory.getInstance(algorithm);
+            KeySpec spec = anotherKeyFactory.getKeySpec(key, keySpecClass);
+
+            try {
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generatePublic(spec);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGeneratePrivateAndPublicRejectKeyInfo() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator keyGenerator =
+                        KeyPairGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.initialize(new KeyGenParameterSpec.Builder("test1", 0).build());
+                KeyPair keyPair = keyGenerator.generateKeyPair();
+                KeyInfo keyInfo = TestUtils.getKeyInfo(keyPair.getPrivate());
+
+                KeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generatePrivate(keyInfo);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+
+                try {
+                    keyFactory.generatePublic(keyInfo);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    private KeyFactory getKeyFactory(String algorithm) throws NoSuchAlgorithmException,
+            NoSuchProviderException {
+        return KeyFactory.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java
new file mode 100644
index 0000000..6deaed4
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java
@@ -0,0 +1,528 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyInfo;
+import android.security.keystore.KeyProperties;
+import android.test.MoreAsserts;
+
+import junit.framework.TestCase;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Provider;
+import java.security.Security;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.ECGenParameterSpec;
+import java.security.Provider.Service;
+import java.security.SecureRandom;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+
+public class KeyGeneratorTest extends TestCase {
+    private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_PROVIDER_NAME;
+
+    static final String[] EXPECTED_ALGORITHMS = {
+        "AES",
+        "HmacSHA1",
+        "HmacSHA224",
+        "HmacSHA256",
+        "HmacSHA384",
+        "HmacSHA512",
+    };
+
+    private static final Map<String, Integer> DEFAULT_KEY_SIZES =
+            new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+    static {
+        DEFAULT_KEY_SIZES.put("AES", 128);
+        DEFAULT_KEY_SIZES.put("HmacSHA1", 160);
+        DEFAULT_KEY_SIZES.put("HmacSHA224", 224);
+        DEFAULT_KEY_SIZES.put("HmacSHA256", 256);
+        DEFAULT_KEY_SIZES.put("HmacSHA384", 384);
+        DEFAULT_KEY_SIZES.put("HmacSHA512", 512);
+    }
+
+    static final int[] AES_SUPPORTED_KEY_SIZES = new int[] {128, 192, 256};
+
+    public void testAlgorithmList() {
+        // Assert that Android Keystore Provider exposes exactly the expected KeyGenerator
+        // algorithms. We don't care whether the algorithms are exposed via aliases, as long as
+        // canonical names of algorithms are accepted. If the Provider exposes extraneous
+        // algorithms, it'll be caught because it'll have to expose at least one Service for such an
+        // algorithm, and this Service's algorithm will not be in the expected set.
+
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        Set<Service> services = provider.getServices();
+        Set<String> actualAlgsLowerCase = new HashSet<String>();
+        Set<String> expectedAlgsLowerCase = new HashSet<String>(
+                Arrays.asList(TestUtils.toLowerCase(EXPECTED_ALGORITHMS)));
+        for (Service service : services) {
+            if ("KeyGenerator".equalsIgnoreCase(service.getType())) {
+                String algLowerCase = service.getAlgorithm().toLowerCase(Locale.US);
+                actualAlgsLowerCase.add(algLowerCase);
+            }
+        }
+
+        TestUtils.assertContentsInAnyOrder(actualAlgsLowerCase,
+                expectedAlgsLowerCase.toArray(new String[0]));
+    }
+
+    public void testGenerateWithoutInitThrowsIllegalStateException() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.generateKey();
+                    fail();
+                } catch (IllegalStateException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithKeySizeThrowsUnsupportedOperationException() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                int keySizeBits = DEFAULT_KEY_SIZES.get(algorithm);
+                try {
+                    keyGenerator.init(keySizeBits);
+                    fail();
+                } catch (UnsupportedOperationException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithKeySizeAndSecureRandomThrowsUnsupportedOperationException()
+            throws Exception {
+        SecureRandom rng = new SecureRandom();
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                int keySizeBits = DEFAULT_KEY_SIZES.get(algorithm);
+                try {
+                    keyGenerator.init(keySizeBits, rng);
+                    fail();
+                } catch (UnsupportedOperationException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithNullAlgParamsThrowsInvalidAlgorithmParameterException()
+            throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.init((AlgorithmParameterSpec) null);
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithNullAlgParamsAndSecureRandomThrowsInvalidAlgorithmParameterException()
+            throws Exception {
+        SecureRandom rng = new SecureRandom();
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.init((AlgorithmParameterSpec) null, rng);
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithAlgParamsAndNullSecureRandom()
+            throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                keyGenerator.init(getWorkingSpec().build(), (SecureRandom) null);
+                // Check that generateKey doesn't fail either, just in case null SecureRandom
+                // causes trouble there.
+                keyGenerator.generateKey();
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnsupportedAlgParamsTypeThrowsInvalidAlgorithmParameterException()
+            throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.init(new ECGenParameterSpec("secp256r1"));
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testDefaultKeySize() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                int expectedSizeBits = DEFAULT_KEY_SIZES.get(algorithm);
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                keyGenerator.init(getWorkingSpec().build());
+                SecretKey key = keyGenerator.generateKey();
+                assertEquals(expectedSizeBits, TestUtils.getKeyInfo(key).getKeySize());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testAesKeySupportedSizes() throws Exception {
+        KeyGenerator keyGenerator = getKeyGenerator("AES");
+        KeyGenParameterSpec.Builder goodSpec = getWorkingSpec();
+        CountingSecureRandom rng = new CountingSecureRandom();
+        for (int i = -16; i <= 512; i++) {
+            try {
+                rng.resetCounters();
+                KeyGenParameterSpec spec;
+                if (i >= 0) {
+                    spec = TestUtils.buildUpon(goodSpec.setKeySize(i)).build();
+                } else {
+                    try {
+                        spec = TestUtils.buildUpon(goodSpec.setKeySize(i)).build();
+                        fail();
+                    } catch (IllegalArgumentException expected) {
+                        continue;
+                    }
+                }
+                rng.resetCounters();
+                if (TestUtils.contains(AES_SUPPORTED_KEY_SIZES, i)) {
+                    keyGenerator.init(spec, rng);
+                    SecretKey key = keyGenerator.generateKey();
+                    assertEquals(i, TestUtils.getKeyInfo(key).getKeySize());
+                    assertEquals((i + 7) / 8, rng.getOutputSizeBytes());
+                } else {
+                    try {
+                        keyGenerator.init(spec, rng);
+                        fail();
+                    } catch (InvalidAlgorithmParameterException expected) {}
+                    assertEquals(0, rng.getOutputSizeBytes());
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key size " + i, e);
+            }
+        }
+    }
+
+    public void testHmacKeySupportedSizes() throws Exception {
+        CountingSecureRandom rng = new CountingSecureRandom();
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            if (!TestUtils.isHmacAlgorithm(algorithm)) {
+                continue;
+            }
+
+            for (int i = -16; i <= 1024; i++) {
+                try {
+                    rng.resetCounters();
+                    KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                    KeyGenParameterSpec spec;
+                    if (i >= 0) {
+                        spec = getWorkingSpec().setKeySize(i).build();
+                    } else {
+                        try {
+                            spec = getWorkingSpec().setKeySize(i).build();
+                            fail();
+                        } catch (IllegalArgumentException expected) {
+                            continue;
+                        }
+                    }
+                    if ((i > 0) && ((i % 8 ) == 0)) {
+                        keyGenerator.init(spec, rng);
+                        SecretKey key = keyGenerator.generateKey();
+                        assertEquals(i, TestUtils.getKeyInfo(key).getKeySize());
+                        assertEquals((i + 7) / 8, rng.getOutputSizeBytes());
+                    } else {
+                        try {
+                            keyGenerator.init(spec, rng);
+                            fail();
+                        } catch (InvalidAlgorithmParameterException expected) {}
+                        assertEquals(0, rng.getOutputSizeBytes());
+                    }
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key size " + i, e);
+                }
+            }
+        }
+    }
+
+    public void testHmacKeyOnlyOneDigestCanBeAuthorized() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            if (!TestUtils.isHmacAlgorithm(algorithm)) {
+                continue;
+            }
+
+            try {
+                String digest = TestUtils.getHmacAlgorithmDigest(algorithm);
+                assertNotNull(digest);
+
+                KeyGenParameterSpec.Builder goodSpec = new KeyGenParameterSpec.Builder(
+                        "test1", KeyProperties.PURPOSE_SIGN);
+
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+
+                // Digests authorization not specified in algorithm parameters
+                assertFalse(goodSpec.build().isDigestsSpecified());
+                keyGenerator.init(goodSpec.build());
+                SecretKey key = keyGenerator.generateKey();
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(TestUtils.getKeyInfo(key).getDigests()), digest);
+
+                // The same digest is specified in algorithm parameters
+                keyGenerator.init(TestUtils.buildUpon(goodSpec).setDigests(digest).build());
+                key = keyGenerator.generateKey();
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(TestUtils.getKeyInfo(key).getDigests()), digest);
+
+                // No digests specified in algorithm parameters
+                try {
+                    keyGenerator.init(TestUtils.buildUpon(goodSpec).setDigests().build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+
+                // A different digest specified in algorithm parameters
+                String anotherDigest = "SHA-256".equalsIgnoreCase(digest) ? "SHA-384" : "SHA-256";
+                try {
+                    keyGenerator.init(TestUtils.buildUpon(goodSpec)
+                            .setDigests(anotherDigest)
+                            .build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+                try {
+                    keyGenerator.init(TestUtils.buildUpon(goodSpec)
+                            .setDigests(digest, anotherDigest)
+                            .build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnknownBlockModeFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.init(getWorkingSpec().setBlockModes("weird").build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnknownEncryptionPaddingFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.init(getWorkingSpec().setEncryptionPaddings("weird").build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithSignaturePaddingFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.init(getWorkingSpec()
+                            .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
+                            .build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnknownDigestFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    String[] digests;
+                    if (TestUtils.isHmacAlgorithm(algorithm)) {
+                        // The digest from HMAC key algorithm must be specified in the list of
+                        // authorized digests (if the list if provided).
+                        digests = new String[] {algorithm, "weird"};
+                    } else {
+                        digests = new String[] {"weird"};
+                    }
+                    keyGenerator.init(getWorkingSpec().setDigests(digests).build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithKeyAlgorithmDigestMissingFromAuthorizedDigestFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            if (!TestUtils.isHmacAlgorithm(algorithm)) {
+                continue;
+            }
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+
+                // Authorized for digest(s) none of which is the one implied by key algorithm.
+                try {
+                    String digest = TestUtils.getHmacAlgorithmDigest(algorithm);
+                    String anotherDigest = KeyProperties.DIGEST_SHA256.equalsIgnoreCase(digest)
+                            ? KeyProperties.DIGEST_SHA512 : KeyProperties.DIGEST_SHA256;
+                    keyGenerator.init(getWorkingSpec().setDigests(anotherDigest).build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+
+                // Authorized for empty set of digests
+                try {
+                    keyGenerator.init(getWorkingSpec().setDigests().build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitRandomizedEncryptionRequiredButViolatedFails() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                try {
+                    keyGenerator.init(getWorkingSpec(
+                            KeyProperties.PURPOSE_ENCRYPT)
+                            .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
+                            .build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGenerateHonorsRequestedAuthorizations() throws Exception {
+        Date keyValidityStart = new Date(System.currentTimeMillis() - TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForOriginationEnd =
+                new Date(System.currentTimeMillis() + TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForConsumptionEnd =
+                new Date(System.currentTimeMillis() + 3 * TestUtils.DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                String[] blockModes =
+                        new String[] {KeyProperties.BLOCK_MODE_GCM, KeyProperties.BLOCK_MODE_CBC};
+                String[] encryptionPaddings =
+                        new String[] {KeyProperties.ENCRYPTION_PADDING_PKCS7,
+                                KeyProperties.ENCRYPTION_PADDING_NONE};
+                String[] digests;
+                int purposes;
+                if (TestUtils.isHmacAlgorithm(algorithm)) {
+                    // HMAC key can only be authorized for one digest, the one implied by the key's
+                    // JCA algorithm name.
+                    digests = new String[] {TestUtils.getHmacAlgorithmDigest(algorithm)};
+                    purposes = KeyProperties.PURPOSE_SIGN;
+                } else {
+                    digests = new String[] {KeyProperties.DIGEST_SHA384, KeyProperties.DIGEST_SHA1};
+                    purposes = KeyProperties.PURPOSE_DECRYPT;
+                }
+                KeyGenerator keyGenerator = getKeyGenerator(algorithm);
+                keyGenerator.init(getWorkingSpec(purposes)
+                        .setBlockModes(blockModes)
+                        .setEncryptionPaddings(encryptionPaddings)
+                        .setDigests(digests)
+                        .setKeyValidityStart(keyValidityStart)
+                        .setKeyValidityForOriginationEnd(keyValidityForOriginationEnd)
+                        .setKeyValidityForConsumptionEnd(keyValidityForConsumptionEnd)
+                        .build());
+                SecretKey key = keyGenerator.generateKey();
+                assertEquals(algorithm, key.getAlgorithm());
+
+                KeyInfo keyInfo = TestUtils.getKeyInfo(key);
+                assertEquals(purposes, keyInfo.getPurposes());
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(blockModes), keyInfo.getBlockModes());
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(encryptionPaddings), keyInfo.getEncryptionPaddings());
+                TestUtils.assertContentsInAnyOrder(Arrays.asList(digests), keyInfo.getDigests());
+                MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
+                assertEquals(keyValidityStart, keyInfo.getKeyValidityStart());
+                assertEquals(keyValidityForOriginationEnd,
+                        keyInfo.getKeyValidityForOriginationEnd());
+                assertEquals(keyValidityForConsumptionEnd,
+                        keyInfo.getKeyValidityForConsumptionEnd());
+                assertFalse(keyInfo.isUserAuthenticationRequired());
+                assertFalse(keyInfo.isUserAuthenticationRequirementEnforcedBySecureHardware());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    private static KeyGenParameterSpec.Builder getWorkingSpec() {
+        return getWorkingSpec(0);
+    }
+
+    private static KeyGenParameterSpec.Builder getWorkingSpec(int purposes) {
+        return new KeyGenParameterSpec.Builder("test1", purposes);
+    }
+
+    private static KeyGenerator getKeyGenerator(String algorithm) throws NoSuchAlgorithmException,
+            NoSuchProviderException {
+        return KeyGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java
index e3540b4..1621a96 100644
--- a/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java
@@ -34,7 +34,10 @@
 import java.security.NoSuchProviderException;
 import java.security.Principal;
 import java.security.PrivateKey;
+import java.security.Provider;
 import java.security.SecureRandom;
+import java.security.Security;
+import java.security.Provider.Service;
 import java.security.cert.Certificate;
 import java.security.cert.X509Certificate;
 import java.security.interfaces.ECKey;
@@ -48,7 +51,12 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -99,6 +107,20 @@
     private static final Date DEFAULT_CERT_NOT_BEFORE = new Date(0L); // Jan 1 1970
     private static final Date DEFAULT_CERT_NOT_AFTER = new Date(2461449600000L); // Jan 1 2048
 
+    private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_PROVIDER_NAME;
+
+    private static final String[] EXPECTED_ALGORITHMS = {
+        "EC",
+        "RSA",
+    };
+
+    private static final Map<String, Integer> DEFAULT_KEY_SIZES =
+            new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+    static {
+        DEFAULT_KEY_SIZES.put("EC", 256);
+        DEFAULT_KEY_SIZES.put("RSA", 2048);
+    }
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -107,6 +129,29 @@
         mKeyStore.load(null, null);
     }
 
+    public void testAlgorithmList() {
+        // Assert that Android Keystore Provider exposes exactly the expected KeyPairGenerator
+        // algorithms. We don't care whether the algorithms are exposed via aliases, as long as
+        // canonical names of algorithms are accepted. If the Provider exposes extraneous
+        // algorithms, it'll be caught because it'll have to expose at least one Service for such an
+        // algorithm, and this Service's algorithm will not be in the expected set.
+
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        Set<Service> services = provider.getServices();
+        Set<String> actualAlgsLowerCase = new HashSet<String>();
+        Set<String> expectedAlgsLowerCase = new HashSet<String>(
+                Arrays.asList(TestUtils.toLowerCase(EXPECTED_ALGORITHMS)));
+        for (Service service : services) {
+            if ("KeyPairGenerator".equalsIgnoreCase(service.getType())) {
+                String algLowerCase = service.getAlgorithm().toLowerCase(Locale.US);
+                actualAlgsLowerCase.add(algLowerCase);
+            }
+        }
+
+        TestUtils.assertContentsInAnyOrder(actualAlgsLowerCase,
+                expectedAlgsLowerCase.toArray(new String[0]));
+    }
+
     public void testInitialize_LegacySpec() throws Exception {
         @SuppressWarnings("deprecation")
         KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(getContext())
@@ -164,6 +209,154 @@
         }
     }
 
+    public void testDefaultKeySize() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                int expectedSizeBits = DEFAULT_KEY_SIZES.get(algorithm);
+                KeyPairGenerator generator = getGenerator(algorithm);
+                generator.initialize(getWorkingSpec().build());
+                KeyPair keyPair = generator.generateKeyPair();
+                assertEquals(expectedSizeBits,
+                        TestUtils.getKeyInfo(keyPair.getPrivate()).getKeySize());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnknownBlockModeFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator generator = getGenerator(algorithm);
+                try {
+                    generator.initialize(getWorkingSpec().setBlockModes("weird").build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnknownEncryptionPaddingFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator generator = getGenerator(algorithm);
+                try {
+                    generator.initialize(getWorkingSpec().setEncryptionPaddings("weird").build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnknownSignaturePaddingFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator generator = getGenerator(algorithm);
+                try {
+                    generator.initialize(getWorkingSpec().setSignaturePaddings("weird").build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitWithUnknownDigestFails() {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator generator = getGenerator(algorithm);
+                try {
+                    generator.initialize(getWorkingSpec().setDigests("weird").build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitRandomizedEncryptionRequiredButViolatedFails() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyPairGenerator generator = getGenerator(algorithm);
+                try {
+                    generator.initialize(getWorkingSpec(
+                            KeyProperties.PURPOSE_ENCRYPT)
+                            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
+                            .build());
+                    fail();
+                } catch (InvalidAlgorithmParameterException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGenerateHonorsRequestedAuthorizations() throws Exception {
+        Date keyValidityStart = new Date(System.currentTimeMillis() - TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForOriginationEnd =
+                new Date(System.currentTimeMillis() + TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForConsumptionEnd =
+                new Date(System.currentTimeMillis() + 3 * TestUtils.DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                String[] blockModes =
+                        new String[] {KeyProperties.BLOCK_MODE_GCM, KeyProperties.BLOCK_MODE_CBC};
+                String[] encryptionPaddings =
+                        new String[] {KeyProperties.ENCRYPTION_PADDING_RSA_OAEP,
+                                KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1};
+                String[] digests =
+                        new String[] {KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA1};
+                int purposes = KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_ENCRYPT;
+                KeyPairGenerator generator = getGenerator(algorithm);
+                generator.initialize(getWorkingSpec(purposes)
+                        .setBlockModes(blockModes)
+                        .setEncryptionPaddings(encryptionPaddings)
+                        .setDigests(digests)
+                        .setKeyValidityStart(keyValidityStart)
+                        .setKeyValidityForOriginationEnd(keyValidityForOriginationEnd)
+                        .setKeyValidityForConsumptionEnd(keyValidityForConsumptionEnd)
+                        .build());
+                KeyPair keyPair = generator.generateKeyPair();
+                assertEquals(algorithm, keyPair.getPrivate().getAlgorithm());
+
+                KeyInfo keyInfo = TestUtils.getKeyInfo(keyPair.getPrivate());
+                assertEquals(purposes, keyInfo.getPurposes());
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(blockModes), keyInfo.getBlockModes());
+                List<String> encryptionPaddingsList =
+                        new ArrayList<String>(Arrays.asList(encryptionPaddings));
+                if (keyInfo.getEncryptionPaddings().length > encryptionPaddingsList.size()) {
+                    // Keystore may have added ENCRYPTION_PADDING_NONE to allow software OAEP
+                    encryptionPaddingsList.add(KeyProperties.ENCRYPTION_PADDING_NONE);
+                }
+                TestUtils.assertContentsInAnyOrder(
+                        encryptionPaddingsList, keyInfo.getEncryptionPaddings());
+                List<String> digestsList = new ArrayList<String>(Arrays.asList(digests));
+                if (keyInfo.getDigests().length > digestsList.size()) {
+                    // Keystore may have added DIGEST_NONE, to allow software digesting.
+                    digestsList.add(KeyProperties.DIGEST_NONE);
+                }
+                TestUtils.assertContentsInAnyOrder(digestsList, keyInfo.getDigests());
+                MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
+                assertEquals(keyValidityStart, keyInfo.getKeyValidityStart());
+                assertEquals(keyValidityForOriginationEnd,
+                        keyInfo.getKeyValidityForOriginationEnd());
+                assertEquals(keyValidityForConsumptionEnd,
+                        keyInfo.getKeyValidityForConsumptionEnd());
+                assertFalse(keyInfo.isUserAuthenticationRequired());
+                assertFalse(keyInfo.isUserAuthenticationRequirementEnforcedBySecureHardware());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
     @SuppressWarnings("deprecation")
     public void testGenerate_EC_LegacySpec() throws Exception {
         // There are three legacy ways to generate an EC key pair using Android Keystore
@@ -211,7 +404,12 @@
         assertEquals(null, keyInfo.getKeyValidityForConsumptionEnd());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_NONE);
+                KeyProperties.DIGEST_NONE,
+                KeyProperties.DIGEST_SHA1,
+                KeyProperties.DIGEST_SHA224,
+                KeyProperties.DIGEST_SHA256,
+                KeyProperties.DIGEST_SHA384,
+                KeyProperties.DIGEST_SHA512);
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getEncryptionPaddings()));
 
@@ -253,7 +451,12 @@
         assertEquals(null, keyInfo.getKeyValidityForConsumptionEnd());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_NONE);
+                KeyProperties.DIGEST_NONE,
+                KeyProperties.DIGEST_SHA1,
+                KeyProperties.DIGEST_SHA224,
+                KeyProperties.DIGEST_SHA256,
+                KeyProperties.DIGEST_SHA384,
+                KeyProperties.DIGEST_SHA512);
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getEncryptionPaddings()));
 
@@ -294,7 +497,12 @@
         assertEquals(null, keyInfo.getKeyValidityForConsumptionEnd());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_NONE);
+                KeyProperties.DIGEST_NONE,
+                KeyProperties.DIGEST_SHA1,
+                KeyProperties.DIGEST_SHA224,
+                KeyProperties.DIGEST_SHA256,
+                KeyProperties.DIGEST_SHA384,
+                KeyProperties.DIGEST_SHA512);
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getEncryptionPaddings()));
     }
@@ -337,10 +545,20 @@
         assertEquals(null, keyInfo.getKeyValidityForConsumptionEnd());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_NONE);
+                KeyProperties.DIGEST_NONE,
+                KeyProperties.DIGEST_MD5,
+                KeyProperties.DIGEST_SHA1,
+                KeyProperties.DIGEST_SHA224,
+                KeyProperties.DIGEST_SHA256,
+                KeyProperties.DIGEST_SHA384,
+                KeyProperties.DIGEST_SHA512);
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getEncryptionPaddings()),
-                KeyProperties.ENCRYPTION_PADDING_NONE);
-        MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
+                KeyProperties.ENCRYPTION_PADDING_NONE,
+                KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1,
+                KeyProperties.ENCRYPTION_PADDING_RSA_OAEP);
+        MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getSignaturePaddings()),
+                KeyProperties.SIGNATURE_PADDING_RSA_PSS,
+                KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
     }
 
     public void testGenerate_ReplacesOldEntryWithSameAlias()
@@ -585,8 +803,14 @@
         assertEquals(keyValidityEndDateForOrigination, keyInfo.getKeyValidityForOriginationEnd());
         assertEquals(keyValidityEndDateForConsumption, keyInfo.getKeyValidityForConsumptionEnd());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
-        MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_SHA384, KeyProperties.DIGEST_SHA512);
+        List<String> digestsList = Arrays.asList(keyInfo.getDigests());
+        assertTrue(digestsList.contains(KeyProperties.DIGEST_SHA384));
+        assertTrue(digestsList.contains(KeyProperties.DIGEST_SHA512));
+        if (digestsList.size() > 2) {
+            // Keystore may have added DIGEST_NONE, to allow software digesting.
+            assertTrue(digestsList.size() == 3);
+            assertTrue(digestsList.contains(KeyProperties.DIGEST_NONE));
+        }
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getEncryptionPaddings()));
         assertFalse(keyInfo.isUserAuthenticationRequired());
@@ -648,16 +872,22 @@
         assertEquals(keyValidityStart, keyInfo.getKeyValidityStart());
         assertEquals(keyValidityEndDateForOrigination, keyInfo.getKeyValidityForOriginationEnd());
         assertEquals(keyValidityEndDateForConsumption, keyInfo.getKeyValidityForConsumptionEnd());
-        MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_SHA384, KeyProperties.DIGEST_SHA512);
-        MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getSignaturePaddings()),
-                KeyProperties.SIGNATURE_PADDING_RSA_PKCS1,
-                KeyProperties.SIGNATURE_PADDING_RSA_PSS);
+        List<String> digestsList = Arrays.asList(keyInfo.getDigests());
+        assertTrue(digestsList.contains(KeyProperties.DIGEST_SHA384));
+        assertTrue(digestsList.contains(KeyProperties.DIGEST_SHA512));
+        if (digestsList.size() > 2) {
+            // Keystore may have added DIGEST_NONE, to allow software digesting.
+            assertTrue(digestsList.size() == 3);
+            assertTrue(digestsList.contains(KeyProperties.DIGEST_NONE));
+        }
+        List<String> signaturePaddingsList = Arrays.asList(keyInfo.getSignaturePaddings());
+        assertTrue(signaturePaddingsList.contains(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1));
+        assertTrue(signaturePaddingsList.contains(KeyProperties.SIGNATURE_PADDING_RSA_PSS));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getBlockModes()),
                 KeyProperties.BLOCK_MODE_ECB);
-        MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getEncryptionPaddings()),
-                KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1,
-                KeyProperties.ENCRYPTION_PADDING_RSA_OAEP);
+        List<String> encryptionPaddingsList = Arrays.asList(keyInfo.getEncryptionPaddings());
+        assertTrue(encryptionPaddingsList.contains(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1));
+        assertTrue(encryptionPaddingsList.contains(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP));
         assertFalse(keyInfo.isUserAuthenticationRequired());
         assertEquals(-1, keyInfo.getUserAuthenticationValidityDurationSeconds());
     }
@@ -667,7 +897,7 @@
         generator.initialize(new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1,
                 KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
-                .setDigests(KeyProperties.DIGEST_NONE)
+                .setDigests(KeyProperties.DIGEST_NONE, KeyProperties.DIGEST_SHA384)
                 .build());
         KeyPair keyPair = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -682,7 +912,7 @@
         KeyInfo keyInfo = TestUtils.getKeyInfo(keyPair.getPrivate());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_NONE);
+                KeyProperties.DIGEST_NONE, KeyProperties.DIGEST_SHA384);
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getEncryptionPaddings()));
         assertSelfSignedCertificateSignatureVerifies(TEST_ALIAS_1);
@@ -696,8 +926,13 @@
                 KeyProperties.PURPOSE_SIGN
                         | KeyProperties.PURPOSE_VERIFY
                         | KeyProperties.PURPOSE_DECRYPT)
-                .setDigests(KeyProperties.DIGEST_NONE)
-                .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
+                .setDigests(KeyProperties.DIGEST_NONE,
+                        KeyProperties.DIGEST_SHA256,
+                        KeyProperties.DIGEST_SHA512)
+                .setEncryptionPaddings(
+                        KeyProperties.ENCRYPTION_PADDING_NONE,
+                        KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
+                .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
                 .build());
         KeyPair keyPair = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -712,10 +947,14 @@
         KeyInfo keyInfo = TestUtils.getKeyInfo(keyPair.getPrivate());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_NONE);
-        MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
+                KeyProperties.DIGEST_NONE,
+                KeyProperties.DIGEST_SHA256,
+                KeyProperties.DIGEST_SHA512);
+        MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getSignaturePaddings()),
+                KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getEncryptionPaddings()),
-                KeyProperties.ENCRYPTION_PADDING_NONE);
+                KeyProperties.ENCRYPTION_PADDING_NONE,
+                KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1);
         assertSelfSignedCertificateSignatureVerifies(TEST_ALIAS_1);
         assertKeyPairAndCertificateUsableForTLSPeerAuthentication(TEST_ALIAS_1);
     }
@@ -1258,4 +1497,12 @@
                 + "Expected one of " + Arrays.asList(expected)
                 + ", actual: <" + actual + ">");
     }
+
+    private KeyGenParameterSpec.Builder getWorkingSpec() {
+        return getWorkingSpec(0);
+    }
+
+    private KeyGenParameterSpec.Builder getWorkingSpec(int purposes) {
+        return new KeyGenParameterSpec.Builder(TEST_ALIAS_1, purposes);
+    }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/MacTest.java b/tests/tests/keystore/src/android/keystore/cts/MacTest.java
index d654e3a..c41dcda 100644
--- a/tests/tests/keystore/src/android/keystore/cts/MacTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/MacTest.java
@@ -26,6 +26,7 @@
 import java.security.Provider.Service;
 import java.security.Security;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Locale;
@@ -37,6 +38,9 @@
 import javax.crypto.SecretKey;
 import javax.crypto.spec.SecretKeySpec;
 
+/**
+ * Tests for algorithm-agnostic functionality of MAC implementations backed by Android Keystore.
+ */
 public class MacTest extends TestCase {
 
     private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_CRYPTO_OP_PROVIDER_NAME;
@@ -55,22 +59,103 @@
 
     private static final byte[] SHORT_MSG_KAT_MESSAGE = HexEncoding.decode("a16037e3c901c9a1ab");
 
-    private static final Map<String, byte[]> SHORT_MSG_KAT_MACS =
-            new TreeMap<String, byte[]>(String.CASE_INSENSITIVE_ORDER);
+    private static final Map<String, Collection<KatVector>> SHORT_MSG_KAT_MACS =
+            new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
     static {
         // From RI
-        SHORT_MSG_KAT_MACS.put("HmacSHA1", HexEncoding.decode(
-                "47d5677267f0efe1f7416bf504b210765674ef50"));
-        SHORT_MSG_KAT_MACS.put("HmacSHA224", HexEncoding.decode(
-                "03a8bbcd05e7166bff5b0b2368709a0c61c0b9d94f1b4d65c0e04948"));
-        SHORT_MSG_KAT_MACS.put("HmacSHA256", HexEncoding.decode(
-                "17feed3de0b2d53b69b228c2d9d26e9d57b314c50d36662596777f49445df729"));
-        SHORT_MSG_KAT_MACS.put("HmacSHA384", HexEncoding.decode(
-                "26e034c6696d28722ffc446ff0994f835e616cc704517d283a29648aee1eca5569c792ada8a176cdc7"
-                + "813a87437e4ea0"));
-        SHORT_MSG_KAT_MACS.put("HmacSHA512", HexEncoding.decode(
-                "15cff189d754d6612bd18d157c8e59ac2ecd9a4b97b2ef343b7778130f7741795d5d2dc2b7addb9a36"
-                + "7677ad57833b42bfa0733f49b57afd6bc32cddc0dcebec"));
+        SHORT_MSG_KAT_MACS.put("HmacSHA1", Arrays.asList(
+                new KatVector(HexEncoding.decode("4818c5466a1d05bc8f6ad4"),
+                        HexEncoding.decode("aa178e4d174dc90d1ac3d22386c32d1af82396e7")),
+                new KatVector(HexEncoding.decode("8d07f59f63fc493711a2217d8603cbc4d9874c58"),
+                        HexEncoding.decode("002215de36f8836e966ff459af80c4b31fe0ca27")),
+                new KatVector(HexEncoding.decode("f85f1c94023968729e3b4a7f495bf31c283b710662"),
+                        HexEncoding.decode("f518db3015203606ea15145ad16b3d981db32a77"))));
+        SHORT_MSG_KAT_MACS.put("HmacSHA224", Arrays.asList(
+                new KatVector(
+                        HexEncoding.decode(
+                                "ed959815cc03f01e19ce93c1a3318ae87a905b7c27351d571ee858"),
+                        HexEncoding.decode(
+                                "abece4641458461f8b6a46f7daa61fc6119344c5c4bb5e7967da0e3e")),
+                new KatVector(
+                        HexEncoding.decode(
+                                "9150e1ad6a9d12370a2423a5d95e9bc2dd73b4ee9bc96b03c9cc2fba"),
+                        HexEncoding.decode(
+                                "523aa06730d1abe7da2ba94a966cd20db56c771f1899e2850c31158c")),
+                new KatVector(
+                        HexEncoding.decode(
+                                "424d5e7375c2040543f76b97451b1c074ee93b81ad24cef23800ebfe529a74ee2b"
+                                ),
+                        HexEncoding.decode(
+                                "7627a86d829f45e3295a25813219ed5291f80029b972192d32a845c3"))));
+        SHORT_MSG_KAT_MACS.put("HmacSHA256", Arrays.asList(
+                new KatVector(
+                        HexEncoding.decode(
+                                "74a7ec4c79419d76fa5d3bdbedc17e5bebf0ee011c609b9f4c9126091613"),
+                        HexEncoding.decode(
+                                "c17b62519155b0d7f005f465becf9a1610635ae46a2c4d2b255851f201689ba5"
+                                )),
+                new KatVector(
+                        HexEncoding.decode(
+                                "42b44e6a1600bed10ca6c6dc24df2871790f948e73f9457fa4889c340cf69496"),
+                        HexEncoding.decode(
+                                "e9082a5db98c8086ad306ac23a1da9478eb5733757af6b1148d25fa1459290de")
+                                ),
+                new KatVector(
+                        HexEncoding.decode(
+                                "20bfc407c62022fea95f046f8ade6ee4b232665a9e97f75d3e35f1a9447991651a"
+                                        ),
+                        HexEncoding.decode(
+                                "dbf10ca8c362aa665562065e76e42beb19444f61ab0828438714c82779b71a0d"
+                                ))));
+        SHORT_MSG_KAT_MACS.put("HmacSHA384", Arrays.asList(
+                new KatVector(
+                        HexEncoding.decode(
+                                "7d277b2ec95fca68fe6ce0b665b28b48e128762714c66ca2c3405b432f6ab835e3"
+                                ),
+                        HexEncoding.decode(
+                                "bf8555816d8fa058e1d0ed4be23abda522adfae629b6a8819dcc2416d00507782a"
+                                        + "c714fdbfc7a340da4e6cf646a619f1")),
+                new KatVector(
+                        HexEncoding.decode(
+                                "7b30abe948ceab9d94965f274fd2a21c966aa9bdf06476f94a0bcc6c20fd5d2bdc"
+                                        + "e21af7c6fdf6017bce342a701f55c3"),
+                        HexEncoding.decode(
+                                "0fe51798528407119a5884f65ad76409983e978e25ab8f82aa412c08e76c8065d2"
+                                        + "6dfdb1935de49036fb24262a532a29")),
+                new KatVector(
+                        HexEncoding.decode(
+                                "26f232a40ada35850a14edf8f23c9ca97898ac0fa18640e5a7835230fa68f630b1"
+                                        + "c4579bc059c318bb2c5da609db13f1567fa175a6439e1d729713d1fa"
+                                        + "1039a3db"),
+                        HexEncoding.decode(
+                                "a086c610a382c24bb05e8bdd12cffc01055ec98a8f071239360cf8135205ffee33"
+                                        + "2da2134bed2ec3efde8bf145d1d257"))));
+        SHORT_MSG_KAT_MACS.put("HmacSHA512", Arrays.asList(
+                new KatVector(
+                        HexEncoding.decode(
+                                "46fb12ef48d4e8162f0828a66c9f7124de"),
+                        HexEncoding.decode(
+                                "036320b51376f5840b03fdababac53c189d4d6b35f26f562a909f8ecac4a02c244"
+                                        + "bfddc8f4eb89e0d0909fd2d8a46b796175e619cff215a675ce309540"
+                                        + "42b1c9")),
+                new KatVector(
+                        HexEncoding.decode(
+                                "45b3f16b1a247dd76f72ab2d5019f87b94efeb9a2fc01da3ca347050302dbda9c1"
+                                        + "19cf991aaa30b747c808ec6bc19be7b5ae5e66176e38f222347a1659"
+                                        + "15d007"),
+                        HexEncoding.decode(
+                                "92817ce36858ccad20a903e15952565d241ebaa87e07655754470090f1c6b9252a"
+                                        + "cff9b873f36840fa8fdaaf91c6f9de3b82f46de0b1fdfa584eaf27de"
+                                        + "f52c65")),
+                new KatVector(
+                        HexEncoding.decode(
+                                "e91630c69c8c294755e27e5ccf01fe09e06de6c4e423c1c4ef0ac9b67f9af3cc6b"
+                                        + "bc6292d18cf6e76738888a948b49f9509b44eb3af6974ca7e61f5208"
+                                        + "b9f7dca3"),
+                        HexEncoding.decode(
+                                "6ff5616e9c38cef3d20076841c65b8747193eb8033ea61e8693715109e0e448966"
+                                        + "3d8abcb2b7cf0911e461202112819fb8650ba02bdce08aa0d24b3873"
+                                        + "30f18f"))));
     }
 
     private static final byte[] LONG_MSG_KAT_SEED = SHORT_MSG_KAT_MESSAGE;
@@ -95,7 +180,7 @@
     }
 
 
-    private static final long DAY_IN_MILLIS = 1000 * 60 * 60 * 24;
+    private static final long DAY_IN_MILLIS = TestUtils.DAY_IN_MILLIS;
 
     public void testAlgorithmList() {
         // Assert that Android Keystore Provider exposes exactly the expected MAC algorithms. We
@@ -122,72 +207,153 @@
     }
 
     public void testAndroidKeyStoreKeysHandledByAndroidKeyStoreProvider() throws Exception {
-        SecretKey key = importDefaultKatKey();
         Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
         assertNotNull(provider);
         for (String algorithm : EXPECTED_ALGORITHMS) {
             try {
+                SecretKey key = importDefaultKatKey(algorithm);
+
                 // Generate a MAC
                 Mac mac = Mac.getInstance(algorithm);
                 mac.init(key);
                 assertSame(provider, mac.getProvider());
-            } catch (Exception e) {
+            } catch (Throwable e) {
                 throw new RuntimeException(algorithm + " failed", e);
             }
         }
     }
 
-    public void testGeneratedSignatureVerifies() throws Exception {
-        SecretKey key = importDefaultKatKey();
-
+    public void testMacGeneratedForEmptyMessage() throws Exception {
         Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
         assertNotNull(provider);
         for (String algorithm : EXPECTED_ALGORITHMS) {
             try {
+                SecretKey key = importDefaultKatKey(algorithm);
+
                 // Generate a MAC
-                Mac mac = Mac.getInstance(algorithm);
+                Mac mac = Mac.getInstance(algorithm, provider);
+                mac.init(key);
+                byte[] macBytes = mac.doFinal();
+                assertNotNull(macBytes);
+                if (macBytes.length == 0) {
+                    fail("Empty MAC");
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException(algorithm + " failed", e);
+            }
+        }
+    }
+
+    public void testMacGeneratedByAndroidKeyStoreVerifiesByAndroidKeyStore() throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                SecretKey key = importDefaultKatKey(algorithm);
+
+                // Generate a MAC
+                Mac mac = Mac.getInstance(algorithm, provider);
                 mac.init(key);
                 byte[] message = "This is a test".getBytes("UTF-8");
                 byte[] macBytes = mac.doFinal(message);
 
-                assertMacVerifiesOneShot(algorithm, key, message, macBytes);
-            } catch (Exception e) {
+                assertMacVerifiesOneShot(algorithm, provider, key, message, macBytes);
+            } catch (Throwable e) {
                 throw new RuntimeException(algorithm + " failed", e);
             }
         }
     }
 
+    public void testMacGeneratedByAndroidKeyStoreVerifiesByHighestPriorityProvider()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                SecretKey key = getDefaultKatKey(algorithm);
+                SecretKey keystoreKey = importDefaultKatKey(algorithm);
+
+                // Generate a MAC
+                Mac mac = Mac.getInstance(algorithm, provider);
+                mac.init(keystoreKey);
+                byte[] message = "This is a test".getBytes("UTF-8");
+                byte[] macBytes = mac.doFinal(message);
+
+                assertMacVerifiesOneShot(algorithm, key, message, macBytes);
+            } catch (Throwable e) {
+                throw new RuntimeException(algorithm + " failed", e);
+            }
+        }
+    }
+
+    public void testMacGeneratedByHighestPriorityProviderVerifiesByAndroidKeyStore()
+            throws Exception {
+        Provider keystoreProvider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(keystoreProvider);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            Provider signingProvider = null;
+            try {
+                SecretKey key = getDefaultKatKey(algorithm);
+                SecretKey keystoreKey = importDefaultKatKey(algorithm);
+
+                // Generate a MAC
+                Mac mac = Mac.getInstance(algorithm);
+                mac.init(key);
+                signingProvider = mac.getProvider();
+                byte[] message = "This is a test".getBytes("UTF-8");
+                byte[] macBytes = mac.doFinal(message);
+
+                assertMacVerifiesOneShot(
+                        algorithm, keystoreProvider, keystoreKey, message, macBytes);
+            } catch (Throwable e) {
+                throw new RuntimeException(
+                        algorithm + " failed, signing provider: " + signingProvider, e);
+            }
+        }
+    }
+
     public void testSmallMsgKat() throws Exception {
-        SecretKey key = importDefaultKatKey();
         byte[] message = SHORT_MSG_KAT_MESSAGE;
 
         for (String algorithm : EXPECTED_ALGORITHMS) {
-            try {
-                byte[] goodMacBytes = SHORT_MSG_KAT_MACS.get(algorithm);
-                assertNotNull(goodMacBytes);
-                assertMacVerifiesOneShot(algorithm, key, message, goodMacBytes);
-                assertMacVerifiesFedOneByteAtATime(algorithm, key, message, goodMacBytes);
-                assertMacVerifiesFedUsingFixedSizeChunks(algorithm, key, message, goodMacBytes, 3);
+            for (KatVector testVector : SHORT_MSG_KAT_MACS.get(algorithm)) {
+                byte[] keyBytes = testVector.key;
+                try {
+                    SecretKey key = TestUtils.importIntoAndroidKeyStore(
+                            "test",
+                            new SecretKeySpec(keyBytes, algorithm),
+                            getWorkingImportParams(algorithm)).getKeystoreBackedSecretKey();
 
-                byte[] messageWithBitFlip = message.clone();
-                messageWithBitFlip[messageWithBitFlip.length / 2] ^= 1;
-                assertMacDoesNotVerifyOneShot(algorithm, key, messageWithBitFlip, goodMacBytes);
+                    byte[] goodMacBytes = testVector.mac.clone();
+                    assertNotNull(goodMacBytes);
+                    assertMacVerifiesOneShot(algorithm, key, message, goodMacBytes);
+                    assertMacVerifiesFedOneByteAtATime(algorithm, key, message, goodMacBytes);
+                    assertMacVerifiesFedUsingFixedSizeChunks(
+                            algorithm, key, message, goodMacBytes, 3);
 
-                byte[] goodMacWithBitFlip = goodMacBytes.clone();
-                goodMacWithBitFlip[goodMacWithBitFlip.length / 2] ^= 1;
-                assertMacDoesNotVerifyOneShot(algorithm, key, message, goodMacWithBitFlip);
-            } catch (Throwable e) {
-                throw new RuntimeException("Failed for " + algorithm, e);
+                    byte[] messageWithBitFlip = message.clone();
+                    messageWithBitFlip[messageWithBitFlip.length / 2] ^= 1;
+                    assertMacDoesNotVerifyOneShot(algorithm, key, messageWithBitFlip, goodMacBytes);
+
+                    byte[] goodMacWithBitFlip = goodMacBytes.clone();
+                    goodMacWithBitFlip[goodMacWithBitFlip.length / 2] ^= 1;
+                    assertMacDoesNotVerifyOneShot(algorithm, key, message, goodMacWithBitFlip);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + algorithm + " with key " + HexEncoding.encode(keyBytes),
+                            e);
+                }
             }
         }
     }
 
     public void testLargeMsgKat() throws Exception {
-        SecretKey key = importDefaultKatKey();
         byte[] message = TestUtils.generateLargeKatMsg(LONG_MSG_KAT_SEED, LONG_MSG_KAT_SIZE_BYTES);
 
         for (String algorithm : EXPECTED_ALGORITHMS) {
             try {
+                SecretKey key = importDefaultKatKey(algorithm);
+
                 byte[] goodMacBytes = LONG_MSG_KAT_MACS.get(algorithm);
                 assertNotNull(goodMacBytes);
                 assertMacVerifiesOneShot(algorithm,  key, message, goodMacBytes);
@@ -202,44 +368,91 @@
     }
 
     public void testInitFailsWhenNotAuthorizedToSign() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN);
         int badPurposes = KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT
                 | KeyProperties.PURPOSE_VERIFY;
-        String algorithm = "HmacSHA512";
-        assertInitSucceeds(algorithm, algorithm, good.build());
-        assertInitThrowsInvalidKeyException(algorithm, algorithm,
-                TestUtils.buildUpon(good, badPurposes).build());
+
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = getWorkingImportParams(algorithm);
+                assertInitSucceeds(algorithm, good);
+                assertInitThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good, badPurposes).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     public void testInitFailsWhenDigestNotAuthorized() throws Exception {
-        KeyProtection spec = new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN).build();
-        assertInitSucceeds("HmacSHA384", "HmacSHA384", spec);
-        assertInitThrowsInvalidKeyException("HmacSHA256", "HmacSHA384", spec);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = getWorkingImportParams(algorithm);
+                assertInitSucceeds(algorithm, good);
+
+                String badKeyAlgorithm = ("HmacSHA256".equalsIgnoreCase(algorithm))
+                        ? "HmacSHA384" : "HmacSHA256";
+                assertInitThrowsInvalidKeyException(algorithm, badKeyAlgorithm, good);
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     public void testInitFailsWhenKeyNotYetValid() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(
-                KeyProperties.PURPOSE_SIGN)
-                .setKeyValidityStart(new Date(System.currentTimeMillis() - DAY_IN_MILLIS));
-        String algorithm = "HmacSHA224";
-        assertInitSucceeds(algorithm, algorithm, good.build());
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = TestUtils.buildUpon(getWorkingImportParams(algorithm))
+                        .setKeyValidityStart(new Date(System.currentTimeMillis() - DAY_IN_MILLIS))
+                        .build();
+                assertInitSucceeds(algorithm, good);
 
-        Date badStartDate = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
-        assertInitThrowsInvalidKeyException(algorithm, algorithm,
-                TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+                Date badStartDate = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
+                assertInitThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
-    public void testInitFailsWhenKeyNoLongerValid() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(
-                KeyProperties.PURPOSE_SIGN)
-                .setKeyValidityForOriginationEnd(
-                        new Date(System.currentTimeMillis() + DAY_IN_MILLIS));
-        String algorithm = "HmacSHA1";
-        assertInitSucceeds(algorithm, algorithm, good.build());
+    public void testInitFailsWhenKeyNoLongerValidForOrigination() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = TestUtils.buildUpon(getWorkingImportParams(algorithm))
+                        .setKeyValidityForOriginationEnd(
+                                new Date(System.currentTimeMillis() + DAY_IN_MILLIS))
+                        .build();
+                assertInitSucceeds(algorithm, good);
 
-        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
-        assertInitThrowsInvalidKeyException(algorithm, algorithm,
-                TestUtils.buildUpon(good).setKeyValidityForOriginationEnd(badEndDate).build());
+                Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+                assertInitThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForOriginationEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitIgnoresThatKeyNoLongerValidForConsumption() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyProtection good = TestUtils.buildUpon(getWorkingImportParams(algorithm))
+                        .setKeyValidityForConsumptionEnd(
+                                new Date(System.currentTimeMillis() + DAY_IN_MILLIS))
+                        .build();
+                assertInitSucceeds(algorithm, good);
+
+                Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+                assertInitSucceeds(algorithm,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForConsumptionEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     private void assertMacVerifiesOneShot(
@@ -247,7 +460,17 @@
             SecretKey key,
             byte[] message,
             byte[] mac) throws Exception {
-        Mac m = Mac.getInstance(algorithm);
+        assertMacVerifiesOneShot(algorithm, null, key, message, mac);
+    }
+
+    private void assertMacVerifiesOneShot(
+            String algorithm,
+            Provider provider,
+            SecretKey key,
+            byte[] message,
+            byte[] mac) throws Exception {
+        Mac m = (provider != null)
+                ? Mac.getInstance(algorithm, provider) : Mac.getInstance(algorithm);
         m.init(key);
         byte[] mac2 = m.doFinal(message);
         if (!Arrays.equals(mac, mac2)) {
@@ -273,7 +496,6 @@
         }
     }
 
-
     private void assertMacVerifiesFedOneByteAtATime(
             String algorithm,
             SecretKey key,
@@ -318,6 +540,11 @@
         }
     }
 
+    private void assertInitSucceeds(String algorithm, KeyProtection keyProtection)
+            throws Exception {
+        assertInitSucceeds(algorithm, algorithm, keyProtection);
+    }
+
     private void assertInitSucceeds(
             String macAlgorithm, String keyAlgorithm, KeyProtection keyProtection)
                     throws Exception {
@@ -326,42 +553,53 @@
         mac.init(key);
     }
 
+    private void assertInitThrowsInvalidKeyException(String algorithm, KeyProtection keyProtection)
+                    throws Exception {
+        assertInitThrowsInvalidKeyException(algorithm, algorithm, keyProtection);
+    }
+
     private void assertInitThrowsInvalidKeyException(
             String macAlgorithm, String keyAlgorithm, KeyProtection keyProtection)
                     throws Exception {
-        assertInitThrowsInvalidKeyException(null, macAlgorithm, keyAlgorithm, keyProtection);
-    }
-
-
-    private void assertInitThrowsInvalidKeyException(
-            String message, String macAlgorithm, String keyAlgorithm,
-            KeyProtection keyProtection) throws Exception {
         SecretKey key = importDefaultKatKey(keyAlgorithm, keyProtection);
         Mac mac = Mac.getInstance(macAlgorithm);
         try {
             mac.init(key);
-            fail(message);
+            fail("InvalidKeyException should have been thrown. MAC algorithm: " + macAlgorithm
+                    + ", key algorithm: " + keyAlgorithm);
         } catch (InvalidKeyException expected) {}
     }
 
-    private SecretKey importDefaultKatKey() throws Exception {
-        return importDefaultKatKey("HmacSHA1",
-                new KeyProtection.Builder(
-                        KeyProperties.PURPOSE_SIGN)
-                        .setDigests(KeyProperties.DIGEST_NONE,
-                                KeyProperties.DIGEST_SHA1, // TODO: Remove these digests
-                                KeyProperties.DIGEST_SHA224,
-                                KeyProperties.DIGEST_SHA256,
-                                KeyProperties.DIGEST_SHA384,
-                                KeyProperties.DIGEST_SHA512)
-                        .build());
+    private SecretKey getDefaultKatKey(String keyAlgorithm) {
+        return new SecretKeySpec(KAT_KEY, keyAlgorithm);
+    }
+
+    private SecretKey importDefaultKatKey(String keyAlgorithm) throws Exception {
+        return importDefaultKatKey(
+                keyAlgorithm,
+                new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN).build());
     }
 
     private SecretKey importDefaultKatKey(
             String keyAlgorithm, KeyProtection keyProtection) throws Exception {
         return TestUtils.importIntoAndroidKeyStore(
                 "test1",
-                new SecretKeySpec(KAT_KEY, keyAlgorithm),
-                keyProtection);
+                getDefaultKatKey(keyAlgorithm),
+                keyProtection).getKeystoreBackedSecretKey();
+    }
+
+    private static KeyProtection getWorkingImportParams(
+            @SuppressWarnings("unused") String algorithm) {
+        return new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN).build();
+    }
+
+    private static class KatVector {
+        public byte[] key;
+        public byte[] mac;
+
+        public KatVector(byte[] key, byte[] mac) {
+            this.key = key;
+            this.mac = mac;
+        }
     }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/PutOverflowTest.java b/tests/tests/keystore/src/android/keystore/cts/PutOverflowTest.java
new file mode 100644
index 0000000..088af35
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/PutOverflowTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+import android.test.AndroidTestCase;
+import java.lang.reflect.Method;
+
+public class PutOverflowTest extends AndroidTestCase {
+    public void testCrash() throws Exception {
+        try {
+            Class<?> keystoreClass = Class.forName("android.security.KeyStore");
+            Method getInstance = keystoreClass.getMethod("getInstance");
+            Method put = keystoreClass.getMethod("put",
+                    String.class, byte[].class, int.class, int.class);
+            Object keystore = getInstance.invoke(null);
+            byte[] buffer = new byte[65536];
+            Boolean result = (Boolean)put.invoke(keystore, "crashFile", buffer, -1, 0);
+            assertTrue("Fix for ANDROID-22802399 not present", result);
+        } catch (ReflectiveOperationException ignored) {
+            // Since this test requires reflection avoid causing undue failures if classes or
+            // methods were changed.
+        }
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/RSACipherTest.java b/tests/tests/keystore/src/android/keystore/cts/RSACipherTest.java
new file mode 100644
index 0000000..3403df3
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/RSACipherTest.java
@@ -0,0 +1,251 @@
+/*
+ * 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.
+ */
+
+package android.keystore.cts;
+
+import java.math.BigInteger;
+import java.security.PrivateKey;
+import java.security.Provider;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.interfaces.RSAKey;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+
+import android.security.keystore.KeyProperties;
+import android.test.AndroidTestCase;
+import android.test.MoreAsserts;
+
+public class RSACipherTest extends AndroidTestCase {
+
+    private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_CRYPTO_OP_PROVIDER_NAME;
+
+    public void testNoPaddingEncryptionAndDecryptionSucceedsWithInputShorterThanModulus()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey key : RSASignatureTest.importKatKeyPairs(getContext(),
+                TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        "RSA/ECB/NoPadding",
+                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                        false))) {
+            try {
+                PublicKey publicKey = key.getKeystoreBackedKeyPair().getPublic();
+                PrivateKey privateKey = key.getKeystoreBackedKeyPair().getPrivate();
+                BigInteger modulus = ((RSAKey) publicKey).getModulus();
+                int modulusSizeBytes = (modulus.bitLength() + 7) / 8;
+
+                // 1-byte long input for which we know the output
+                byte[] input = new byte[] {1};
+                // Because of how RSA works, the output is 1 (left-padded with zero bytes).
+                byte[] expectedOutput = TestUtils.leftPadWithZeroBytes(input, modulusSizeBytes);
+
+                Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding", provider);
+                cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+                MoreAsserts.assertEquals(expectedOutput, cipher.doFinal(input));
+
+                cipher.init(Cipher.DECRYPT_MODE, privateKey);
+                MoreAsserts.assertEquals(expectedOutput, cipher.doFinal(input));
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key " + key.getAlias(), e);
+            }
+        }
+    }
+
+    public void testNoPaddingEncryptionSucceedsWithPlaintextOneSmallerThanModulus()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey key : RSASignatureTest.importKatKeyPairs(getContext(),
+                TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        "RSA/ECB/NoPadding",
+                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                        false))) {
+            try {
+                PublicKey publicKey = key.getKeystoreBackedKeyPair().getPublic();
+                PrivateKey privateKey = key.getKeystoreBackedKeyPair().getPrivate();
+                BigInteger modulus = ((RSAKey) publicKey).getModulus();
+
+                // Plaintext is one smaller than the modulus
+                byte[] plaintext =
+                        TestUtils.getBigIntegerMagnitudeBytes(modulus.subtract(BigInteger.ONE));
+                Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding", provider);
+                cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+                byte[] ciphertext = cipher.doFinal(plaintext);
+                cipher.init(Cipher.DECRYPT_MODE, privateKey);
+                MoreAsserts.assertEquals(plaintext, cipher.doFinal(ciphertext));
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key " + key.getAlias(), e);
+            }
+        }
+    }
+
+    public void testNoPaddingEncryptionFailsWithPlaintextEqualToModulus() throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey key : RSASignatureTest.importKatKeyPairs(getContext(),
+                TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        "RSA/ECB/NoPadding",
+                        KeyProperties.PURPOSE_ENCRYPT ,
+                        false))) {
+            try {
+                PublicKey publicKey = key.getKeystoreBackedKeyPair().getPublic();
+                BigInteger modulus = ((RSAKey) publicKey).getModulus();
+
+                // Plaintext is exactly the modulus
+                byte[] plaintext = TestUtils.getBigIntegerMagnitudeBytes(modulus);
+                Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding", provider);
+                cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+                try {
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    fail("Unexpectedly produced ciphertext (" + ciphertext.length + " bytes): "
+                            + HexEncoding.encode(ciphertext));
+                } catch (BadPaddingException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key " + key.getAlias(), e);
+            }
+        }
+    }
+
+    public void testNoPaddingEncryptionFailsWithPlaintextOneLargerThanModulus() throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey key : RSASignatureTest.importKatKeyPairs(getContext(),
+                TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        "RSA/ECB/NoPadding",
+                        KeyProperties.PURPOSE_ENCRYPT,
+                        false))) {
+            try {
+                PublicKey publicKey = key.getKeystoreBackedKeyPair().getPublic();
+                BigInteger modulus = ((RSAKey) publicKey).getModulus();
+
+                // Plaintext is one larger than the modulus
+                byte[] plaintext =
+                        TestUtils.getBigIntegerMagnitudeBytes(modulus.add(BigInteger.ONE));
+                Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding", provider);
+                cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+                try {
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    fail("Unexpectedly produced ciphertext (" + ciphertext.length + " bytes): "
+                            + HexEncoding.encode(ciphertext));
+                } catch (BadPaddingException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key " + key.getAlias(), e);
+            }
+        }
+    }
+
+    public void testNoPaddingEncryptionFailsWithPlaintextOneByteLongerThanModulus()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey key : RSASignatureTest.importKatKeyPairs(getContext(),
+                TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        "RSA/ECB/NoPadding",
+                        KeyProperties.PURPOSE_ENCRYPT,
+                        false))) {
+            try {
+                PublicKey publicKey = key.getKeystoreBackedKeyPair().getPublic();
+                BigInteger modulus = ((RSAKey) publicKey).getModulus();
+
+                // Plaintext is one byte longer than the modulus. The message is filled with zeros
+                // (thus being 0 if treated as a BigInteger). This is on purpose, to check that the
+                // Cipher implementation rejects such long message without comparing it to the value
+                // of the modulus.
+                byte[] plaintext = new byte[((modulus.bitLength() + 7) / 8) + 1];
+                Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding", provider);
+                cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+                try {
+                    byte[] ciphertext = cipher.doFinal(plaintext);
+                    fail("Unexpectedly produced ciphertext (" + ciphertext.length + " bytes): "
+                            + HexEncoding.encode(ciphertext));
+                } catch (IllegalBlockSizeException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key " + key.getAlias(), e);
+            }
+        }
+    }
+
+    public void testNoPaddingDecryptionFailsWithCiphertextOneByteLongerThanModulus()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey key : RSASignatureTest.importKatKeyPairs(getContext(),
+                TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        "RSA/ECB/NoPadding",
+                        KeyProperties.PURPOSE_DECRYPT,
+                        false))) {
+            try {
+                PrivateKey privateKey = key.getKeystoreBackedKeyPair().getPrivate();
+                BigInteger modulus = ((RSAKey) privateKey).getModulus();
+
+                // Ciphertext is one byte longer than the modulus. The message is filled with zeros
+                // (thus being 0 if treated as a BigInteger). This is on purpose, to check that the
+                // Cipher implementation rejects such long message without comparing it to the value
+                // of the modulus.
+                byte[] ciphertext = new byte[((modulus.bitLength() + 7) / 8) + 1];
+                Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding", EXPECTED_PROVIDER_NAME);
+                cipher.init(Cipher.DECRYPT_MODE, privateKey);
+                try {
+                    byte[] plaintext = cipher.doFinal(ciphertext);
+                    fail("Unexpectedly produced plaintext (" + ciphertext.length + " bytes): "
+                            + HexEncoding.encode(plaintext));
+                } catch (IllegalBlockSizeException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key " + key.getAlias(), e);
+            }
+        }
+    }
+
+    public void testNoPaddingWithZeroMessage() throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey key : RSASignatureTest.importKatKeyPairs(getContext(),
+                TestUtils.getMinimalWorkingImportParametersForCipheringWith(
+                        "RSA/ECB/NoPadding",
+                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT,
+                        false))) {
+            try {
+                PublicKey publicKey = key.getKeystoreBackedKeyPair().getPublic();
+                PrivateKey privateKey = key.getKeystoreBackedKeyPair().getPrivate();
+
+                byte[] plaintext = EmptyArray.BYTE;
+                Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding", EXPECTED_PROVIDER_NAME);
+                cipher.init(Cipher.ENCRYPT_MODE, publicKey);
+                byte[] ciphertext = cipher.doFinal(plaintext);
+                // Ciphertext should be all zero bytes
+                byte[] expectedCiphertext = new byte[(TestUtils.getKeySizeBits(publicKey) + 7) / 8];
+                MoreAsserts.assertEquals(expectedCiphertext, ciphertext);
+
+                cipher.init(Cipher.DECRYPT_MODE, privateKey);
+                // Decrypted plaintext should also be all zero bytes
+                byte[] expectedPlaintext = new byte[expectedCiphertext.length];
+                MoreAsserts.assertEquals(expectedPlaintext, cipher.doFinal(ciphertext));
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key " + key.getAlias(), e);
+            }
+        }
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/RSASignatureTest.java b/tests/tests/keystore/src/android/keystore/cts/RSASignatureTest.java
new file mode 100644
index 0000000..9ae3043
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/RSASignatureTest.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+import java.security.InvalidKeyException;
+import java.security.KeyPair;
+import java.security.PrivateKey;
+import java.security.Provider;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.interfaces.RSAKey;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import com.android.cts.keystore.R;
+
+import android.content.Context;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.KeyProtection;
+import android.test.AndroidTestCase;
+
+public class RSASignatureTest extends AndroidTestCase {
+
+    private static final String EXPECTED_PROVIDER_NAME = SignatureTest.EXPECTED_PROVIDER_NAME;
+
+    private static final String[] SIGNATURE_ALGORITHMS;
+
+    static {
+        List<String> sigAlgs = new ArrayList<>();
+        for (String algorithm : SignatureTest.EXPECTED_SIGNATURE_ALGORITHMS) {
+            String keyAlgorithm = TestUtils.getSignatureAlgorithmKeyAlgorithm(algorithm);
+            if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+                sigAlgs.add(algorithm);
+            }
+        }
+        SIGNATURE_ALGORITHMS = sigAlgs.toArray(new String[sigAlgs.size()]);
+    }
+
+    public void testMaxMessageSizeWhenNoDigestUsed() throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (ImportedKey keyPair : importKatKeyPairs("NONEwithRSA")) {
+            PublicKey publicKey = keyPair.getKeystoreBackedKeyPair().getPublic();
+            PrivateKey privateKey = keyPair.getKeystoreBackedKeyPair().getPrivate();
+            int modulusSizeBits = ((RSAKey) publicKey).getModulus().bitLength();
+            try {
+                int modulusSizeBytes = (modulusSizeBits + 7) / 8;
+                // PKCS#1 signature padding must be at least 11 bytes long (00 || 01 || PS || 00)
+                // where PS must be at least 8 bytes long).
+                int expectedMaxMessageSizeBytes = modulusSizeBytes - 11;
+                byte[] msg = new byte[expectedMaxMessageSizeBytes + 1];
+                Arrays.fill(msg, (byte) 0xf0);
+
+                // Assert that a message of expected maximum length is accepted
+                Signature signature = Signature.getInstance("NONEwithRSA", provider);
+                signature.initSign(privateKey);
+                signature.update(msg, 0, expectedMaxMessageSizeBytes);
+                byte[] sigBytes = signature.sign();
+
+                signature.initVerify(publicKey);
+                signature.update(msg, 0, expectedMaxMessageSizeBytes);
+                assertTrue(signature.verify(sigBytes));
+
+                // Assert that a message longer than expected maximum length is rejected
+                signature = Signature.getInstance(signature.getAlgorithm(), provider);
+                signature.initSign(privateKey);
+                try {
+                    signature.update(msg, 0, expectedMaxMessageSizeBytes + 1);
+                    signature.sign();
+                    fail();
+                } catch (SignatureException expected) {
+                }
+
+                signature.initVerify(publicKey);
+                try {
+                    signature.update(msg, 0, expectedMaxMessageSizeBytes + 1);
+                    signature.verify(sigBytes);
+                    fail();
+                } catch (SignatureException expected) {
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + modulusSizeBits + " bit key", e);
+            }
+        }
+    }
+
+    public void testSmallKeyRejected() throws Exception {
+        // Use a 512 bit key which should prevent the use of any digests larger than SHA-256
+        // because the padded form of the digested message will be larger than modulus size.
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        for (String algorithm : SIGNATURE_ALGORITHMS) {
+            try {
+                String digest = TestUtils.getSignatureAlgorithmDigest(algorithm);
+                if (KeyProperties.DIGEST_NONE.equalsIgnoreCase(digest)) {
+                    // Ignore signature algorithms without digest -- this is tested in a separate
+                    // test above.
+                    continue;
+                }
+                int digestOutputSizeBits = TestUtils.getDigestOutputSizeBits(digest);
+                if (digestOutputSizeBits <= 256) {
+                    // 256-bit and shorter digests are short enough to work with a 512 bit key.
+                    continue;
+                }
+
+                KeyPair keyPair = TestUtils.importIntoAndroidKeyStore("test1",
+                        getContext(),
+                        R.raw.rsa_key5_512_pkcs8,
+                        R.raw.rsa_key5_512_cert,
+                        TestUtils.getMinimalWorkingImportParametersForSigningingWith(algorithm))
+                        .getKeystoreBackedKeyPair();
+                assertEquals(512, ((RSAKey) keyPair.getPrivate()).getModulus().bitLength());
+                assertEquals(512, ((RSAKey) keyPair.getPublic()).getModulus().bitLength());
+
+                Signature signature = Signature.getInstance(algorithm, provider);
+                // Assert that either initSign or sign fails. We don't expect all keymaster
+                // implementations to fail early, during initSign.
+                try {
+                    signature.initSign(keyPair.getPrivate());
+                    signature.update("A message".getBytes("UTF-8"));
+                    byte[] sigBytes = signature.sign();
+                    fail("Unexpectedly generated a signature (" + sigBytes.length + " bytes): "
+                            + HexEncoding.encode(sigBytes));
+                } catch (InvalidKeyException | SignatureException expected) {
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    private Collection<ImportedKey> importKatKeyPairs(String signatureAlgorithm)
+            throws Exception {
+        KeyProtection params =
+                TestUtils.getMinimalWorkingImportParametersForSigningingWith(signatureAlgorithm);
+        return importKatKeyPairs(getContext(), params);
+    }
+
+    static Collection<ImportedKey> importKatKeyPairs(
+            Context context, KeyProtection importParams) throws Exception {
+        return Arrays.asList(new ImportedKey[] {
+                TestUtils.importIntoAndroidKeyStore("testRSA512", context,
+                        R.raw.rsa_key5_512_pkcs8, R.raw.rsa_key5_512_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testRSA768", context,
+                        R.raw.rsa_key6_768_pkcs8, R.raw.rsa_key6_768_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testRSA1024", context,
+                        R.raw.rsa_key3_1024_pkcs8, R.raw.rsa_key3_1024_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testRSA2024", context,
+                        R.raw.rsa_key8_2048_pkcs8, R.raw.rsa_key8_2048_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testRSA3072", context,
+                        R.raw.rsa_key7_3072_pksc8, R.raw.rsa_key7_3072_cert, importParams),
+                TestUtils.importIntoAndroidKeyStore("testRSA4096", context,
+                        R.raw.rsa_key4_4096_pkcs8, R.raw.rsa_key4_4096_cert, importParams),
+                });
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/SecretKeyFactoryTest.java b/tests/tests/keystore/src/android/keystore/cts/SecretKeyFactoryTest.java
new file mode 100644
index 0000000..17307f7
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/SecretKeyFactoryTest.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyInfo;
+import android.security.keystore.KeyProperties;
+import android.test.MoreAsserts;
+
+import junit.framework.TestCase;
+
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Provider;
+import java.security.Security;
+import java.security.spec.InvalidKeySpecException;
+import java.security.Provider.Service;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.SecretKeySpec;
+
+public class SecretKeyFactoryTest extends TestCase {
+    private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_PROVIDER_NAME;
+
+    private static final String[] EXPECTED_ALGORITHMS = {
+        "AES",
+        "HmacSHA1",
+        "HmacSHA224",
+        "HmacSHA256",
+        "HmacSHA384",
+        "HmacSHA512",
+    };
+
+    public void testAlgorithmList() {
+        // Assert that Android Keystore Provider exposes exactly the expected SecretKeyFactory
+        // algorithms. We don't care whether the algorithms are exposed via aliases, as long as
+        // canonical names of algorithms are accepted. If the Provider exposes extraneous
+        // algorithms, it'll be caught because it'll have to expose at least one Service for such an
+        // algorithm, and this Service's algorithm will not be in the expected set.
+
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        Set<Service> services = provider.getServices();
+        Set<String> actualAlgsLowerCase = new HashSet<String>();
+        Set<String> expectedAlgsLowerCase = new HashSet<String>(
+                Arrays.asList(TestUtils.toLowerCase(EXPECTED_ALGORITHMS)));
+        for (Service service : services) {
+            if ("SecretKeyFactory".equalsIgnoreCase(service.getType())) {
+                String algLowerCase = service.getAlgorithm().toLowerCase(Locale.US);
+                actualAlgsLowerCase.add(algLowerCase);
+            }
+        }
+
+        TestUtils.assertContentsInAnyOrder(actualAlgsLowerCase,
+                expectedAlgsLowerCase.toArray(new String[0]));
+    }
+
+    public void testGetKeySpecWithKeystoreKeyAndKeyInfoReflectsAllAuthorizations()
+            throws Exception {
+        Date keyValidityStart = new Date(System.currentTimeMillis() - TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForOriginationEnd =
+                new Date(System.currentTimeMillis() + TestUtils.DAY_IN_MILLIS);
+        Date keyValidityForConsumptionEnd =
+                new Date(System.currentTimeMillis() + 3 * TestUtils.DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                String[] blockModes =
+                        new String[] {KeyProperties.BLOCK_MODE_CTR, KeyProperties.BLOCK_MODE_ECB};
+                String[] encryptionPaddings =
+                        new String[] {KeyProperties.ENCRYPTION_PADDING_PKCS7,
+                                KeyProperties.ENCRYPTION_PADDING_NONE};
+                String[] digests;
+                int purposes;
+                if (TestUtils.isHmacAlgorithm(algorithm)) {
+                    String digest = TestUtils.getHmacAlgorithmDigest(algorithm);
+                    digests = new String[] {digest};
+                    purposes = KeyProperties.PURPOSE_SIGN;
+                } else {
+                    digests = new String[] {KeyProperties.DIGEST_SHA384};
+                    purposes = KeyProperties.PURPOSE_DECRYPT;
+                }
+                KeyGenerator keyGenerator =
+                        KeyGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.init(new KeyGenParameterSpec.Builder("test1", purposes)
+                        .setBlockModes(blockModes)
+                        .setEncryptionPaddings(encryptionPaddings)
+                        .setDigests(digests)
+                        .setKeyValidityStart(keyValidityStart)
+                        .setKeyValidityForOriginationEnd(keyValidityForOriginationEnd)
+                        .setKeyValidityForConsumptionEnd(keyValidityForConsumptionEnd)
+                        .build());
+                SecretKey key = keyGenerator.generateKey();
+                SecretKeyFactory keyFactory = getKeyFactory(algorithm);
+                KeyInfo keyInfo = (KeyInfo) keyFactory.getKeySpec(key, KeyInfo.class);
+                assertEquals("test1", keyInfo.getKeystoreAlias());
+                assertEquals(purposes, keyInfo.getPurposes());
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(blockModes), keyInfo.getBlockModes());
+                TestUtils.assertContentsInAnyOrder(
+                        Arrays.asList(encryptionPaddings), keyInfo.getEncryptionPaddings());
+                TestUtils.assertContentsInAnyOrder(Arrays.asList(digests), keyInfo.getDigests());
+                MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
+                assertEquals(keyValidityStart, keyInfo.getKeyValidityStart());
+                assertEquals(keyValidityForOriginationEnd,
+                        keyInfo.getKeyValidityForOriginationEnd());
+                assertEquals(keyValidityForConsumptionEnd,
+                        keyInfo.getKeyValidityForConsumptionEnd());
+                assertFalse(keyInfo.isUserAuthenticationRequired());
+                assertFalse(keyInfo.isUserAuthenticationRequirementEnforcedBySecureHardware());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testTranslateKeyWithNullKeyThrowsInvalidKeyException() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                SecretKeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.translateKey(null);
+                    fail();
+                } catch (InvalidKeyException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testTranslateKeyRejectsNonAndroidKeystoreKeys() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                SecretKey key = new SecretKeySpec(new byte[16], algorithm);
+                SecretKeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.translateKey(key);
+                    fail();
+                } catch (InvalidKeyException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testTranslateKeyAcceptsAndroidKeystoreKeys() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator =
+                        KeyGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.init(new KeyGenParameterSpec.Builder("test1", 0).build());
+                SecretKey key = keyGenerator.generateKey();
+
+                SecretKeyFactory keyFactory = getKeyFactory(algorithm);
+                assertSame(key, keyFactory.translateKey(key));
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGenerateSecretWithNullSpecThrowsInvalidKeySpecException() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                SecretKeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generateSecret(null);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGenerateSecretRejectsSecretKeySpec() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                SecretKeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generateSecret(new SecretKeySpec(new byte[16], algorithm));
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testGenerateSecretRejectsKeyInfo() throws Exception {
+        for (String algorithm : EXPECTED_ALGORITHMS) {
+            try {
+                KeyGenerator keyGenerator =
+                        KeyGenerator.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+                keyGenerator.init(new KeyGenParameterSpec.Builder("test1", 0).build());
+                SecretKey keystoreKey = keyGenerator.generateKey();
+                KeyInfo keyInfo = TestUtils.getKeyInfo(keystoreKey);
+
+                SecretKeyFactory keyFactory = getKeyFactory(algorithm);
+                try {
+                    keyFactory.generateSecret(keyInfo);
+                    fail();
+                } catch (InvalidKeySpecException expected) {}
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    private SecretKeyFactory getKeyFactory(String algorithm) throws NoSuchAlgorithmException,
+            NoSuchProviderException {
+        return SecretKeyFactory.getInstance(algorithm, EXPECTED_PROVIDER_NAME);
+    }
+}
diff --git a/tests/tests/keystore/src/android/keystore/cts/SignatureTest.java b/tests/tests/keystore/src/android/keystore/cts/SignatureTest.java
index c53e2c3..8451eb8 100644
--- a/tests/tests/keystore/src/android/keystore/cts/SignatureTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/SignatureTest.java
@@ -36,16 +36,21 @@
 import java.util.Set;
 import java.util.TreeMap;
 
+import android.content.Context;
 import android.security.keystore.KeyProperties;
 import android.security.keystore.KeyProtection;
 import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 
+/**
+ * Tests for algorithm-agnostic functionality of {@code Signature} implementations backed by Android
+ * Keystore.
+ */
 public class SignatureTest extends AndroidTestCase {
 
     static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_CRYPTO_OP_PROVIDER_NAME;
 
-    private static final String[] EXPECTED_SIGNATURE_ALGORITHMS = {
+    static final String[] EXPECTED_SIGNATURE_ALGORITHMS = {
         "NONEwithRSA",
         "MD5withRSA",
         "SHA1withRSA",
@@ -321,7 +326,7 @@
                 + "f04e3de1460e60e9be7a42b1ddff0c"));
     }
 
-    private static final long DAY_IN_MILLIS = 1000 * 60 * 60 * 24;
+    private static final long DAY_IN_MILLIS = TestUtils.DAY_IN_MILLIS;
 
     public void testAlgorithmList() {
         // Assert that Android Keystore Provider exposes exactly the expected signature algorithms.
@@ -356,39 +361,264 @@
                 expectedSigAlgsLowerCase.toArray(new String[0]));
     }
 
-    public void testGeneratedSignatureVerifies() throws Exception {
-        Collection<KeyPair> keyPairs = importDefaultKatKeyPairs();
-
+    public void testAndroidKeyStoreKeysHandledByAndroidKeyStoreProviderWhenSigning()
+            throws Exception {
         Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
         assertNotNull(provider);
         for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
             try {
-                KeyPair keyPair = getKeyPairForSignatureAlgorithm(sigAlgorithm, keyPairs);
-
-                // Generate a signature
+                KeyPair keyPair = importDefaultKatKeyPair(sigAlgorithm).getKeystoreBackedKeyPair();
                 Signature signature = Signature.getInstance(sigAlgorithm);
                 signature.initSign(keyPair.getPrivate());
                 assertSame(provider, signature.getProvider());
-                byte[] message = "This is a test".getBytes("UTF-8");
-                signature.update(message);
-                byte[] sigBytes = signature.sign();
-
-                // Assert that it verifies using our own Provider
-                assertSignatureVerifiesOneShot(
-                        sigAlgorithm, provider, keyPair.getPublic(), message, sigBytes);
-
-                // Assert that it verifies using whatever Provider is chosen by JCA by
-                // default for this signature algorithm and public key.
-                assertSignatureVerifiesOneShot(
-                        sigAlgorithm, keyPair.getPublic(), message, sigBytes);
-            } catch (Exception e) {
+            } catch (Throwable e) {
                 throw new RuntimeException(sigAlgorithm + " failed", e);
             }
         }
     }
 
+    public void testAndroidKeyStorePublicKeysAcceptedByHighestPriorityProviderWhenVerifying()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyPair keyPair = importDefaultKatKeyPair(sigAlgorithm).getKeystoreBackedKeyPair();
+                Signature signature = Signature.getInstance(sigAlgorithm);
+                signature.initVerify(keyPair.getPublic());
+            } catch (Throwable e) {
+                throw new RuntimeException(sigAlgorithm + " failed", e);
+            }
+        }
+    }
+
+    public void testValidSignatureGeneratedForEmptyMessage()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            for (ImportedKey key : importKatKeyPairsForSigning(getContext(), sigAlgorithm)) {
+                if (!TestUtils.isKeyLongEnoughForSignatureAlgorithm(
+                        sigAlgorithm, key.getOriginalSigningKey())) {
+                    continue;
+                }
+                try {
+                    KeyPair keyPair = key.getKeystoreBackedKeyPair();
+
+                    // Generate a signature
+                    Signature signature = Signature.getInstance(sigAlgorithm, provider);
+                    signature.initSign(keyPair.getPrivate());
+                    byte[] sigBytes = signature.sign();
+
+                    // Assert that it verifies using our own Provider
+                    signature.initVerify(keyPair.getPublic());
+                    assertTrue(signature.verify(sigBytes));
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + sigAlgorithm + " with key " + key.getAlias(), e);
+                }
+            }
+        }
+    }
+
+    public void testEmptySignatureDoesNotVerify()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            for (ImportedKey key : importKatKeyPairsForSigning(getContext(), sigAlgorithm)) {
+                if (!TestUtils.isKeyLongEnoughForSignatureAlgorithm(
+                        sigAlgorithm, key.getOriginalSigningKey())) {
+                    continue;
+                }
+                try {
+                    KeyPair keyPair = key.getKeystoreBackedKeyPair();
+                    Signature signature = Signature.getInstance(sigAlgorithm, provider);
+                    signature.initVerify(keyPair.getPublic());
+                    assertFalse(signature.verify(EmptyArray.BYTE));
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + sigAlgorithm + " with key " + key.getAlias(), e);
+                }
+            }
+        }
+    }
+
+    public void testSignatureGeneratedByAndroidKeyStoreVerifiesByAndroidKeyStore()
+            throws Exception {
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+        for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            for (ImportedKey key : importKatKeyPairsForSigning(getContext(), sigAlgorithm)) {
+                if (!TestUtils.isKeyLongEnoughForSignatureAlgorithm(
+                        sigAlgorithm, key.getOriginalSigningKey())) {
+                    continue;
+                }
+                try {
+                    KeyPair keyPair = key.getKeystoreBackedKeyPair();
+
+                    // Generate a signature
+                    Signature signature = Signature.getInstance(sigAlgorithm, provider);
+                    signature.initSign(keyPair.getPrivate());
+                    byte[] message = "This is a test".getBytes("UTF-8");
+                    signature.update(message);
+                    byte[] sigBytes = signature.sign();
+
+                    // Assert that it verifies using our own Provider
+                    assertSignatureVerifiesOneShot(
+                            sigAlgorithm, provider, keyPair.getPublic(), message, sigBytes);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + sigAlgorithm + " with key " + key.getAlias(), e);
+                }
+            }
+        }
+    }
+
+    public void testSignatureGeneratedByAndroidKeyStoreVerifiesByHighestPriorityProvider()
+            throws Exception {
+        Provider keystoreProvider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(keystoreProvider);
+        for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            for (ImportedKey key : importKatKeyPairsForSigning(getContext(), sigAlgorithm)) {
+                if (!TestUtils.isKeyLongEnoughForSignatureAlgorithm(
+                        sigAlgorithm, key.getOriginalSigningKey())) {
+                    continue;
+                }
+                Provider verificationProvider = null;
+                try {
+                    PrivateKey keystorePrivateKey = key.getKeystoreBackedKeyPair().getPrivate();
+
+                    // Generate a signature
+                    Signature signature = Signature.getInstance(sigAlgorithm, keystoreProvider);
+                    signature.initSign(keystorePrivateKey);
+                    byte[] message = "This is a test".getBytes("UTF-8");
+                    signature.update(message);
+                    byte[] sigBytes = signature.sign();
+
+                    // Assert that it verifies using whatever Provider is chosen by JCA by default
+                    // for this signature algorithm and public key.
+                    PublicKey publicKey = key.getOriginalKeyPair().getPublic();
+                    try {
+                        signature = Signature.getInstance(sigAlgorithm);
+                        signature.initVerify(publicKey);
+                        verificationProvider = signature.getProvider();
+                    } catch (InvalidKeyException e) {
+                        // No providers support verifying signatures using this algorithm and key.
+                        continue;
+                    }
+                    assertSignatureVerifiesOneShot(
+                            sigAlgorithm, verificationProvider, publicKey, message, sigBytes);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + sigAlgorithm + " with key " + key.getAlias()
+                                    + ", verification provider: " + verificationProvider,
+                            e);
+                }
+            }
+        }
+    }
+
+    public void testSignatureGeneratedByHighestPriorityProviderVerifiesByAndroidKeyStore()
+            throws Exception {
+
+        Provider keystoreProvider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(keystoreProvider);
+        for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            for (ImportedKey key : importKatKeyPairsForSigning(getContext(), sigAlgorithm)) {
+                if (!TestUtils.isKeyLongEnoughForSignatureAlgorithm(
+                        sigAlgorithm, key.getOriginalSigningKey())) {
+                    continue;
+                }
+                Provider signingProvider = null;
+                try {
+                    PrivateKey privateKey = key.getOriginalKeyPair().getPrivate();
+
+                    // Generate a signature
+                    Signature signature;
+                    try {
+                        signature = Signature.getInstance(sigAlgorithm);
+                        signature.initSign(privateKey);
+                        signingProvider = signature.getProvider();
+                    } catch (InvalidKeyException e) {
+                        // No providers support signing using this algorithm and key.
+                        continue;
+                    }
+                    byte[] message = "This is a test".getBytes("UTF-8");
+                    signature.update(message);
+                    byte[] sigBytes = signature.sign();
+
+                    // Assert that the signature verifies using the Android Keystore provider.
+                    PublicKey keystorePublicKey = key.getKeystoreBackedKeyPair().getPublic();
+                    assertSignatureVerifiesOneShot(
+                            sigAlgorithm, keystoreProvider, keystorePublicKey, message, sigBytes);
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + sigAlgorithm + " with key " + key.getAlias()
+                                    + ", signing provider: " + signingProvider,
+                            e);
+                }
+            }
+        }
+    }
+
+    // TODO: Re-enable this test once Signature.initSign passes SecureRandom to SPI (Bug 22485587).
+    public void DISABLED_testEntropyConsumption() throws Exception {
+        // Assert that signature generation consumes the correct amount of entropy from the provided
+        // SecureRandom. There is no need to check that Signature.verify does not consume entropy
+        // because Signature.initVerify does not take a SecureRandom.
+
+        Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
+        assertNotNull(provider);
+
+        CountingSecureRandom rng = new CountingSecureRandom();
+        for (String sigAlgorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            for (ImportedKey key : importKatKeyPairsForSigning(getContext(), sigAlgorithm)) {
+                if (!TestUtils.isKeyLongEnoughForSignatureAlgorithm(
+                        sigAlgorithm, key.getOriginalSigningKey())) {
+                    continue;
+                }
+                try {
+                    KeyPair keyPair = key.getKeystoreBackedKeyPair();
+                    PrivateKey privateKey = keyPair.getPrivate();
+                    Signature signature = Signature.getInstance(sigAlgorithm, provider);
+
+                    // Signature.initSign should not consume entropy.
+                    rng.resetCounters();
+                    signature.initSign(privateKey, rng);
+                    assertEquals(0, rng.getOutputSizeBytes());
+
+                    // Signature.update should not consume entropy.
+                    byte[] message = "This is a test message".getBytes("UTF-8");
+                    rng.resetCounters();
+                    signature.update(message);
+                    assertEquals(0, rng.getOutputSizeBytes());
+
+                    // Signature.sign may consume entropy.
+                    rng.resetCounters();
+                    signature.sign();
+                    int expectedEntropyBytesConsumed;
+                    String algorithmUpperCase = sigAlgorithm.toUpperCase(Locale.US);
+                    if (algorithmUpperCase.endsWith("WITHECDSA")) {
+                        expectedEntropyBytesConsumed =
+                                (TestUtils.getKeySizeBits(privateKey) + 7) / 8;
+                    } else if (algorithmUpperCase.endsWith("WITHRSA")) {
+                        expectedEntropyBytesConsumed = 0;
+                    } else if (algorithmUpperCase.endsWith("WITHRSA/PSS")) {
+                        expectedEntropyBytesConsumed = 20; // salt length
+                    } else {
+                        throw new RuntimeException("Unsupported algorithm: " + sigAlgorithm);
+                    }
+                    assertEquals(expectedEntropyBytesConsumed, rng.getOutputSizeBytes());
+                } catch (Throwable e) {
+                    throw new RuntimeException(
+                            "Failed for " + sigAlgorithm + " with key " + key.getAlias(), e);
+                }
+            }
+        }
+    }
+
     public void testSmallMsgKat() throws Exception {
-        Collection<KeyPair> keyPairs = importDefaultKatKeyPairs();
         byte[] message = SHORT_MSG_KAT_MESSAGE;
 
         Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
@@ -397,7 +627,7 @@
             try {
                 byte[] goodSigBytes = SHORT_MSG_KAT_SIGNATURES.get(algorithm);
                 assertNotNull(goodSigBytes);
-                KeyPair keyPair = getKeyPairForSignatureAlgorithm(algorithm, keyPairs);
+                KeyPair keyPair = importDefaultKatKeyPair(algorithm).getKeystoreBackedKeyPair();
                 // Assert that AndroidKeyStore provider can verify the known good signature.
                 assertSignatureVerifiesOneShot(
                         algorithm, provider, keyPair.getPublic(), message, goodSigBytes);
@@ -417,9 +647,8 @@
                         algorithm, provider, keyPair.getPublic(), message, goodSigWithBitFlip);
 
                 // Sign the message in one go
-                Signature signature = Signature.getInstance(algorithm);
+                Signature signature = Signature.getInstance(algorithm, provider);
                 signature.initSign(keyPair.getPrivate());
-                assertSame(provider, signature.getProvider());
                 signature.update(message);
                 byte[] generatedSigBytes = signature.sign();
                 boolean deterministicSignatureScheme =
@@ -451,7 +680,7 @@
                 }
 
                 // Sign the message by feeding it into the Signature one byte at a time
-                signature = Signature.getInstance(signature.getAlgorithm());
+                signature = Signature.getInstance(signature.getAlgorithm(), provider);
                 signature.initSign(keyPair.getPrivate());
                 for (int i = 0; i < message.length; i++) {
                     signature.update(message[i]);
@@ -488,24 +717,25 @@
     }
 
     public void testLongMsgKat() throws Exception {
-        Collection<KeyPair> keyPairs = importDefaultKatKeyPairs();
         byte[] message = TestUtils.generateLargeKatMsg(LONG_MSG_KAT_SEED, LONG_MSG_KAT_SIZE_BYTES);
 
         Provider provider = Security.getProvider(EXPECTED_PROVIDER_NAME);
         assertNotNull(provider);
         for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
-            KeyPair keyPair = getKeyPairForSignatureAlgorithm(algorithm, keyPairs);
-
             try {
-                if (algorithm.toLowerCase(Locale.US).startsWith("nonewithrsa")) {
-                    // This algorithm cannot accept large messages
-                    Signature signature = Signature.getInstance(algorithm);
+                KeyPair keyPair = importDefaultKatKeyPair(algorithm).getKeystoreBackedKeyPair();
+                String digest = TestUtils.getSignatureAlgorithmDigest(algorithm);
+                String keyAlgorithm = TestUtils.getSignatureAlgorithmKeyAlgorithm(algorithm);
+                if ((KeyProperties.DIGEST_NONE.equalsIgnoreCase(digest))
+                        && (!KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(keyAlgorithm))) {
+                    // This algorithm does not accept large messages
+                    Signature signature = Signature.getInstance(algorithm, provider);
                     signature.initSign(keyPair.getPrivate());
-                    assertSame(provider, signature.getProvider());
                     try {
                         signature.update(message);
-                        signature.sign();
-                        fail();
+                        byte[] sigBytes = signature.sign();
+                        fail("Unexpectedly generated signature (" + sigBytes.length + "): "
+                                + HexEncoding.encode(sigBytes));
                     } catch (SignatureException expected) {}
 
                     // Bogus signature generated using SHA-256 digest -- shouldn't because the
@@ -514,7 +744,7 @@
                     byte[] sigBytes = SHORT_MSG_KAT_SIGNATURES.get(
                             "SHA256" + algorithm.substring("NONE".length()));
                     assertNotNull(sigBytes);
-                    signature = Signature.getInstance(algorithm);
+                    signature = Signature.getInstance(algorithm, provider);
                     signature.initVerify(keyPair.getPublic());
                     try {
                         signature.update(message);
@@ -534,13 +764,13 @@
                         algorithm, provider, keyPair.getPublic(), message, goodSigBytes, 718871);
 
                 // Sign the message in one go
-                Signature signature = Signature.getInstance(algorithm);
+                Signature signature = Signature.getInstance(algorithm, provider);
                 signature.initSign(keyPair.getPrivate());
-                assertSame(provider, signature.getProvider());
                 signature.update(message);
                 byte[] generatedSigBytes = signature.sign();
+                String paddingScheme = TestUtils.getSignatureAlgorithmPadding(algorithm);
                 boolean deterministicSignatureScheme =
-                        algorithm.toLowerCase().endsWith("withrsa");
+                        KeyProperties.SIGNATURE_PADDING_RSA_PKCS1.equalsIgnoreCase(paddingScheme);
                 if (deterministicSignatureScheme) {
                     MoreAsserts.assertEquals(goodSigBytes, generatedSigBytes);
                 } else {
@@ -566,10 +796,8 @@
                 }
 
                 // Sign the message by feeding it into the Signature one byte at a time
-                signature = Signature.getInstance(signature.getAlgorithm());
                 generatedSigBytes = generateSignatureFedUsingFixedSizeChunks(
                         algorithm, provider, keyPair.getPrivate(), message, 444307);
-                signature.initSign(keyPair.getPrivate());
                 if (deterministicSignatureScheme) {
                     MoreAsserts.assertEquals(goodSigBytes, generatedSigBytes);
                 } else {
@@ -600,114 +828,238 @@
 
     public void testInitVerifySucceedsDespiteMissingAuthorizations() throws Exception {
         KeyProtection spec = new KeyProtection.Builder(0).build();
-        assertInitVerifySucceeds("SHA256withECDSA", spec);
-        assertInitVerifySucceeds("SHA256withRSA", spec);
-        assertInitVerifySucceeds("SHA256withRSA/PSS", spec);
+
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                assertInitVerifySucceeds(algorithm, spec);
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     public void testInitSignFailsWhenNotAuthorizedToSign() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(
-                KeyProperties.PURPOSE_SIGN)
-                .setDigests(KeyProperties.DIGEST_NONE);
         int badPurposes = KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT
                 | KeyProperties.PURPOSE_VERIFY;
 
-        assertInitSignSucceeds("SHA256withECDSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA256withECDSA",
-                TestUtils.buildUpon(good, badPurposes).build());
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForSigning(algorithm);
+                assertInitSignSucceeds(algorithm, good);
+                assertInitSignThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good, badPurposes).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
 
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
-        assertInitSignSucceeds("SHA256withRSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA256withRSA",
-                TestUtils.buildUpon(good, badPurposes).build());
+    public void testInitVerifyIgnoresThatNotAuthorizedToVerify() throws Exception {
+        int badPurposes = KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT
+                | KeyProperties.PURPOSE_SIGN;
 
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS);
-        assertInitSignSucceeds("SHA256withRSA/PSS", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA256withRSA/PSS",
-                TestUtils.buildUpon(good, badPurposes).build());
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForVerifying(algorithm);
+                assertInitVerifySucceeds(algorithm, good);
+                assertInitVerifySucceeds(algorithm,
+                        TestUtils.buildUpon(good, badPurposes).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     public void testInitSignFailsWhenDigestNotAuthorized() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(
-                KeyProperties.PURPOSE_SIGN)
-                .setDigests(KeyProperties.DIGEST_SHA384);
-        String badDigest = KeyProperties.DIGEST_SHA256;
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForSigning(algorithm);
+                assertInitSignSucceeds(algorithm, good);
 
-        assertInitSignSucceeds("SHA384withECDSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA384withECDSA",
-                TestUtils.buildUpon(good).setDigests(badDigest).build());
+                String digest = TestUtils.getSignatureAlgorithmDigest(algorithm);
+                String badDigest =
+                        (KeyProperties.DIGEST_SHA256.equalsIgnoreCase(digest))
+                        ? KeyProperties.DIGEST_SHA384 : KeyProperties.DIGEST_SHA256;
+                assertInitSignThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good).setDigests(badDigest).build());
 
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
-        assertInitSignSucceeds("SHA384withRSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA384withRSA",
-                TestUtils.buildUpon(good).setDigests(badDigest).build());
+                // Check that digest NONE is not treated as ANY.
+                if (!KeyProperties.DIGEST_NONE.equalsIgnoreCase(digest)) {
+                    assertInitSignThrowsInvalidKeyException(algorithm,
+                            TestUtils.buildUpon(good)
+                                    .setDigests(KeyProperties.DIGEST_NONE)
+                                    .build());
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
 
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS);
-        assertInitSignSucceeds("SHA384withRSA/PSS", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA384withRSA/PSS",
-                TestUtils.buildUpon(good).setDigests(badDigest).build());
+    public void testInitVerifyIgnoresThatDigestNotAuthorized() throws Exception {
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForVerifying(algorithm);
+                assertInitVerifySucceeds(algorithm, good);
+
+                String digest = TestUtils.getSignatureAlgorithmDigest(algorithm);
+                String badDigest =
+                        (KeyProperties.DIGEST_SHA256.equalsIgnoreCase(digest))
+                        ? KeyProperties.DIGEST_SHA384 : KeyProperties.DIGEST_SHA256;
+                assertInitVerifySucceeds(algorithm,
+                        TestUtils.buildUpon(good).setDigests(badDigest).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     public void testInitSignFailsWhenPaddingNotAuthorized() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(
-                KeyProperties.PURPOSE_SIGN)
-                .setDigests(KeyProperties.DIGEST_SHA512);
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                String paddingScheme = TestUtils.getSignatureAlgorithmPadding(algorithm);
+                String badPaddingScheme;
+                if (paddingScheme == null) {
+                    // No padding scheme used by this algorithm -- ignore.
+                    continue;
+                } else if (KeyProperties.SIGNATURE_PADDING_RSA_PKCS1.equalsIgnoreCase(
+                        paddingScheme)) {
+                    badPaddingScheme = KeyProperties.SIGNATURE_PADDING_RSA_PSS;
+                } else if (KeyProperties.SIGNATURE_PADDING_RSA_PSS.equalsIgnoreCase(
+                        paddingScheme)) {
+                    badPaddingScheme = KeyProperties.SIGNATURE_PADDING_RSA_PKCS1;
+                } else {
+                    throw new IllegalArgumentException("Unsupported algorithm: " + algorithm);
+                }
 
-        // Does not apply to ECDSA because it doesn't any signature padding schemes
-        // assertInitSignThrowsInvalidKeyException("SHA256withECDSA", builder.build());
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
-        assertInitSignSucceeds("SHA512withRSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA512withRSA",
-                TestUtils.buildUpon(good)
-                        .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS)
-                        .build());
+                KeyProtection good = getMinimalWorkingImportParamsForSigning(algorithm);
+                assertInitSignSucceeds(algorithm, good);
+                assertInitSignThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good).setSignaturePaddings(badPaddingScheme).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
 
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS);
-        assertInitSignSucceeds("SHA512withRSA/PSS", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA512withRSA/PSS",
-                TestUtils.buildUpon(good)
-                        .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
-                        .build());
+    public void testInitVerifyIgnoresThatPaddingNotAuthorized() throws Exception {
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                String paddingScheme = TestUtils.getSignatureAlgorithmPadding(algorithm);
+                String badPaddingScheme;
+                if (paddingScheme == null) {
+                    // No padding scheme used by this algorithm -- ignore.
+                    continue;
+                } else if (KeyProperties.SIGNATURE_PADDING_RSA_PKCS1.equalsIgnoreCase(
+                        paddingScheme)) {
+                    badPaddingScheme = KeyProperties.SIGNATURE_PADDING_RSA_PSS;
+                } else if (KeyProperties.SIGNATURE_PADDING_RSA_PSS.equalsIgnoreCase(
+                        paddingScheme)) {
+                    badPaddingScheme = KeyProperties.SIGNATURE_PADDING_RSA_PKCS1;
+                } else {
+                    throw new IllegalArgumentException("Unsupported algorithm: " + algorithm);
+                }
+
+                KeyProtection good = getMinimalWorkingImportParamsForVerifying(algorithm);
+                assertInitVerifySucceeds(algorithm, good);
+                assertInitVerifySucceeds(algorithm,
+                        TestUtils.buildUpon(good).setSignaturePaddings(badPaddingScheme).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     public void testInitSignFailsWhenKeyNotYetValid() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(
-                KeyProperties.PURPOSE_SIGN)
-                .setDigests(KeyProperties.DIGEST_SHA224);
         Date badStartDate = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
-        assertInitSignSucceeds("SHA224withECDSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA224withECDSA",
-                TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
-
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
-        assertInitSignSucceeds("SHA224withRSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA224withRSA",
-                TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
-
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS);
-        assertInitSignSucceeds("SHA224withRSA/PSS", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA224withRSA/PSS",
-                TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForSigning(algorithm);
+                assertInitSignSucceeds(algorithm, good);
+                assertInitSignThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
-    public void testInitSignFailsWhenKeyNoLongerValid() throws Exception {
-        KeyProtection.Builder good = new KeyProtection.Builder(
-                KeyProperties.PURPOSE_SIGN)
-                .setDigests(KeyProperties.DIGEST_SHA224);
+    public void testInitVerifyIgnoresThatKeyNotYetValid() throws Exception {
+        Date badStartDate = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForVerifying(algorithm);
+                assertInitVerifySucceeds(algorithm, good);
+                assertInitVerifySucceeds(algorithm,
+                        TestUtils.buildUpon(good).setKeyValidityStart(badStartDate).build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitSignFailsWhenKeyNoLongerValidForOrigination() throws Exception {
         Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
-        assertInitSignSucceeds("SHA224withECDSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA224withECDSA",
-                TestUtils.buildUpon(good).setKeyValidityForOriginationEnd(badEndDate).build());
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForSigning(algorithm);
+                assertInitSignSucceeds(algorithm, good);
+                assertInitSignThrowsInvalidKeyException(algorithm,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForOriginationEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
 
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
-        assertInitSignSucceeds("SHA224withRSA", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA224withRSA",
-                TestUtils.buildUpon(good).setKeyValidityForOriginationEnd(badEndDate).build());
+    public void testInitVerifyIgnoresThatKeyNoLongerValidForOrigination() throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForVerifying(algorithm);
+                assertInitVerifySucceeds(algorithm, good);
+                assertInitVerifySucceeds(algorithm,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForOriginationEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
 
-        good.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS);
-        assertInitSignSucceeds("SHA224withRSA/PSS", good.build());
-        assertInitSignThrowsInvalidKeyException("SHA224withRSA/PSS",
-                TestUtils.buildUpon(good).setKeyValidityForOriginationEnd(badEndDate).build());
+    public void testInitSignIgnoresThatKeyNoLongerValidForConsumption() throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForSigning(algorithm);
+                assertInitSignSucceeds(algorithm, good);
+                assertInitSignSucceeds(algorithm,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForConsumptionEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
+    }
+
+    public void testInitVerifyIgnoresThatKeyNoLongerValidForConsumption() throws Exception {
+        Date badEndDate = new Date(System.currentTimeMillis() - DAY_IN_MILLIS);
+        for (String algorithm : EXPECTED_SIGNATURE_ALGORITHMS) {
+            try {
+                KeyProtection good = getMinimalWorkingImportParamsForVerifying(algorithm);
+                assertInitVerifySucceeds(algorithm, good);
+                assertInitVerifySucceeds(algorithm,
+                        TestUtils.buildUpon(good)
+                                .setKeyValidityForConsumptionEnd(badEndDate)
+                                .build());
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for " + algorithm, e);
+            }
+        }
     }
 
     private void assertInitVerifySucceeds(
@@ -727,12 +1079,10 @@
             int certResId,
             KeyProtection keyProtection) throws Exception {
         PublicKey publicKey = TestUtils.importIntoAndroidKeyStore(
-                "test1",
-                TestUtils.getRawResPrivateKey(getContext(), privateKeyResId),
-                TestUtils.getRawResX509Certificate(getContext(), certResId),
-                keyProtection)
+                "test1", getContext(), privateKeyResId, certResId, keyProtection)
+                .getKeystoreBackedKeyPair()
                 .getPublic();
-        Signature signature = Signature.getInstance(signatureAlgorithm);
+        Signature signature = Signature.getInstance(signatureAlgorithm, EXPECTED_PROVIDER_NAME);
         signature.initVerify(publicKey);
     }
 
@@ -753,12 +1103,10 @@
             int certResId,
             KeyProtection keyProtection) throws Exception {
         PrivateKey privateKey = TestUtils.importIntoAndroidKeyStore(
-                "test1",
-                TestUtils.getRawResPrivateKey(getContext(), privateKeyResId),
-                TestUtils.getRawResX509Certificate(getContext(), certResId),
-                keyProtection)
+                "test1", getContext(), privateKeyResId, certResId, keyProtection)
+                .getKeystoreBackedKeyPair()
                 .getPrivate();
-        Signature signature = Signature.getInstance(signatureAlgorithm);
+        Signature signature = Signature.getInstance(signatureAlgorithm, EXPECTED_PROVIDER_NAME);
         signature.initSign(privateKey);
     }
 
@@ -788,12 +1136,10 @@
             int certResId,
             KeyProtection keyProtection) throws Exception {
         PrivateKey privateKey = TestUtils.importIntoAndroidKeyStore(
-                "test1",
-                TestUtils.getRawResPrivateKey(getContext(), privateKeyResId),
-                TestUtils.getRawResX509Certificate(getContext(), certResId),
-                keyProtection)
+                "test1", getContext(), privateKeyResId, certResId, keyProtection)
+                .getKeystoreBackedKeyPair()
                 .getPrivate();
-        Signature signature = Signature.getInstance(signatureAlgorithm);
+        Signature signature = Signature.getInstance(signatureAlgorithm, EXPECTED_PROVIDER_NAME);
         try {
             signature.initSign(privateKey);
             fail(message);
@@ -801,59 +1147,39 @@
     }
 
     static int[] getDefaultKeyAndCertResIds(String signatureAlgorithm) {
-        String sigAlgLowerCase = signatureAlgorithm.toLowerCase();
-        if (sigAlgLowerCase.contains("ecdsa")) {
+        String keyAlgorithm = TestUtils.getSignatureAlgorithmKeyAlgorithm(signatureAlgorithm);
+        if (KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(keyAlgorithm)) {
             return new int[] {R.raw.ec_key1_pkcs8, R.raw.ec_key1_cert};
-        } else if (sigAlgLowerCase.contains("rsa")) {
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
             return new int[] {R.raw.rsa_key1_pkcs8, R.raw.rsa_key1_cert};
         } else {
-            throw new IllegalArgumentException(
-                    "Unknown signature algorithm: " + signatureAlgorithm);
+            throw new IllegalArgumentException("Unknown key algorithm: " + keyAlgorithm);
         }
     }
 
-    private static String getKeyAlgorithmForSignatureAlgorithm(String signatureAlgorithm) {
-        String algLowerCase = signatureAlgorithm.toLowerCase();
-        if (algLowerCase.contains("withecdsa")) {
-            return KeyProperties.KEY_ALGORITHM_EC;
-        } else if (algLowerCase.contains("withrsa")) {
-            return KeyProperties.KEY_ALGORITHM_RSA;
+    private ImportedKey importDefaultKatKeyPair(String signatureAlgorithm) throws Exception {
+        String keyAlgorithm = TestUtils.getSignatureAlgorithmKeyAlgorithm(signatureAlgorithm);
+        KeyProtection importParams =
+                TestUtils.getMinimalWorkingImportParametersForSigningingWith(signatureAlgorithm);
+        if (KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(keyAlgorithm)) {
+            return TestUtils.importIntoAndroidKeyStore(
+                    "testEc",
+                    getContext(),
+                    R.raw.ec_key1_pkcs8,
+                    R.raw.ec_key1_cert,
+                    importParams);
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            return TestUtils.importIntoAndroidKeyStore(
+                    "testRsa",
+                    getContext(),
+                    R.raw.rsa_key1_pkcs8,
+                    R.raw.rsa_key1_cert,
+                    importParams);
         } else {
-            throw new IllegalArgumentException(
-                    "Unsupported signature algorithm: " + signatureAlgorithm);
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
         }
     }
 
-    private static KeyPair getKeyPairForSignatureAlgorithm(String signatureAlgorithm,
-            Iterable<KeyPair> keyPairs) {
-        return TestUtils.getKeyPairForKeyAlgorithm(
-                getKeyAlgorithmForSignatureAlgorithm(signatureAlgorithm), keyPairs);
-    }
-
-    private Collection<KeyPair> importDefaultKatKeyPairs() throws Exception {
-        return Arrays.asList(
-                TestUtils.importIntoAndroidKeyStore(
-                        "testRsa",
-                        TestUtils.getRawResPrivateKey(getContext(), R.raw.rsa_key1_pkcs8),
-                        TestUtils.getRawResX509Certificate(getContext(), R.raw.rsa_key1_cert),
-                        new KeyProtection.Builder(
-                                KeyProperties.PURPOSE_SIGN)
-                                .setDigests(KeyProperties.DIGEST_NONE)
-                                .setSignaturePaddings(
-                                        KeyProperties.SIGNATURE_PADDING_RSA_PKCS1,
-                                        KeyProperties.SIGNATURE_PADDING_RSA_PSS)
-                                .build()),
-                TestUtils.importIntoAndroidKeyStore(
-                        "testEc",
-                        TestUtils.getRawResPrivateKey(getContext(), R.raw.ec_key1_pkcs8),
-                        TestUtils.getRawResX509Certificate(getContext(), R.raw.ec_key1_cert),
-                        new KeyProtection.Builder(
-                                KeyProperties.PURPOSE_SIGN)
-                                .setDigests(KeyProperties.DIGEST_NONE)
-                                .build())
-                );
-    }
-
     private void assertSignatureVerifiesOneShot(
             String algorithm,
             PublicKey publicKey,
@@ -963,4 +1289,29 @@
                     + HexEncoding.encode(signature));
         }
     }
+
+    private static KeyProtection getMinimalWorkingImportParamsForSigning(String algorithm) {
+        return TestUtils.getMinimalWorkingImportParametersForSigningingWith(algorithm);
+    }
+
+    private static KeyProtection getMinimalWorkingImportParamsForVerifying(
+            @SuppressWarnings("unused") String algorithm) {
+        // No need to authorize anything because verification does not use the private key.
+        // Operations using public keys do not need authorization.
+        return new KeyProtection.Builder(0).build();
+    }
+
+    static Collection<ImportedKey> importKatKeyPairsForSigning(
+            Context context, String signatureAlgorithm) throws Exception {
+        String keyAlgorithm = TestUtils.getSignatureAlgorithmKeyAlgorithm(signatureAlgorithm);
+        KeyProtection importParams =
+                TestUtils.getMinimalWorkingImportParametersForSigningingWith(signatureAlgorithm);
+        if (KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(keyAlgorithm)) {
+            return ECDSASignatureTest.importKatKeyPairs(context, importParams);
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            return RSASignatureTest.importKatKeyPairs(context, importParams);
+        } else {
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+    }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/TestUtils.java b/tests/tests/keystore/src/android/keystore/cts/TestUtils.java
index 3448ffc..85b8869 100644
--- a/tests/tests/keystore/src/android/keystore/cts/TestUtils.java
+++ b/tests/tests/keystore/src/android/keystore/cts/TestUtils.java
@@ -27,10 +27,10 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.math.BigInteger;
 import java.security.Key;
 import java.security.KeyFactory;
 import java.security.KeyPair;
-import java.security.KeyPairGenerator;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 import java.security.MessageDigest;
@@ -56,6 +56,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import javax.crypto.SecretKey;
@@ -65,6 +66,9 @@
 abstract class TestUtils extends Assert {
 
     static final String EXPECTED_CRYPTO_OP_PROVIDER_NAME = "AndroidKeyStoreBCWorkaround";
+    static final String EXPECTED_PROVIDER_NAME = "AndroidKeyStore";
+
+    static final long DAY_IN_MILLIS = 1000 * 60 * 60 * 24;
 
 
     private TestUtils() {}
@@ -110,7 +114,7 @@
         }
     }
 
-    private static int getKeySizeBits(Key key) {
+    static int getKeySizeBits(Key key) {
         if (key instanceof ECKey) {
             return ((ECKey) key).getParams().getCurve().getField().getFieldSize();
         } else if (key instanceof RSAKey) {
@@ -370,18 +374,6 @@
         return result;
     }
 
-    static Certificate generateSelfSignedCert(String keyAlgorithm) throws Exception {
-        KeyPairGenerator generator =
-                KeyPairGenerator.getInstance(keyAlgorithm, "AndroidKeyStore");
-        generator.initialize(new KeyGenParameterSpec.Builder(
-                "test1",
-                KeyProperties.PURPOSE_SIGN)
-                .build());
-        KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
-        keyStore.load(null);
-        return keyStore.getCertificate("test1");
-    }
-
     static PrivateKey getRawResPrivateKey(Context context, int resId) throws Exception {
         byte[] pkcs8EncodedForm;
         try (InputStream in = context.getResources().openRawResource(resId)) {
@@ -422,7 +414,7 @@
                 (PrivateKey) keyStore.getKey(alias, null));
     }
 
-    static SecretKey importIntoAndroidKeyStore(
+    static ImportedKey importIntoAndroidKeyStore(
             String alias,
             SecretKey key,
             KeyProtection keyProtection) throws Exception {
@@ -431,7 +423,35 @@
         keyStore.setEntry(alias,
                 new KeyStore.SecretKeyEntry(key),
                 keyProtection);
-        return (SecretKey) keyStore.getKey(alias, null);
+        return new ImportedKey(alias, key, (SecretKey) keyStore.getKey(alias, null));
+    }
+
+    static ImportedKey importIntoAndroidKeyStore(
+            String alias, Context context, int privateResId, int certResId, KeyProtection params)
+                    throws Exception {
+        Certificate originalCert = TestUtils.getRawResX509Certificate(context, certResId);
+        PublicKey originalPublicKey = originalCert.getPublicKey();
+        PrivateKey originalPrivateKey = TestUtils.getRawResPrivateKey(context, privateResId);
+
+        // Check that the domain parameters match between the private key and the public key. This
+        // is to catch accidental errors where a test provides the wrong resource ID as one of the
+        // parameters.
+        if (!originalPublicKey.getAlgorithm().equalsIgnoreCase(originalPrivateKey.getAlgorithm())) {
+            throw new IllegalArgumentException("Key algorithm mismatch."
+                    + " Public: " + originalPublicKey.getAlgorithm()
+                    + ", private: " + originalPrivateKey.getAlgorithm());
+        }
+        assertKeyPairSelfConsistent(originalPublicKey, originalPrivateKey);
+
+        KeyPair keystoreBacked = TestUtils.importIntoAndroidKeyStore(
+                alias, originalPrivateKey, originalCert,
+                params);
+        assertKeyPairSelfConsistent(keystoreBacked);
+        assertKeyPairSelfConsistent(keystoreBacked.getPublic(), originalPrivateKey);
+        return new ImportedKey(
+                alias,
+                new KeyPair(originalCert.getPublicKey(), originalPrivateKey),
+                keystoreBacked);
     }
 
     static byte[] drain(InputStream in) throws IOException {
@@ -444,19 +464,26 @@
         return result.toByteArray();
     }
 
+    static KeyProtection.Builder buildUpon(KeyProtection params) {
+        return buildUponInternal(params, null);
+    }
+
+    static KeyProtection.Builder buildUpon(KeyProtection params, int newPurposes) {
+        return buildUponInternal(params, newPurposes);
+    }
+
     static KeyProtection.Builder buildUpon(
             KeyProtection.Builder builder) {
-        return buildUponInternal(builder, null);
+        return buildUponInternal(builder.build(), null);
     }
 
     static KeyProtection.Builder buildUpon(
             KeyProtection.Builder builder, int newPurposes) {
-        return buildUponInternal(builder, newPurposes);
+        return buildUponInternal(builder.build(), newPurposes);
     }
 
     private static KeyProtection.Builder buildUponInternal(
-            KeyProtection.Builder builder, Integer newPurposes) {
-        KeyProtection spec = builder.build();
+            KeyProtection spec, Integer newPurposes) {
         int purposes = (newPurposes == null) ? spec.getPurposes() : newPurposes;
         KeyProtection.Builder result = new KeyProtection.Builder(purposes);
         result.setBlockModes(spec.getBlockModes());
@@ -475,19 +502,26 @@
         return result;
     }
 
+    static KeyGenParameterSpec.Builder buildUpon(KeyGenParameterSpec spec) {
+        return buildUponInternal(spec, null);
+    }
+
+    static KeyGenParameterSpec.Builder buildUpon(KeyGenParameterSpec spec, int newPurposes) {
+        return buildUponInternal(spec, newPurposes);
+    }
+
     static KeyGenParameterSpec.Builder buildUpon(
             KeyGenParameterSpec.Builder builder) {
-        return buildUponInternal(builder, null);
+        return buildUponInternal(builder.build(), null);
     }
 
     static KeyGenParameterSpec.Builder buildUpon(
             KeyGenParameterSpec.Builder builder, int newPurposes) {
-        return buildUponInternal(builder, newPurposes);
+        return buildUponInternal(builder.build(), newPurposes);
     }
 
     private static KeyGenParameterSpec.Builder buildUponInternal(
-            KeyGenParameterSpec.Builder builder, Integer newPurposes) {
-        KeyGenParameterSpec spec = builder.build();
+            KeyGenParameterSpec spec, Integer newPurposes) {
         int purposes = (newPurposes == null) ? spec.getPurposes() : newPurposes;
         KeyGenParameterSpec.Builder result =
                 new KeyGenParameterSpec.Builder(spec.getKeystoreAlias(), purposes);
@@ -526,6 +560,15 @@
         throw new IllegalArgumentException("No KeyPair for key algorithm " + keyAlgorithm);
     }
 
+    static Key getKeyForKeyAlgorithm(String keyAlgorithm, Iterable<? extends Key> keys) {
+        for (Key key : keys) {
+            if (keyAlgorithm.equalsIgnoreCase(key.getAlgorithm())) {
+                return key;
+            }
+        }
+        throw new IllegalArgumentException("No Key for key algorithm " + keyAlgorithm);
+    }
+
     static byte[] generateLargeKatMsg(byte[] seed, int msgSizeBytes) throws Exception {
         byte[] result = new byte[msgSizeBytes];
         MessageDigest digest = MessageDigest.getInstance("SHA-512");
@@ -540,4 +583,328 @@
         }
         return result;
     }
+
+    static byte[] leftPadWithZeroBytes(byte[] array, int length) {
+        if (array.length >= length) {
+            return array;
+        }
+        byte[] result = new byte[length];
+        System.arraycopy(array, 0, result, result.length - array.length, array.length);
+        return result;
+    }
+
+    static boolean contains(int[] array, int value) {
+        for (int element : array) {
+            if (element == value) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    static boolean isHmacAlgorithm(String algorithm) {
+        return algorithm.toUpperCase(Locale.US).startsWith("HMAC");
+    }
+
+    static String getHmacAlgorithmDigest(String algorithm) {
+        String algorithmUpperCase = algorithm.toUpperCase(Locale.US);
+        if (!algorithmUpperCase.startsWith("HMAC")) {
+            return null;
+        }
+        String result = algorithmUpperCase.substring("HMAC".length());
+        if (result.startsWith("SHA")) {
+            result = "SHA-" + result.substring("SHA".length());
+        }
+        return result;
+    }
+
+    static String getCipherKeyAlgorithm(String transformation) {
+        String transformationUpperCase = transformation.toUpperCase(Locale.US);
+        if (transformationUpperCase.startsWith("AES/")) {
+            return KeyProperties.KEY_ALGORITHM_AES;
+        } else if (transformationUpperCase.startsWith("RSA/")) {
+            return KeyProperties.KEY_ALGORITHM_RSA;
+        } else {
+            throw new IllegalArgumentException("Unsupported transformation: " + transformation);
+        }
+    }
+
+    static boolean isCipherSymmetric(String transformation) {
+        String transformationUpperCase = transformation.toUpperCase(Locale.US);
+        if (transformationUpperCase.startsWith("AES/")) {
+            return true;
+        } else if (transformationUpperCase.startsWith("RSA/")) {
+            return false;
+        } else {
+            throw new IllegalArgumentException("Unsupported transformation: " + transformation);
+        }
+    }
+
+    static String getCipherDigest(String transformation) {
+        String transformationUpperCase = transformation.toUpperCase(Locale.US);
+        if (transformationUpperCase.contains("/OAEP")) {
+            if (transformationUpperCase.endsWith("/OAEPPADDING")) {
+                return KeyProperties.DIGEST_SHA1;
+            } else if (transformationUpperCase.endsWith(
+                    "/OAEPWITHSHA-1ANDMGF1PADDING")) {
+                return KeyProperties.DIGEST_SHA1;
+            } else if (transformationUpperCase.endsWith(
+                    "/OAEPWITHSHA-224ANDMGF1PADDING")) {
+                return KeyProperties.DIGEST_SHA224;
+            } else if (transformationUpperCase.endsWith(
+                    "/OAEPWITHSHA-256ANDMGF1PADDING")) {
+                return KeyProperties.DIGEST_SHA256;
+            } else if (transformationUpperCase.endsWith(
+                    "/OAEPWITHSHA-384ANDMGF1PADDING")) {
+                return KeyProperties.DIGEST_SHA384;
+            } else if (transformationUpperCase.endsWith(
+                    "/OAEPWITHSHA-512ANDMGF1PADDING")) {
+                return KeyProperties.DIGEST_SHA512;
+            } else {
+                throw new RuntimeException("Unsupported OAEP padding scheme: "
+                        + transformation);
+            }
+        } else {
+            return null;
+        }
+    }
+
+    static String getCipherEncryptionPadding(String transformation) {
+        String transformationUpperCase = transformation.toUpperCase(Locale.US);
+        if (transformationUpperCase.endsWith("/NOPADDING")) {
+            return KeyProperties.ENCRYPTION_PADDING_NONE;
+        } else if (transformationUpperCase.endsWith("/PKCS7PADDING")) {
+            return KeyProperties.ENCRYPTION_PADDING_PKCS7;
+        } else if (transformationUpperCase.endsWith("/PKCS1PADDING")) {
+            return KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1;
+        } else if (transformationUpperCase.split("/")[2].startsWith("OAEP")) {
+            return KeyProperties.ENCRYPTION_PADDING_RSA_OAEP;
+        } else {
+            throw new IllegalArgumentException("Unsupported transformation: " + transformation);
+        }
+    }
+
+    static String getCipherBlockMode(String transformation) {
+        return transformation.split("/")[1].toUpperCase(Locale.US);
+    }
+
+    static String getSignatureAlgorithmDigest(String algorithm) {
+        String algorithmUpperCase = algorithm.toUpperCase(Locale.US);
+        int withIndex = algorithmUpperCase.indexOf("WITH");
+        if (withIndex == -1) {
+            throw new IllegalArgumentException("Unsupported algorithm: " + algorithm);
+        }
+        String digest = algorithmUpperCase.substring(0, withIndex);
+        if (digest.startsWith("SHA")) {
+            digest = "SHA-" + digest.substring("SHA".length());
+        }
+        return digest;
+    }
+
+    static String getSignatureAlgorithmPadding(String algorithm) {
+        String algorithmUpperCase = algorithm.toUpperCase(Locale.US);
+        if (algorithmUpperCase.endsWith("WITHECDSA")) {
+            return null;
+        } else if (algorithmUpperCase.endsWith("WITHRSA")) {
+            return KeyProperties.SIGNATURE_PADDING_RSA_PKCS1;
+        } else if (algorithmUpperCase.endsWith("WITHRSA/PSS")) {
+            return KeyProperties.SIGNATURE_PADDING_RSA_PSS;
+        } else {
+            throw new IllegalArgumentException("Unsupported algorithm: " + algorithm);
+        }
+    }
+
+    static String getSignatureAlgorithmKeyAlgorithm(String algorithm) {
+        String algorithmUpperCase = algorithm.toUpperCase(Locale.US);
+        if (algorithmUpperCase.endsWith("WITHECDSA")) {
+            return KeyProperties.KEY_ALGORITHM_EC;
+        } else if ((algorithmUpperCase.endsWith("WITHRSA"))
+                || (algorithmUpperCase.endsWith("WITHRSA/PSS"))) {
+            return KeyProperties.KEY_ALGORITHM_RSA;
+        } else {
+            throw new IllegalArgumentException("Unsupported algorithm: " + algorithm);
+        }
+    }
+
+    static boolean isKeyLongEnoughForSignatureAlgorithm(String algorithm, Key key) {
+        String keyAlgorithm = key.getAlgorithm();
+        if (KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(keyAlgorithm)) {
+            // No length restrictions for ECDSA
+            return true;
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            // No length restrictions for RSA
+            String digest = getSignatureAlgorithmDigest(algorithm);
+            int digestOutputSizeBits = getDigestOutputSizeBits(digest);
+            if (digestOutputSizeBits == -1) {
+                // No digesting -- assume the key is long enough for the message
+                return true;
+            }
+            String paddingScheme = getSignatureAlgorithmPadding(algorithm);
+            int paddingOverheadBytes;
+            if (KeyProperties.SIGNATURE_PADDING_RSA_PKCS1.equalsIgnoreCase(paddingScheme)) {
+                paddingOverheadBytes = 30;
+            } else if (KeyProperties.SIGNATURE_PADDING_RSA_PSS.equalsIgnoreCase(paddingScheme)) {
+                paddingOverheadBytes = 22;
+            } else {
+                throw new IllegalArgumentException(
+                        "Unsupported signature padding scheme: " + paddingScheme);
+            }
+            int minKeySizeBytes = paddingOverheadBytes + (digestOutputSizeBits + 7) / 8 + 1;
+            int keySizeBytes = ((RSAKey) key).getModulus().bitLength() / 8;
+            return keySizeBytes >= minKeySizeBytes;
+        } else {
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+    }
+
+    static int getMaxSupportedPlaintextInputSizeBytes(String transformation, Key key) {
+        String keyAlgorithm = getCipherKeyAlgorithm(transformation);
+        if (KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(keyAlgorithm)) {
+            return Integer.MAX_VALUE;
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            String encryptionPadding = getCipherEncryptionPadding(transformation);
+            int modulusSizeBytes = (getKeySizeBits(key) + 7) / 8;
+            if (KeyProperties.ENCRYPTION_PADDING_NONE.equalsIgnoreCase(encryptionPadding)) {
+                return modulusSizeBytes - 1;
+            } else if (KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1.equalsIgnoreCase(
+                    encryptionPadding)) {
+                return modulusSizeBytes - 11;
+            } else if (KeyProperties.ENCRYPTION_PADDING_RSA_OAEP.equalsIgnoreCase(
+                    encryptionPadding)) {
+                String digest = getCipherDigest(transformation);
+                int digestOutputSizeBytes = (getDigestOutputSizeBits(digest) + 7) / 8;
+                return modulusSizeBytes - 2 * digestOutputSizeBytes - 2;
+            } else {
+                throw new IllegalArgumentException(
+                        "Unsupported encryption padding scheme: " + encryptionPadding);
+            }
+        } else {
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+    }
+
+    static int getDigestOutputSizeBits(String digest) {
+        if (KeyProperties.DIGEST_NONE.equals(digest)) {
+            return -1;
+        } else if (KeyProperties.DIGEST_MD5.equals(digest)) {
+            return 128;
+        } else if (KeyProperties.DIGEST_SHA1.equals(digest)) {
+            return 160;
+        } else if (KeyProperties.DIGEST_SHA224.equals(digest)) {
+            return 224;
+        } else if (KeyProperties.DIGEST_SHA256.equals(digest)) {
+            return 256;
+        } else if (KeyProperties.DIGEST_SHA384.equals(digest)) {
+            return 384;
+        } else if (KeyProperties.DIGEST_SHA512.equals(digest)) {
+            return 512;
+        } else {
+            throw new IllegalArgumentException("Unsupported digest: " + digest);
+        }
+    }
+
+    static byte[] concat(byte[] arr1, byte[] arr2) {
+        return concat(arr1, 0, (arr1 != null) ? arr1.length : 0,
+                arr2, 0, (arr2 != null) ? arr2.length : 0);
+    }
+
+    static byte[] concat(byte[] arr1, int offset1, int len1,
+            byte[] arr2, int offset2, int len2) {
+        if (len1 == 0) {
+            return subarray(arr2, offset2, len2);
+        } else if (len2 == 0) {
+            return subarray(arr1, offset1, len1);
+        }
+        byte[] result = new byte[len1 + len2];
+        if (len1 > 0) {
+            System.arraycopy(arr1, offset1, result, 0, len1);
+        }
+        if (len2 > 0) {
+            System.arraycopy(arr2, offset2, result, len1, len2);
+        }
+        return result;
+    }
+
+    static byte[] subarray(byte[] arr, int offset, int len) {
+        if (len == 0) {
+            return EmptyArray.BYTE;
+        }
+        if ((offset == 0) && (arr.length == len)) {
+            return arr;
+        }
+        byte[] result = new byte[len];
+        System.arraycopy(arr, offset, result, 0, len);
+        return result;
+    }
+
+    static KeyProtection getMinimalWorkingImportParametersForSigningingWith(
+            String signatureAlgorithm) {
+        String keyAlgorithm = getSignatureAlgorithmKeyAlgorithm(signatureAlgorithm);
+        String digest = getSignatureAlgorithmDigest(signatureAlgorithm);
+        if (KeyProperties.KEY_ALGORITHM_EC.equalsIgnoreCase(keyAlgorithm)) {
+            return new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN)
+                    .setDigests(digest)
+                    .build();
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            String padding = getSignatureAlgorithmPadding(signatureAlgorithm);
+            return new KeyProtection.Builder(KeyProperties.PURPOSE_SIGN)
+                    .setDigests(digest)
+                    .setSignaturePaddings(padding)
+                    .build();
+        } else {
+            throw new IllegalArgumentException(
+                    "Unsupported signature algorithm: " + signatureAlgorithm);
+        }
+    }
+
+    static KeyProtection getMinimalWorkingImportParametersForCipheringWith(
+            String transformation, int purposes) {
+        return getMinimalWorkingImportParametersForCipheringWith(transformation, purposes, false);
+    }
+
+    static KeyProtection getMinimalWorkingImportParametersForCipheringWith(
+            String transformation, int purposes, boolean ivProvidedWhenEncrypting) {
+        String keyAlgorithm = TestUtils.getCipherKeyAlgorithm(transformation);
+        if (KeyProperties.KEY_ALGORITHM_AES.equalsIgnoreCase(keyAlgorithm)) {
+            String encryptionPadding = TestUtils.getCipherEncryptionPadding(transformation);
+            String blockMode = TestUtils.getCipherBlockMode(transformation);
+            boolean randomizedEncryptionRequired = true;
+            if (KeyProperties.BLOCK_MODE_ECB.equalsIgnoreCase(blockMode)) {
+                randomizedEncryptionRequired = false;
+            } else if ((ivProvidedWhenEncrypting)
+                    && ((purposes & KeyProperties.PURPOSE_ENCRYPT) != 0)) {
+                randomizedEncryptionRequired = false;
+            }
+            return new KeyProtection.Builder(
+                    purposes)
+                    .setBlockModes(blockMode)
+                    .setEncryptionPaddings(encryptionPadding)
+                    .setRandomizedEncryptionRequired(randomizedEncryptionRequired)
+                    .build();
+        } else if (KeyProperties.KEY_ALGORITHM_RSA.equalsIgnoreCase(keyAlgorithm)) {
+            String digest = TestUtils.getCipherDigest(transformation);
+            String encryptionPadding = TestUtils.getCipherEncryptionPadding(transformation);
+            boolean randomizedEncryptionRequired =
+                    !KeyProperties.ENCRYPTION_PADDING_NONE.equalsIgnoreCase(encryptionPadding);
+            return new KeyProtection.Builder(
+                    purposes)
+                    .setDigests((digest != null) ? new String[] {digest} : EmptyArray.STRING)
+                    .setEncryptionPaddings(encryptionPadding)
+                    .setRandomizedEncryptionRequired(randomizedEncryptionRequired)
+                    .build();
+        } else {
+            throw new IllegalArgumentException("Unsupported key algorithm: " + keyAlgorithm);
+        }
+    }
+
+    static byte[] getBigIntegerMagnitudeBytes(BigInteger value) {
+        return removeLeadingZeroByteIfPresent(value.toByteArray());
+    }
+
+    private static byte[] removeLeadingZeroByteIfPresent(byte[] value) {
+        if ((value.length < 1) || (value[0] != 0)) {
+            return value;
+        }
+        return TestUtils.subarray(value, 1, value.length - 1);
+    }
 }
diff --git a/tests/tests/keystore/src/android/keystore/cts/TransparentSecretKey.java b/tests/tests/keystore/src/android/keystore/cts/TransparentSecretKey.java
new file mode 100644
index 0000000..6e74dc0
--- /dev/null
+++ b/tests/tests/keystore/src/android/keystore/cts/TransparentSecretKey.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.keystore.cts;
+
+import javax.crypto.SecretKey;
+
+/**
+ * {@link SecretKey} which exposes its key material. The two reasons for the existence of this class
+ * are: (1) to help test that classes under test don't assume that all transparent secret keys are
+ * instances of {@link SecretKeySpec}, and (2) because {@code SecretKeySpec} rejects zero-length
+ * key material which is needed in some tests.
+ */
+public class TransparentSecretKey implements SecretKey {
+    private final String mAlgorithm;
+    private final byte[] mKeyMaterial;
+
+    public TransparentSecretKey(byte[] keyMaterial, String algorithm) {
+        mAlgorithm = algorithm;
+        mKeyMaterial = keyMaterial.clone();
+    }
+
+    @Override
+    public String getAlgorithm() {
+        return mAlgorithm;
+    }
+
+    @Override
+    public byte[] getEncoded() {
+        return mKeyMaterial;
+    }
+
+    @Override
+    public String getFormat() {
+        return "RAW";
+    }
+}
diff --git a/tests/tests/location/Android.mk b/tests/tests/location/Android.mk
index 02de2f2..62d0d5d 100644
--- a/tests/tests/location/Android.mk
+++ b/tests/tests/location/Android.mk
@@ -21,7 +21,7 @@
 # and when built explicitly put it in the data partition
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/tests/tests/location/src/android/location/cts/BaseMockLocationTest.java b/tests/tests/location/src/android/location/cts/BaseMockLocationTest.java
index fbc7d8d..14019be 100644
--- a/tests/tests/location/src/android/location/cts/BaseMockLocationTest.java
+++ b/tests/tests/location/src/android/location/cts/BaseMockLocationTest.java
@@ -16,13 +16,8 @@
 
 package android.location.cts;
 
-import android.os.ParcelFileDescriptor;
+import android.cts.util.LocationUtils;
 import android.test.InstrumentationTestCase;
-import android.util.Log;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
 
 /**
  * Base class for instrumentations tests that use mock location.
@@ -33,31 +28,12 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        setAsMoskLocationProvider(true);
+        LocationUtils.registerMockLocationProvider(getInstrumentation(), true);
     }
 
     @Override
     protected void tearDown() throws Exception {
-        setAsMoskLocationProvider(false);
+        LocationUtils.registerMockLocationProvider(getInstrumentation(), false);
         super.tearDown();
     }
-
-    private void setAsMoskLocationProvider(boolean enable) {
-        StringBuilder command = new StringBuilder();
-        command.append("appops set ");
-        command.append(getInstrumentation().getContext().getPackageName());
-        command.append(" android:mock_location ");
-        command.append(enable ? "allow" : "deny");
-
-        ParcelFileDescriptor pfd = getInstrumentation().getUiAutomation()
-                .executeShellCommand(command.toString());
-
-        InputStream is = new FileInputStream(pfd.getFileDescriptor());
-        try {
-            final byte[] buffer = new byte[8192];
-            while ((is.read(buffer)) != -1);
-        } catch (IOException e) {
-            Log.e(LOG_TAG, "Error managing mock locaiton app", e);
-        }
-    }
 }
diff --git a/tests/tests/media/Android.mk b/tests/tests/media/Android.mk
index 43e3e89..13daca6 100644
--- a/tests/tests/media/Android.mk
+++ b/tests/tests/media/Android.mk
@@ -41,7 +41,7 @@
 LOCAL_STATIC_JAVA_LIBRARIES := \
     ctsmediautil ctsdeviceutil ctstestserver ctstestrunner
 
-LOCAL_JNI_SHARED_LIBRARIES := libctsmediacodec_jni
+LOCAL_JNI_SHARED_LIBRARIES := libctsmediacodec_jni libaudio_jni
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/tests/tests/media/libaudiojni/Android.mk b/tests/tests/media/libaudiojni/Android.mk
new file mode 100644
index 0000000..a6c1bfc
--- /dev/null
+++ b/tests/tests/media/libaudiojni/Android.mk
@@ -0,0 +1,39 @@
+# Copyright (C) 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.
+#
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE    := libaudio_jni
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := \
+	appendix-b-1-1-buffer-queue.cpp \
+	appendix-b-1-2-recording.cpp \
+	audio-record-native.cpp \
+	audio-track-native.cpp \
+	sl-utils.cpp
+
+LOCAL_C_INCLUDES := \
+	$(JNI_H_INCLUDE) \
+	system/core/include
+
+LOCAL_C_INCLUDES += $(call include-path-for, libaudiojni) \
+	$(call include-path-for, wilhelm)
+
+LOCAL_SHARED_LIBRARIES := libandroid liblog libnativehelper libOpenSLES libutils
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/media/libaudiojni/Blob.h b/tests/tests/media/libaudiojni/Blob.h
new file mode 100644
index 0000000..134232c
--- /dev/null
+++ b/tests/tests/media/libaudiojni/Blob.h
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 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.
+ */
+
+#ifndef ANDROID_BLOB_H
+#define ANDROID_BLOB_H
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+namespace android {
+
+// read only byte buffer like object
+
+class BlobReadOnly {
+public:
+    BlobReadOnly(const void *data, size_t size, bool byReference) :
+        mMem(byReference ? NULL : malloc(size)),
+        mData(byReference ? data : mMem),
+        mSize(size) {
+        if (!byReference) {
+            memcpy(mMem, data, size);
+        }
+    }
+    ~BlobReadOnly() {
+        free(mMem);
+    }
+
+private:
+          void * const mMem;
+
+public:
+    const void * const mData;
+          const size_t mSize;
+};
+
+// read/write byte buffer like object
+
+class Blob {
+public:
+    Blob(size_t size) :
+        mData(malloc(size)),
+        mOffset(0),
+        mSize(size),
+        mMem(mData) { }
+
+    // by reference
+    Blob(void *data, size_t size) :
+        mData(data),
+        mOffset(0),
+        mSize(size),
+        mMem(NULL) { }
+
+    ~Blob() {
+        free(mMem);
+    }
+
+    void * const mData;
+          size_t mOffset;
+    const size_t mSize;
+
+private:
+    void * const mMem;
+};
+
+} // namespace android
+
+#endif // ANDROID_BLOB_H
diff --git a/tests/tests/media/libaudiojni/Gate.h b/tests/tests/media/libaudiojni/Gate.h
new file mode 100644
index 0000000..dfc15b7
--- /dev/null
+++ b/tests/tests/media/libaudiojni/Gate.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 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.
+ */
+
+#ifndef ANDROID_GATE_H
+#define ANDROID_GATE_H
+
+#include <stdint.h>
+#include <mutex>
+
+namespace android {
+
+// Gate is a synchronization object.
+//
+// Threads will pass if it is open.
+// Threads will block (wait) if it is closed.
+//
+// When a gate is opened, all waiting threads will pass through.
+//
+// Since gate holds no external locks, consistency with external
+// state needs to be handled elsewhere.
+//
+// We use mWaitCount to indicate the number of threads that have
+// arrived at the gate via wait().  Each thread entering
+// wait obtains a unique waitId (which is the current mWaitCount).
+// This can be viewed as a sequence number.
+//
+// We use mPassCount to indicate the number of threads that have
+// passed the gate.  If the waitId is less than or equal to the mPassCount
+// then that thread has passed the gate.  An open gate sets mPassedCount
+// to the current mWaitCount, allowing all prior threads to pass.
+//
+// See sync_timeline, sync_pt, etc. for graphics.
+
+class Gate {
+public:
+    Gate(bool open = false) :
+        mOpen(open),
+        mExit(false),
+        mWaitCount(0),
+        mPassCount(0)
+    { }
+
+    // waits for the gate to open, returns immediately if gate is already open.
+    //
+    // Do not hold a monitor lock while calling this.
+    //
+    // returns true if we passed the gate normally
+    //         false if gate is terminated and we didn't pass the gate.
+    bool wait() {
+        std::unique_lock<std::mutex> l(mLock);
+        size_t waitId = ++mWaitCount;
+        if (mOpen) {
+            mPassCount = waitId; // let me through
+        }
+        while (!passedGate_l(waitId) && !mExit) {
+            mCondition.wait(l);
+        }
+        return passedGate_l(waitId);
+    }
+
+    // close the gate.
+    void closeGate() {
+        std::lock_guard<std::mutex> l(mLock);
+        mOpen = false;
+        mExit = false;
+    }
+
+    // open the gate.
+    // signal to all waiters it is okay to go.
+    void openGate() {
+        std::lock_guard<std::mutex> l(mLock);
+        mOpen = true;
+        mExit = false;
+        if (waiters_l() > 0) {
+            mPassCount = mWaitCount;  // allow waiting threads to go through
+            // unoptimized pthreads will wake thread to find we still hold lock.
+            mCondition.notify_all();
+        }
+    }
+
+    // terminate (term has expired).
+    // all threads allowed to pass regardless of whether the gate is open or closed.
+    void terminate() {
+        std::lock_guard<std::mutex> l(mLock);
+        mExit = true;
+        if (waiters_l() > 0) {
+            // unoptimized pthreads will wake thread to find we still hold lock.
+            mCondition.notify_all();
+        }
+    }
+
+    bool isOpen() {
+        std::lock_guard<std::mutex> l(mLock);
+        return mOpen;
+    }
+
+    // return how many waiters are at the gate.
+    size_t waiters() {
+        std::lock_guard<std::mutex> l(mLock);
+        return waiters_l();
+    }
+
+private:
+    bool                    mOpen;
+    bool                    mExit;
+    size_t                  mWaitCount;  // total number of threads that have called wait()
+    size_t                  mPassCount;  // total number of threads passed the gate.
+    std::condition_variable mCondition;
+    std::mutex              mLock;
+
+    // return how many waiters are at the gate.
+    inline size_t waiters_l() {
+        return mWaitCount - mPassCount;
+    }
+
+    // return whether the waitId (from mWaitCount) has passed through the gate
+    inline bool passedGate_l(size_t waitId) {
+        return (ssize_t)(waitId - mPassCount) <= 0;
+    }
+};
+
+} // namespace android
+
+#endif // ANDROID_GATE_H
diff --git a/tests/tests/media/libaudiojni/appendix-b-1-1-buffer-queue.cpp b/tests/tests/media/libaudiojni/appendix-b-1-1-buffer-queue.cpp
new file mode 100644
index 0000000..5bb88a7
--- /dev/null
+++ b/tests/tests/media/libaudiojni/appendix-b-1-1-buffer-queue.cpp
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "OpenSL-ES-Test-B-1-1-Buffer-Queue"
+
+#include "sl-utils.h"
+
+/*
+ * See https://www.khronos.org/registry/sles/specs/OpenSL_ES_Specification_1.0.1.pdf
+ * Appendix B.1.1 sample code.
+ *
+ * Minor edits made to conform to Android coding style.
+ *
+ * Correction to code: SL_IID_VOLUME is now made optional for the mixer.
+ * It isn't supported on the standard Android mixer, but it is supported on the player.
+ */
+
+#define MAX_NUMBER_INTERFACES 3
+
+/* Local storage for Audio data in 16 bit words */
+#define AUDIO_DATA_STORAGE_SIZE 4096
+
+#define AUDIO_DATA_SEGMENTS 8
+
+/* Audio data buffer size in 16 bit words. 8 data segments are used in
+   this simple example */
+#define AUDIO_DATA_BUFFER_SIZE (AUDIO_DATA_STORAGE_SIZE / AUDIO_DATA_SEGMENTS)
+
+/* Structure for passing information to callback function */
+typedef struct  {
+    SLPlayItf playItf;
+    SLint16  *pDataBase; // Base address of local audio data storage
+    SLint16  *pData;     // Current address of local audio data storage
+    SLuint32  size;
+} CallbackCntxt;
+
+/* Local storage for Audio data */
+static SLint16 pcmData[AUDIO_DATA_STORAGE_SIZE];
+
+/* Callback for Buffer Queue events */
+static void BufferQueueCallback(
+        SLBufferQueueItf queueItf,
+        void *pContext)
+{
+    SLresult res;
+    CallbackCntxt *pCntxt = (CallbackCntxt*)pContext;
+    if (pCntxt->pData < (pCntxt->pDataBase + pCntxt->size)) {
+        res = (*queueItf)->Enqueue(queueItf, (void *)pCntxt->pData,
+                sizeof(SLint16) * AUDIO_DATA_BUFFER_SIZE); /* Size given in bytes. */
+        ALOGE_IF(res != SL_RESULT_SUCCESS, "error: %s", android::getSLErrStr(res));
+        /* Increase data pointer by buffer size */
+        pCntxt->pData += AUDIO_DATA_BUFFER_SIZE;
+    }
+}
+
+/* Play some music from a buffer queue */
+static void TestPlayMusicBufferQueue(SLObjectItf sl)
+{
+    SLEngineItf EngineItf;
+
+    SLresult res;
+
+    SLDataSource audioSource;
+    SLDataLocator_BufferQueue bufferQueue;
+    SLDataFormat_PCM pcm;
+
+    SLDataSink audioSink;
+    SLDataLocator_OutputMix locator_outputmix;
+
+    SLObjectItf player;
+    SLPlayItf playItf;
+    SLBufferQueueItf bufferQueueItf;
+    SLBufferQueueState state;
+
+    SLObjectItf OutputMix;
+    SLVolumeItf volumeItf;
+
+    int i;
+
+    SLboolean required[MAX_NUMBER_INTERFACES];
+    SLInterfaceID iidArray[MAX_NUMBER_INTERFACES];
+
+    /* Callback context for the buffer queue callback function */
+    CallbackCntxt cntxt;
+
+    /* Get the SL Engine Interface which is implicit */
+    res = (*sl)->GetInterface(sl, SL_IID_ENGINE, (void *)&EngineItf);
+    CheckErr(res);
+
+    /* Initialize arrays required[] and iidArray[] */
+    for (i = 0; i < MAX_NUMBER_INTERFACES; i++) {
+        required[i] = SL_BOOLEAN_FALSE;
+        iidArray[i] = SL_IID_NULL;
+    }
+
+    // Set arrays required[] and iidArray[] for VOLUME interface
+    required[0] = SL_BOOLEAN_FALSE; // ANDROID: we don't require this interface
+    iidArray[0] = SL_IID_VOLUME;
+
+#if 0
+    const unsigned interfaces = 1;
+#else
+
+    /* FIXME: Android doesn't properly support optional interfaces (required == false).
+    [3.1.6] When an application requests explicit interfaces during object creation,
+    it can flag any interface as required. If an implementation is unable to satisfy
+    the request for an interface that is not flagged as required (i.e. it is not required),
+    this will not cause the object to fail creation. On the other hand, if the interface
+    is flagged as required and the implementation is unable to satisfy the request
+    for the interface, the object will not be created.
+    */
+    const unsigned interfaces = 0;
+#endif
+    // Create Output Mix object to be used by player
+    res = (*EngineItf)->CreateOutputMix(EngineItf, &OutputMix, interfaces,
+            iidArray, required);
+    CheckErr(res);
+
+    // Realizing the Output Mix object in synchronous mode.
+    res = (*OutputMix)->Realize(OutputMix, SL_BOOLEAN_FALSE);
+    CheckErr(res);
+
+    volumeItf = NULL; // ANDROID: Volume interface on mix object may not be supported
+    res = (*OutputMix)->GetInterface(OutputMix, SL_IID_VOLUME,
+            (void *)&volumeItf);
+
+    /* Setup the data source structure for the buffer queue */
+    bufferQueue.locatorType = SL_DATALOCATOR_BUFFERQUEUE;
+    bufferQueue.numBuffers = 4; /* Four buffers in our buffer queue */
+
+    /* Setup the format of the content in the buffer queue */
+    pcm.formatType = SL_DATAFORMAT_PCM;
+    pcm.numChannels = 2;
+    pcm.samplesPerSec = SL_SAMPLINGRATE_44_1;
+    pcm.bitsPerSample = SL_PCMSAMPLEFORMAT_FIXED_16;
+    pcm.containerSize = 16;
+    pcm.channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;
+    pcm.endianness = SL_BYTEORDER_LITTLEENDIAN;
+    audioSource.pFormat = (void *)&pcm;
+    audioSource.pLocator = (void *)&bufferQueue;
+
+    /* Setup the data sink structure */
+    locator_outputmix.locatorType = SL_DATALOCATOR_OUTPUTMIX;
+    locator_outputmix.outputMix = OutputMix;
+    audioSink.pLocator = (void *)&locator_outputmix;
+    audioSink.pFormat = NULL;
+
+    /* Initialize the context for Buffer queue callbacks */
+    cntxt.pDataBase = pcmData;
+    cntxt.pData = cntxt.pDataBase;
+    cntxt.size = sizeof(pcmData) / sizeof(pcmData[0]); // ANDROID: Bug
+
+    /* Set arrays required[] and iidArray[] for SEEK interface
+       (PlayItf is implicit) */
+    required[0] = SL_BOOLEAN_TRUE;
+    iidArray[0] = SL_IID_BUFFERQUEUE;
+
+    /* Create the music player */
+
+    res = (*EngineItf)->CreateAudioPlayer(EngineItf, &player,
+            &audioSource, &audioSink, 1, iidArray, required);
+    CheckErr(res);
+
+    /* Realizing the player in synchronous mode. */
+    res = (*player)->Realize(player, SL_BOOLEAN_FALSE);
+    CheckErr(res);
+
+    /* Get seek and play interfaces */
+    res = (*player)->GetInterface(player, SL_IID_PLAY, (void *)&playItf);
+    CheckErr(res);
+    res = (*player)->GetInterface(player, SL_IID_BUFFERQUEUE,
+            (void *)&bufferQueueItf);
+    CheckErr(res);
+
+    /* Setup to receive buffer queue event callbacks */
+    res = (*bufferQueueItf)->RegisterCallback(bufferQueueItf,
+            BufferQueueCallback, &cntxt /* BUG, was NULL */);
+    CheckErr(res);
+
+    /* Before we start set volume to -3dB (-300mB) */
+    if (volumeItf != NULL) { // ANDROID: Volume interface may not be supported.
+        res = (*volumeItf)->SetVolumeLevel(volumeItf, -300);
+        CheckErr(res);
+    }
+
+    /* Enqueue a few buffers to get the ball rolling */
+    res = (*bufferQueueItf)->Enqueue(bufferQueueItf, cntxt.pData,
+            sizeof(SLint16) * AUDIO_DATA_BUFFER_SIZE); /* Size given in bytes. */
+    CheckErr(res);
+    cntxt.pData += AUDIO_DATA_BUFFER_SIZE;
+    res = (*bufferQueueItf)->Enqueue(bufferQueueItf, cntxt.pData,
+            sizeof(SLint16) * AUDIO_DATA_BUFFER_SIZE); /* Size given in bytes. */
+    CheckErr(res);
+    cntxt.pData += AUDIO_DATA_BUFFER_SIZE;
+    res = (*bufferQueueItf)->Enqueue(bufferQueueItf, cntxt.pData,
+            sizeof(SLint16) * AUDIO_DATA_BUFFER_SIZE); /* Size given in bytes. */
+    CheckErr(res);
+    cntxt.pData += AUDIO_DATA_BUFFER_SIZE;
+
+    /* Play the PCM samples using a buffer queue */
+    res = (*playItf)->SetPlayState(playItf, SL_PLAYSTATE_PLAYING);
+    CheckErr(res);
+
+    /* Wait until the PCM data is done playing, the buffer queue callback
+       will continue to queue buffers until the entire PCM data has been
+       played. This is indicated by waiting for the count member of the
+       SLBufferQueueState to go to zero.
+     */
+    res = (*bufferQueueItf)->GetState(bufferQueueItf, &state);
+    CheckErr(res);
+
+    while (state.count) {
+        usleep(5 * 1000 /* usec */); // ANDROID: avoid busy waiting
+        (*bufferQueueItf)->GetState(bufferQueueItf, &state);
+    }
+
+    /* Make sure player is stopped */
+    res = (*playItf)->SetPlayState(playItf, SL_PLAYSTATE_STOPPED);
+    CheckErr(res);
+
+    /* Destroy the player */
+    (*player)->Destroy(player);
+
+    /* Destroy Output Mix object */
+    (*OutputMix)->Destroy(OutputMix);
+}
+
+extern "C" void Java_android_media_cts_AudioNativeTest_nativeAppendixBBufferQueue(
+        JNIEnv * /* env */, jclass /* clazz */)
+{
+    SLObjectItf engineObject = android::OpenSLEngine();
+    LOG_ALWAYS_FATAL_IF(engineObject == NULL, "cannot open OpenSL ES engine");
+
+    TestPlayMusicBufferQueue(engineObject);
+    android::CloseSLEngine(engineObject);
+}
diff --git a/tests/tests/media/libaudiojni/appendix-b-1-2-recording.cpp b/tests/tests/media/libaudiojni/appendix-b-1-2-recording.cpp
new file mode 100644
index 0000000..5f6f3aa
--- /dev/null
+++ b/tests/tests/media/libaudiojni/appendix-b-1-2-recording.cpp
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "OpenSL-ES-Test-B-1-2-Recording"
+
+#include "sl-utils.h"
+
+/*
+ * See https://www.khronos.org/registry/sles/specs/OpenSL_ES_Specification_1.0.1.pdf
+ * Appendix B.1.2 sample code.
+ *
+ * Minor edits made to conform to Android coding style.
+ *
+ * Correction to code: SL_IID_AUDIOIODEVICECAPABILITIES is not supported.
+ * Detection of microphone should be made in Java layer.
+ */
+
+#define MAX_NUMBER_INTERFACES 5
+#define MAX_NUMBER_INPUT_DEVICES 3
+#define POSITION_UPDATE_PERIOD 1000 /* 1 sec */
+
+static void RecordEventCallback(SLRecordItf caller __unused,
+        void *pContext __unused,
+        SLuint32 recordevent __unused)
+{
+    /* Callback code goes here */
+}
+
+/*
+ * Test recording of audio from a microphone into a specified file
+ */
+static void TestAudioRecording(SLObjectItf sl)
+{
+    SLObjectItf recorder;
+    SLRecordItf recordItf;
+    SLEngineItf EngineItf;
+    SLAudioIODeviceCapabilitiesItf AudioIODeviceCapabilitiesItf;
+    SLAudioInputDescriptor AudioInputDescriptor;
+    SLresult res;
+
+    SLDataSource audioSource;
+    SLDataLocator_IODevice locator_mic;
+    SLDeviceVolumeItf devicevolumeItf;
+    SLDataSink audioSink;
+    SLDataLocator_URI uri;
+    SLDataFormat_MIME mime;
+
+    int i;
+    SLboolean required[MAX_NUMBER_INTERFACES];
+    SLInterfaceID iidArray[MAX_NUMBER_INTERFACES];
+
+    SLuint32 InputDeviceIDs[MAX_NUMBER_INPUT_DEVICES];
+    SLint32 numInputs = 0;
+    SLboolean mic_available = SL_BOOLEAN_FALSE;
+    SLuint32 mic_deviceID = 0;
+
+    /* Get the SL Engine Interface which is implicit */
+    res = (*sl)->GetInterface(sl, SL_IID_ENGINE, (void *)&EngineItf);
+    CheckErr(res);
+
+    AudioIODeviceCapabilitiesItf = NULL;
+    /* Get the Audio IO DEVICE CAPABILITIES interface, which is also
+       implicit */
+    res = (*sl)->GetInterface(sl, SL_IID_AUDIOIODEVICECAPABILITIES,
+            (void *)&AudioIODeviceCapabilitiesItf);
+    // ANDROID: obtaining SL_IID_AUDIOIODEVICECAPABILITIES may fail
+    if (AudioIODeviceCapabilitiesItf != NULL ) {
+        numInputs = MAX_NUMBER_INPUT_DEVICES;
+        res = (*AudioIODeviceCapabilitiesItf)->GetAvailableAudioInputs(
+                AudioIODeviceCapabilitiesItf, &numInputs, InputDeviceIDs);
+        CheckErr(res);
+        /* Search for either earpiece microphone or headset microphone input
+           device - with a preference for the latter */
+        for (i = 0; i < numInputs; i++) {
+            res = (*AudioIODeviceCapabilitiesItf)->QueryAudioInputCapabilities(
+                    AudioIODeviceCapabilitiesItf, InputDeviceIDs[i], &AudioInputDescriptor);
+            CheckErr(res);
+            if ((AudioInputDescriptor.deviceConnection == SL_DEVCONNECTION_ATTACHED_WIRED)
+                    && (AudioInputDescriptor.deviceScope == SL_DEVSCOPE_USER)
+                    && (AudioInputDescriptor.deviceLocation == SL_DEVLOCATION_HEADSET)) {
+                mic_deviceID = InputDeviceIDs[i];
+                mic_available = SL_BOOLEAN_TRUE;
+                break;
+            }
+            else if ((AudioInputDescriptor.deviceConnection == SL_DEVCONNECTION_INTEGRATED)
+                    && (AudioInputDescriptor.deviceScope == SL_DEVSCOPE_USER)
+                    && (AudioInputDescriptor.deviceLocation == SL_DEVLOCATION_HANDSET)) {
+                mic_deviceID = InputDeviceIDs[i];
+                mic_available = SL_BOOLEAN_TRUE;
+                break;
+            }
+        }
+    } else {
+        mic_deviceID = SL_DEFAULTDEVICEID_AUDIOINPUT;
+        mic_available = true;
+    }
+
+    /* If neither of the preferred input audio devices is available, no
+       point in continuing */
+    if (!mic_available) {
+        /* Appropriate error message here */
+        ALOGW("No microphone available");
+        return;
+    }
+
+    /* Initialize arrays required[] and iidArray[] */
+    for (i = 0; i < MAX_NUMBER_INTERFACES; i++) {
+        required[i] = SL_BOOLEAN_FALSE;
+        iidArray[i] = SL_IID_NULL;
+    }
+
+    // ANDROID: the following may fail for volume
+    devicevolumeItf = NULL;
+    /* Get the optional DEVICE VOLUME interface from the engine */
+    res = (*sl)->GetInterface(sl, SL_IID_DEVICEVOLUME,
+            (void *)&devicevolumeItf);
+
+    /* Set recording volume of the microphone to -3 dB */
+    if (devicevolumeItf != NULL) { // ANDROID: Volume may not be supported
+        res = (*devicevolumeItf)->SetVolume(devicevolumeItf, mic_deviceID, -300);
+        CheckErr(res);
+    }
+
+    /* Setup the data source structure */
+    locator_mic.locatorType = SL_DATALOCATOR_IODEVICE;
+    locator_mic.deviceType = SL_IODEVICE_AUDIOINPUT;
+    locator_mic.deviceID = mic_deviceID;
+    locator_mic.device= NULL;
+
+    audioSource.pLocator = (void *)&locator_mic;
+    audioSource.pFormat = NULL;
+
+#if 0
+    /* Setup the data sink structure */
+    uri.locatorType = SL_DATALOCATOR_URI;
+    uri.URI = (SLchar *) "file:///recordsample.wav";
+    mime.formatType = SL_DATAFORMAT_MIME;
+    mime.mimeType = (SLchar *) "audio/x-wav";
+    mime.containerType = SL_CONTAINERTYPE_WAV;
+    audioSink.pLocator = (void *)&uri;
+    audioSink.pFormat = (void *)&mime;
+#else
+    // FIXME: Android requires SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE
+    // because the recorder makes the distinction from SL_DATALOCATOR_BUFFERQUEUE
+    // which the player does not.
+    SLDataLocator_AndroidSimpleBufferQueue loc_bq = {
+            SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2
+    };
+    SLDataFormat_PCM format_pcm = {
+            SL_DATAFORMAT_PCM, 1, SL_SAMPLINGRATE_16,
+            SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16,
+            SL_SPEAKER_FRONT_LEFT, SL_BYTEORDER_LITTLEENDIAN
+    };
+    audioSink = { &loc_bq, &format_pcm };
+#endif
+
+    /* Create audio recorder */
+    res = (*EngineItf)->CreateAudioRecorder(EngineItf, &recorder,
+            &audioSource, &audioSink, 0, iidArray, required);
+    CheckErr(res);
+
+    /* Realizing the recorder in synchronous mode. */
+    res = (*recorder)->Realize(recorder, SL_BOOLEAN_FALSE);
+    CheckErr(res);
+
+    /* Get the RECORD interface - it is an implicit interface */
+    res = (*recorder)->GetInterface(recorder, SL_IID_RECORD, (void *)&recordItf);
+    CheckErr(res);
+
+    // ANDROID: Should register SL_IID_ANDROIDSIMPLEBUFFERQUEUE interface for callback.
+    // but does original SL_DATALOCATOR_BUFFERQUEUE variant work just as well ?
+
+    /* Setup to receive position event callbacks */
+    res = (*recordItf)->RegisterCallback(recordItf, RecordEventCallback, NULL);
+    CheckErr(res);
+
+    /* Set notifications to occur after every second - may be useful in
+       updating a recording progress bar */
+    res = (*recordItf)->SetPositionUpdatePeriod(recordItf, POSITION_UPDATE_PERIOD);
+    CheckErr(res);
+    res = (*recordItf)->SetCallbackEventsMask(recordItf, SL_RECORDEVENT_HEADATNEWPOS);
+    CheckErr(res);
+
+    /* Set the duration of the recording - 30 seconds (30,000
+       milliseconds) */
+    res = (*recordItf)->SetDurationLimit(recordItf, 30000);
+    CheckErr(res);
+
+    /* Record the audio */
+    res = (*recordItf)->SetRecordState(recordItf, SL_RECORDSTATE_RECORDING);
+    CheckErr(res);
+
+    // ANDROID: BUG - we don't wait for anything to record!
+
+    /* Destroy the recorder object */
+    (*recorder)->Destroy(recorder);
+}
+
+extern "C" void Java_android_media_cts_AudioNativeTest_nativeAppendixBRecording(
+        JNIEnv * /* env */, jclass /* clazz */)
+{
+    SLObjectItf engineObject = android::OpenSLEngine();
+    LOG_ALWAYS_FATAL_IF(engineObject == NULL, "cannot open OpenSL ES engine");
+
+    TestAudioRecording(engineObject);
+    android::CloseSLEngine(engineObject);
+}
diff --git a/tests/tests/media/libaudiojni/audio-record-native.cpp b/tests/tests/media/libaudiojni/audio-record-native.cpp
new file mode 100644
index 0000000..9103cdc
--- /dev/null
+++ b/tests/tests/media/libaudiojni/audio-record-native.cpp
@@ -0,0 +1,631 @@
+/*
+ * Copyright (C) 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "audio-record-native"
+
+#include "Blob.h"
+#include "Gate.h"
+#include "sl-utils.h"
+
+#include <deque>
+#include <utils/Errors.h>
+
+// Select whether to use STL shared pointer or to use Android strong pointer.
+// We really don't promote any sharing of this object for its lifetime, but nevertheless could
+// change the shared pointer value on the fly if desired.
+#define USE_SHARED_POINTER
+
+#ifdef USE_SHARED_POINTER
+#include <memory>
+template <typename T> using shared_pointer = std::shared_ptr<T>;
+#else
+#include <utils/RefBase.h>
+template <typename T> using shared_pointer = android::sp<T>;
+#endif
+
+using namespace android;
+
+// Must be kept in sync with Java android.media.cts.AudioRecordNative.ReadFlags
+enum {
+    READ_FLAG_BLOCKING = (1 << 0),
+};
+
+// buffer queue buffers on the OpenSL ES side.
+// The choice can be >= 1.  There is also internal buffering by AudioRecord.
+
+static const size_t BUFFER_SIZE_MSEC = 20;
+
+// TODO: Add a single buffer blocking read mode which does not require additional memory.
+// TODO: Add internal buffer memory (e.g. use circular buffer, right now mallocs on heap).
+
+class AudioRecordNative
+#ifndef USE_SHARED_POINTER
+        : public RefBase // android strong pointers require RefBase
+#endif
+{
+public:
+    AudioRecordNative() :
+        mEngineObj(NULL),
+        mEngine(NULL),
+        mRecordObj(NULL),
+        mRecord(NULL),
+        mBufferQueue(NULL),
+        mRecordState(SL_RECORDSTATE_STOPPED),
+        mBufferSize(0),
+        mNumBuffers(0)
+    { }
+
+    ~AudioRecordNative() {
+        close();
+    }
+
+    typedef std::lock_guard<std::recursive_mutex> auto_lock;
+
+    status_t open(uint32_t numChannels, uint32_t sampleRate, bool useFloat, uint32_t numBuffers) {
+        close();
+        auto_lock l(mLock);
+        mEngineObj = OpenSLEngine();
+        if (mEngineObj == NULL) {
+            ALOGW("cannot create OpenSL ES engine");
+            return INVALID_OPERATION;
+        }
+
+        SLresult res;
+        for (;;) {
+            /* Get the SL Engine Interface which is implicit */
+            res = (*mEngineObj)->GetInterface(mEngineObj, SL_IID_ENGINE, (void *)&mEngine);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            SLDataLocator_IODevice locator_mic;
+            /* Setup the data source structure */
+            locator_mic.locatorType = SL_DATALOCATOR_IODEVICE;
+            locator_mic.deviceType = SL_IODEVICE_AUDIOINPUT;
+            locator_mic.deviceID = SL_DEFAULTDEVICEID_AUDIOINPUT;
+            locator_mic.device= NULL;
+            SLDataSource audioSource;
+            audioSource.pLocator = (void *)&locator_mic;
+            audioSource.pFormat = NULL;
+
+            // FIXME: Android requires SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE
+            // because the recorder makes the distinction from SL_DATALOCATOR_BUFFERQUEUE
+            // which the player does not.
+            SLDataLocator_AndroidSimpleBufferQueue loc_bq = {
+                    SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, numBuffers
+            };
+#if 0
+            SLDataFormat_PCM pcm = {
+                    SL_DATAFORMAT_PCM, 1, SL_SAMPLINGRATE_16,
+                    SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16,
+                    SL_SPEAKER_FRONT_LEFT, SL_BYTEORDER_LITTLEENDIAN
+            };
+#else
+            SLAndroidDataFormat_PCM_EX pcm;
+            pcm.formatType = useFloat ? SL_ANDROID_DATAFORMAT_PCM_EX : SL_DATAFORMAT_PCM;
+            pcm.numChannels = numChannels;
+            pcm.sampleRate = sampleRate * 1000;
+            pcm.bitsPerSample = useFloat ?
+                    SL_PCMSAMPLEFORMAT_FIXED_32 : SL_PCMSAMPLEFORMAT_FIXED_16;
+            pcm.containerSize = pcm.bitsPerSample;
+            pcm.channelMask = channelCountToMask(numChannels);
+            pcm.endianness = SL_BYTEORDER_LITTLEENDIAN;
+            // additional
+            pcm.representation = useFloat ? SL_ANDROID_PCM_REPRESENTATION_FLOAT
+                                    : SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT;
+#endif
+            SLDataSink audioSink;
+            audioSink = { &loc_bq, &pcm };
+
+            SLboolean required[2];
+            SLInterfaceID iidArray[2];
+            /* Request the AndroidSimpleBufferQueue and AndroidConfiguration interfaces */
+            required[0] = SL_BOOLEAN_TRUE;
+            iidArray[0] = SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
+            required[1] = SL_BOOLEAN_TRUE;
+            iidArray[1] = SL_IID_ANDROIDCONFIGURATION;
+
+            ALOGV("creating recorder");
+            /* Create audio recorder */
+            res = (*mEngine)->CreateAudioRecorder(mEngine, &mRecordObj,
+                    &audioSource, &audioSink, 2, iidArray, required);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            ALOGV("realizing recorder");
+            /* Realizing the recorder in synchronous mode. */
+            res = (*mRecordObj)->Realize(mRecordObj, SL_BOOLEAN_FALSE /* async */);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            ALOGV("geting record interface");
+            /* Get the RECORD interface - it is an implicit interface */
+            res = (*mRecordObj)->GetInterface(mRecordObj, SL_IID_RECORD, (void *)&mRecord);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            ALOGV("geting buffer queue interface");
+            /* Get the buffer queue interface which was explicitly requested */
+            res = (*mRecordObj)->GetInterface(mRecordObj, SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
+                    (void *)&mBufferQueue);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            ALOGV("registering buffer queue interface");
+            /* Setup to receive buffer queue event callbacks */
+            res = (*mBufferQueue)->RegisterCallback(mBufferQueue, BufferQueueCallback, this);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            mBufferSize = (BUFFER_SIZE_MSEC * sampleRate / 1000)
+                    * numChannels * (useFloat ? sizeof(float) : sizeof(int16_t));
+            mNumBuffers = numBuffers;
+            // success
+            break;
+        }
+        if (res != SL_RESULT_SUCCESS) {
+            close(); // should be safe to close even with lock held
+            ALOGW("open error %s", android::getSLErrStr(res));
+            return INVALID_OPERATION;
+        }
+        return OK;
+    }
+
+    void close() {
+        SLObjectItf engineObj;
+        SLObjectItf recordObj;
+        {
+            auto_lock l(mLock);
+            (void)stop();
+            // once stopped, we can unregister the callback
+            if (mBufferQueue != NULL) {
+                (void)(*mBufferQueue)->RegisterCallback(
+                        mBufferQueue, NULL /* callback */, NULL /* *pContext */);
+            }
+            (void)flush();
+            engineObj = mEngineObj;
+            recordObj = mRecordObj;
+            // clear out interfaces and objects
+            mRecord = NULL;
+            mBufferQueue = NULL;
+            mEngine = NULL;
+            mRecordObj = NULL;
+            mEngineObj = NULL;
+            mRecordState = SL_RECORDSTATE_STOPPED;
+            mBufferSize = 0;
+            mNumBuffers = 0;
+        }
+        // destroy without lock
+        if (recordObj != NULL) {
+            (*recordObj)->Destroy(recordObj);
+        }
+        if (engineObj) {
+            CloseSLEngine(engineObj);
+        }
+    }
+
+    status_t setRecordState(SLuint32 recordState) {
+        auto_lock l(mLock);
+        if (mRecord == NULL) {
+            return INVALID_OPERATION;
+        }
+        if (recordState == SL_RECORDSTATE_RECORDING) {
+            queueBuffers();
+        }
+        SLresult res = (*mRecord)->SetRecordState(mRecord, recordState);
+        if (res != SL_RESULT_SUCCESS) {
+            ALOGW("setRecordState %d error %s", recordState, android::getSLErrStr(res));
+            return INVALID_OPERATION;
+        }
+        mRecordState = recordState;
+        return OK;
+    }
+
+    SLuint32 getRecordState() {
+        auto_lock l(mLock);
+        if (mRecord == NULL) {
+            return SL_RECORDSTATE_STOPPED;
+        }
+        SLuint32 recordState;
+        SLresult res = (*mRecord)->GetRecordState(mRecord, &recordState);
+        if (res != SL_RESULT_SUCCESS) {
+            ALOGW("getRecordState error %s", android::getSLErrStr(res));
+            return SL_RECORDSTATE_STOPPED;
+        }
+        return recordState;
+    }
+
+    status_t getPositionInMsec(int64_t *position) {
+        auto_lock l(mLock);
+        if (mRecord == NULL) {
+            return INVALID_OPERATION;
+        }
+        if (position == NULL) {
+            return BAD_VALUE;
+        }
+        SLuint32 pos;
+        SLresult res = (*mRecord)->GetPosition(mRecord, &pos);
+        if (res != SL_RESULT_SUCCESS) {
+            ALOGW("getPosition error %s", android::getSLErrStr(res));
+            return INVALID_OPERATION;
+        }
+        // only lower 32 bits valid
+        *position = pos;
+        return OK;
+    }
+
+    status_t start() {
+        return setRecordState(SL_RECORDSTATE_RECORDING);
+    }
+
+    status_t pause() {
+        return setRecordState(SL_RECORDSTATE_PAUSED);
+    }
+
+    status_t stop() {
+        return setRecordState(SL_RECORDSTATE_STOPPED);
+    }
+
+    status_t flush() {
+        auto_lock l(mLock);
+        status_t result = OK;
+        if (mBufferQueue != NULL) {
+            SLresult res = (*mBufferQueue)->Clear(mBufferQueue);
+            if (res != SL_RESULT_SUCCESS) {
+                return INVALID_OPERATION;
+            }
+        }
+        mReadyQueue.clear();
+        // possible race if the engine is in the callback
+        // safety is only achieved if the recorder is paused or stopped.
+        mDeliveredQueue.clear();
+        mReadBlob = NULL;
+        mReadReady.terminate();
+        return result;
+    }
+
+    ssize_t read(void *buffer, size_t size, bool blocking = false) {
+        std::lock_guard<std::mutex> rl(mReadLock);
+        // not needed if we assume that a single thread is doing the reading
+        // or we always operate in non-blocking mode.
+
+        ALOGV("reading:%p  %zu", buffer, size);
+        size_t copied;
+        std::shared_ptr<Blob> blob;
+        {
+            auto_lock l(mLock);
+            if (mEngine == NULL) {
+                return INVALID_OPERATION;
+            }
+            size_t osize = size;
+            while (!mReadyQueue.empty() && size > 0) {
+                auto b = mReadyQueue.front();
+                size_t tocopy = min(size, b->mSize - b->mOffset);
+                // ALOGD("buffer:%p  size:%zu  b->mSize:%zu  b->mOffset:%zu tocopy:%zu ",
+                //        buffer, size, b->mSize, b->mOffset, tocopy);
+                memcpy(buffer, (char *)b->mData + b->mOffset, tocopy);
+                buffer = (char *)buffer + tocopy;
+                size -= tocopy;
+                b->mOffset += tocopy;
+                if (b->mOffset == b->mSize) {
+                    mReadyQueue.pop_front();
+                }
+            }
+            copied = osize - size;
+            if (!blocking || size == 0 || mReadBlob.get() != NULL) {
+                return copied;
+            }
+            blob = std::make_shared<Blob>(buffer, size);
+            mReadBlob = blob;
+            mReadReady.closeGate(); // the callback will open gate when read is completed.
+        }
+        if (mReadReady.wait()) {
+            // success then the blob is ours with valid data otherwise a flush has occurred
+            // and we return a short count.
+            copied += blob->mOffset;
+        }
+        return copied;
+    }
+
+    void logBufferState() {
+        auto_lock l(mLock);
+        SLBufferQueueState state;
+        SLresult res = (*mBufferQueue)->GetState(mBufferQueue, &state);
+        CheckErr(res);
+        ALOGD("logBufferState state.count:%d  state.playIndex:%d", state.count, state.playIndex);
+    }
+
+    size_t getBuffersPending() {
+        auto_lock l(mLock);
+        return mReadyQueue.size();
+    }
+
+private:
+    status_t queueBuffers() {
+        if (mBufferQueue == NULL) {
+            return INVALID_OPERATION;
+        }
+        if (mReadyQueue.size() + mDeliveredQueue.size() < mNumBuffers) {
+            // add new empty buffer
+            auto b = std::make_shared<Blob>(mBufferSize);
+            mDeliveredQueue.emplace_back(b);
+            (*mBufferQueue)->Enqueue(mBufferQueue, b->mData, b->mSize);
+        }
+        return OK;
+    }
+
+    void bufferQueueCallback(SLBufferQueueItf queueItf) {
+        auto_lock l(mLock);
+        if (queueItf != mBufferQueue) {
+            ALOGW("invalid buffer queue interface, ignoring");
+            return;
+        }
+        // logBufferState();
+
+        // remove from delivered queue
+        if (mDeliveredQueue.size()) {
+            auto b = mDeliveredQueue.front();
+            mDeliveredQueue.pop_front();
+            if (mReadBlob.get() != NULL) {
+                size_t tocopy = min(mReadBlob->mSize - mReadBlob->mOffset, b->mSize - b->mOffset);
+                memcpy((char *)mReadBlob->mData + mReadBlob->mOffset,
+                        (char *)b->mData + b->mOffset, tocopy);
+                b->mOffset += tocopy;
+                mReadBlob->mOffset += tocopy;
+                if (mReadBlob->mOffset == mReadBlob->mSize) {
+                    mReadBlob = NULL;      // we're done, clear our reference.
+                    mReadReady.openGate(); // allow read to continue.
+                }
+                if (b->mOffset == b->mSize) {
+                    b = NULL;
+                }
+            }
+            if (b.get() != NULL) {
+                if (mReadyQueue.size() + mDeliveredQueue.size() < mNumBuffers) {
+                    mReadyQueue.emplace_back(b); // save onto ready queue for future reads
+                } else {
+                    ALOGW("dropping data");
+                }
+            }
+        } else {
+            ALOGW("no delivered data!");
+        }
+        queueBuffers();
+    }
+
+    static void BufferQueueCallback(SLBufferQueueItf queueItf, void *pContext) {
+        SLresult res;
+        // naked native record
+        AudioRecordNative *record = (AudioRecordNative *)pContext;
+        record->bufferQueueCallback(queueItf);
+    }
+
+    SLObjectItf           mEngineObj;
+    SLEngineItf           mEngine;
+    SLObjectItf           mRecordObj;
+    SLRecordItf           mRecord;
+    SLBufferQueueItf      mBufferQueue;
+    SLuint32              mRecordState;
+    size_t                mBufferSize;
+    size_t                mNumBuffers;
+    std::recursive_mutex  mLock;          // monitor lock - locks public API methods and callback.
+                                          // recursive since it may call itself through API.
+    std::mutex            mReadLock;      // read lock - for blocking mode, prevents multiple
+                                          // reader threads from overlapping reads.  this is
+                                          // generally unnecessary as reads occur from
+                                          // one thread only.  acquire this before mLock.
+    std::shared_ptr<Blob> mReadBlob;
+    Gate                  mReadReady;
+    std::deque<std::shared_ptr<Blob>> mReadyQueue;     // ready for read.
+    std::deque<std::shared_ptr<Blob>> mDeliveredQueue; // delivered to BufferQueue
+};
+
+/* Java static methods.
+ *
+ * These are not directly exposed to the user, so we can assume a valid "jrecord" handle
+ * to be passed in.
+ */
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeTest(
+    JNIEnv * /* env */, jclass /* clazz */,
+    jint numChannels, jint sampleRate, jboolean useFloat,
+    jint msecPerBuffer, jint numBuffers)
+{
+    AudioRecordNative record;
+    const size_t frameSize = numChannels * (useFloat ? sizeof(float) : sizeof(int16_t));
+    const size_t framesPerBuffer = msecPerBuffer * sampleRate / 1000;
+
+    status_t res;
+    void *buffer = calloc(framesPerBuffer * numBuffers, frameSize);
+    for (;;) {
+        res = record.open(numChannels, sampleRate, useFloat, numBuffers);
+        if (res != OK) break;
+
+        record.logBufferState();
+        res = record.start();
+        if (res != OK) break;
+
+        size_t size = framesPerBuffer * numBuffers * frameSize;
+        for (size_t offset = 0; size - offset > 0; ) {
+            ssize_t amount = record.read((char *)buffer + offset, size -offset);
+            // ALOGD("read amount: %zd", amount);
+            if (amount < 0) break;
+            offset += amount;
+            usleep(5 * 1000 /* usec */);
+        }
+
+        res = record.stop();
+        break;
+    }
+    record.close();
+    free(buffer);
+    return res;
+}
+
+extern "C" jlong Java_android_media_cts_AudioRecordNative_nativeCreateRecord(
+    JNIEnv * /* env */, jclass /* clazz */)
+{
+    return (jlong)(new shared_pointer<AudioRecordNative>(new AudioRecordNative()));
+}
+
+extern "C" void Java_android_media_cts_AudioRecordNative_nativeDestroyRecord(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord)
+{
+    delete (shared_pointer<AudioRecordNative> *)jrecord;
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeOpen(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord,
+    jint numChannels, jint sampleRate, jboolean useFloat, jint numBuffers)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)record->open(numChannels, sampleRate, useFloat == JNI_TRUE,
+            numBuffers);
+}
+
+extern "C" void Java_android_media_cts_AudioRecordNative_nativeClose(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() != NULL) {
+        record->close();
+    }
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeStart(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)record->start();
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeStop(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)record->stop();
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativePause(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)record->pause();
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeFlush(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)record->flush();
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeGetPositionInMsec(
+    JNIEnv *env, jclass /* clazz */, jlong jrecord, jlongArray jPosition)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    int64_t pos;
+    status_t res = record->getPositionInMsec(&pos);
+    if (res != OK) {
+        return res;
+    }
+    jlong *nPostition = (jlong *) env->GetPrimitiveArrayCritical(jPosition, NULL /* isCopy */);
+    if (nPostition == NULL) {
+        ALOGE("Unable to get array for nativeGetPositionInMsec()");
+        return BAD_VALUE;
+    }
+    nPostition[0] = (jlong)pos;
+    env->ReleasePrimitiveArrayCritical(jPosition, nPostition, 0 /* mode */);
+    return OK;
+}
+
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeGetBuffersPending(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jrecord)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)0;
+    }
+    return (jint)record->getBuffersPending();
+}
+
+template <typename T>
+static inline jint readFromRecord(jlong jrecord, T *data,
+    jint offsetInSamples, jint sizeInSamples, jint readFlags)
+{
+    auto record = *(shared_pointer<AudioRecordNative> *)jrecord;
+    if (record.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+
+    const bool isBlocking = readFlags & READ_FLAG_BLOCKING;
+    const size_t sizeInBytes = sizeInSamples * sizeof(T);
+    ssize_t ret = record->read(data + offsetInSamples, sizeInBytes, isBlocking == JNI_TRUE);
+    return (jint)(ret > 0 ? ret / sizeof(T) : ret);
+}
+
+template <typename T>
+static inline jint readArray(JNIEnv *env, jclass /* clazz */, jlong jrecord,
+        T javaAudioData, jint offsetInSamples, jint sizeInSamples, jint readFlags)
+{
+    if (javaAudioData == NULL) {
+        return (jint)BAD_VALUE;
+    }
+
+    auto cAudioData = envGetArrayElements(env, javaAudioData, NULL /* isCopy */);
+    if (cAudioData == NULL) {
+        ALOGE("Error retrieving destination of audio data to record");
+        return (jint)BAD_VALUE;
+    }
+
+    jint ret = readFromRecord(jrecord, cAudioData, offsetInSamples, sizeInSamples, readFlags);
+    envReleaseArrayElements(env, javaAudioData, cAudioData, 0 /* mode */);
+    return ret;
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeReadByteArray(
+    JNIEnv *env, jclass clazz, jlong jrecord,
+    jbyteArray byteArray, jint offsetInSamples, jint sizeInSamples, jint readFlags)
+{
+    return readArray(env, clazz, jrecord, byteArray, offsetInSamples, sizeInSamples, readFlags);
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeReadShortArray(
+    JNIEnv *env, jclass clazz, jlong jrecord,
+    jshortArray shortArray, jint offsetInSamples, jint sizeInSamples, jint readFlags)
+{
+    return readArray(env, clazz, jrecord, shortArray, offsetInSamples, sizeInSamples, readFlags);
+}
+
+extern "C" jint Java_android_media_cts_AudioRecordNative_nativeReadFloatArray(
+    JNIEnv *env, jclass clazz, jlong jrecord,
+    jfloatArray floatArray, jint offsetInSamples, jint sizeInSamples, jint readFlags)
+{
+    return readArray(env, clazz, jrecord, floatArray, offsetInSamples, sizeInSamples, readFlags);
+}
diff --git a/tests/tests/media/libaudiojni/audio-track-native.cpp b/tests/tests/media/libaudiojni/audio-track-native.cpp
new file mode 100644
index 0000000..d51a751
--- /dev/null
+++ b/tests/tests/media/libaudiojni/audio-track-native.cpp
@@ -0,0 +1,579 @@
+/*
+ * Copyright (C) 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "audio-track-native"
+
+#include "Blob.h"
+#include "Gate.h"
+#include "sl-utils.h"
+
+#include <deque>
+#include <utils/Errors.h>
+
+// Select whether to use STL shared pointer or to use Android strong pointer.
+// We really don't promote any sharing of this object for its lifetime, but nevertheless could
+// change the shared pointer value on the fly if desired.
+#define USE_SHARED_POINTER
+
+#ifdef USE_SHARED_POINTER
+#include <memory>
+template <typename T> using shared_pointer = std::shared_ptr<T>;
+#else
+#include <utils/RefBase.h>
+template <typename T> using shared_pointer = android::sp<T>;
+#endif
+
+using namespace android;
+
+// Must be kept in sync with Java android.media.cts.AudioTrackNative.WriteFlags
+enum {
+    WRITE_FLAG_BLOCKING = (1 << 0),
+};
+
+// TODO: Add a single buffer blocking write mode which does not require additional memory.
+// TODO: Add internal buffer memory (e.g. use circular buffer, right now mallocs on heap).
+
+class AudioTrackNative
+#ifndef USE_SHARED_POINTER
+        : public RefBase // android strong pointers require RefBase
+#endif
+{
+public:
+    AudioTrackNative() :
+        mEngineObj(NULL),
+        mEngine(NULL),
+        mOutputMixObj(NULL),
+        mPlayerObj(NULL),
+        mPlay(NULL),
+        mBufferQueue(NULL),
+        mPlayState(SL_PLAYSTATE_STOPPED),
+        mNumBuffers(0)
+    { }
+
+    ~AudioTrackNative() {
+        close();
+    }
+
+    typedef std::lock_guard<std::recursive_mutex> auto_lock;
+
+    status_t open(uint32_t numChannels, uint32_t sampleRate, bool useFloat,
+            uint32_t numBuffers) {
+        close();
+        auto_lock l(mLock);
+        mEngineObj = OpenSLEngine();
+        if (mEngineObj == NULL) {
+            ALOGW("cannot create OpenSL ES engine");
+            return INVALID_OPERATION;
+        }
+
+        SLresult res;
+        for (;;) {
+            /* Get the SL Engine Interface which is implicit */
+            res = (*mEngineObj)->GetInterface(mEngineObj, SL_IID_ENGINE, (void *)&mEngine);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            // Create Output Mix object to be used by player
+            res = (*mEngine)->CreateOutputMix(
+                    mEngine, &mOutputMixObj, 0 /* numInterfaces */,
+                    NULL /* pInterfaceIds */, NULL /* pInterfaceRequired */);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            // Realizing the Output Mix object in synchronous mode.
+            res = (*mOutputMixObj)->Realize(mOutputMixObj, SL_BOOLEAN_FALSE /* async */);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            /* Setup the data source structure for the buffer queue */
+            SLDataLocator_BufferQueue bufferQueue;
+            bufferQueue.locatorType = SL_DATALOCATOR_BUFFERQUEUE;
+            bufferQueue.numBuffers = numBuffers;
+            mNumBuffers = numBuffers;
+
+            /* Setup the format of the content in the buffer queue */
+
+            SLAndroidDataFormat_PCM_EX pcm;
+            pcm.formatType = useFloat ? SL_ANDROID_DATAFORMAT_PCM_EX : SL_DATAFORMAT_PCM;
+            pcm.numChannels = numChannels;
+            pcm.sampleRate = sampleRate * 1000;
+            pcm.bitsPerSample = useFloat ?
+                    SL_PCMSAMPLEFORMAT_FIXED_32 : SL_PCMSAMPLEFORMAT_FIXED_16;
+            pcm.containerSize = pcm.bitsPerSample;
+            pcm.channelMask = channelCountToMask(numChannels);
+            pcm.endianness = SL_BYTEORDER_LITTLEENDIAN;
+            // additional
+            pcm.representation = useFloat ? SL_ANDROID_PCM_REPRESENTATION_FLOAT
+                                    : SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT;
+            SLDataSource audioSource;
+            audioSource.pFormat = (void *)&pcm;
+            audioSource.pLocator = (void *)&bufferQueue;
+
+            /* Setup the data sink structure */
+            SLDataLocator_OutputMix locator_outputmix;
+            locator_outputmix.locatorType = SL_DATALOCATOR_OUTPUTMIX;
+            locator_outputmix.outputMix = mOutputMixObj;
+
+            SLDataSink audioSink;
+            audioSink.pLocator = (void *)&locator_outputmix;
+            audioSink.pFormat = NULL;
+
+            SLboolean required[1];
+            SLInterfaceID iidArray[1];
+            required[0] = SL_BOOLEAN_TRUE;
+            iidArray[0] = SL_IID_BUFFERQUEUE;
+
+            res = (*mEngine)->CreateAudioPlayer(mEngine, &mPlayerObj,
+                    &audioSource, &audioSink, 1 /* numInterfaces */, iidArray, required);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            res = (*mPlayerObj)->Realize(mPlayerObj, SL_BOOLEAN_FALSE /* async */);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            res = (*mPlayerObj)->GetInterface(mPlayerObj, SL_IID_PLAY, (void*)&mPlay);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            res = (*mPlayerObj)->GetInterface(
+                    mPlayerObj, SL_IID_BUFFERQUEUE, (void*)&mBufferQueue);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            /* Setup to receive buffer queue event callbacks */
+            res = (*mBufferQueue)->RegisterCallback(mBufferQueue, BufferQueueCallback, this);
+            if (res != SL_RESULT_SUCCESS) break;
+
+            // success
+            break;
+        }
+        if (res != SL_RESULT_SUCCESS) {
+            close(); // should be safe to close even with lock held
+            ALOGW("open error %s", android::getSLErrStr(res));
+            return INVALID_OPERATION;
+        }
+        return OK;
+    }
+
+    void close() {
+        SLObjectItf engineObj;
+        SLObjectItf outputMixObj;
+        SLObjectItf playerObj;
+        {
+            auto_lock l(mLock);
+            if (mPlay != NULL && mPlayState != SL_PLAYSTATE_STOPPED) {
+                (void)stop();
+            }
+            // once stopped, we can unregister the callback
+            if (mBufferQueue != NULL) {
+                (void)(*mBufferQueue)->RegisterCallback(
+                        mBufferQueue, NULL /* callback */, NULL /* *pContext */);
+            }
+            (void)flush();
+            engineObj = mEngineObj;
+            outputMixObj = mOutputMixObj;
+            playerObj = mPlayerObj;
+            // clear out interfaces and objects
+            mPlay = NULL;
+            mBufferQueue = NULL;
+            mEngine = NULL;
+            mPlayerObj = NULL;
+            mOutputMixObj = NULL;
+            mEngineObj = NULL;
+            mPlayState = SL_PLAYSTATE_STOPPED;
+        }
+        // destroy without lock
+        if (playerObj != NULL) {
+            (*playerObj)->Destroy(playerObj);
+        }
+        if (outputMixObj != NULL) {
+            (*outputMixObj)->Destroy(outputMixObj);
+        }
+        if (engineObj != NULL) {
+            CloseSLEngine(engineObj);
+        }
+    }
+
+    status_t setPlayState(SLuint32 playState) {
+        auto_lock l(mLock);
+        if (mPlay == NULL) {
+            return INVALID_OPERATION;
+        }
+        SLresult res = (*mPlay)->SetPlayState(mPlay, playState);
+        if (res != SL_RESULT_SUCCESS) {
+            ALOGW("setPlayState %d error %s", playState, android::getSLErrStr(res));
+            return INVALID_OPERATION;
+        }
+        mPlayState = playState;
+        return OK;
+    }
+
+    SLuint32 getPlayState() {
+        auto_lock l(mLock);
+        if (mPlay == NULL) {
+            return SL_PLAYSTATE_STOPPED;
+        }
+        SLuint32 playState;
+        SLresult res = (*mPlay)->GetPlayState(mPlay, &playState);
+        if (res != SL_RESULT_SUCCESS) {
+            ALOGW("getPlayState error %s", android::getSLErrStr(res));
+            return SL_PLAYSTATE_STOPPED;
+        }
+        return playState;
+    }
+
+    status_t getPositionInMsec(int64_t *position) {
+        auto_lock l(mLock);
+        if (mPlay == NULL) {
+            return INVALID_OPERATION;
+        }
+        if (position == NULL) {
+            return BAD_VALUE;
+        }
+        SLuint32 pos;
+        SLresult res = (*mPlay)->GetPosition(mPlay, &pos);
+        if (res != SL_RESULT_SUCCESS) {
+            ALOGW("getPosition error %s", android::getSLErrStr(res));
+            return INVALID_OPERATION;
+        }
+        // only lower 32 bits valid
+        *position = pos;
+        return OK;
+    }
+
+    status_t start() {
+        return setPlayState(SL_PLAYSTATE_PLAYING);
+    }
+
+    status_t pause() {
+        return setPlayState(SL_PLAYSTATE_PAUSED);
+    }
+
+    status_t stop() {
+        return setPlayState(SL_PLAYSTATE_STOPPED);
+    }
+
+    status_t flush() {
+        auto_lock l(mLock);
+        status_t result = OK;
+        if (mBufferQueue != NULL) {
+            SLresult res = (*mBufferQueue)->Clear(mBufferQueue);
+            if (res != SL_RESULT_SUCCESS) {
+                return INVALID_OPERATION;
+            }
+        }
+
+        // possible race if the engine is in the callback
+        // safety is only achieved if the player is paused or stopped.
+        mDeliveredQueue.clear();
+        return result;
+    }
+
+    status_t write(const void *buffer, size_t size, bool isBlocking = false) {
+        std::lock_guard<std::mutex> rl(mWriteLock);
+        // not needed if we assume that a single thread is doing the reading
+        // or we always operate in non-blocking mode.
+
+        {
+            auto_lock l(mLock);
+            if (mBufferQueue == NULL) {
+                return INVALID_OPERATION;
+            }
+            if (mDeliveredQueue.size() < mNumBuffers) {
+                auto b = std::make_shared<BlobReadOnly>(buffer, size, false /* byReference */);
+                mDeliveredQueue.emplace_back(b);
+                (*mBufferQueue)->Enqueue(mBufferQueue, b->mData, b->mSize);
+                return size;
+            }
+            if (!isBlocking) {
+                return 0;
+            }
+            mWriteReady.closeGate(); // we're full.
+        }
+        if (mWriteReady.wait()) {
+            auto_lock l(mLock);
+            if (mDeliveredQueue.size() < mNumBuffers) {
+                auto b = std::make_shared<BlobReadOnly>(buffer, size, false /* byReference */);
+                mDeliveredQueue.emplace_back(b);
+                (*mBufferQueue)->Enqueue(mBufferQueue, b->mData, b->mSize);
+                return size;
+            }
+        }
+        ALOGW("unable to deliver write");
+        return 0;
+    }
+
+    void logBufferState() {
+        auto_lock l(mLock);
+        SLBufferQueueState state;
+        SLresult res = (*mBufferQueue)->GetState(mBufferQueue, &state);
+        CheckErr(res);
+        ALOGD("logBufferState state.count:%d  state.playIndex:%d", state.count, state.playIndex);
+    }
+
+    size_t getBuffersPending() {
+        auto_lock l(mLock);
+        return mDeliveredQueue.size();
+    }
+
+private:
+    void bufferQueueCallback(SLBufferQueueItf queueItf) {
+        auto_lock l(mLock);
+        if (queueItf != mBufferQueue) {
+            ALOGW("invalid buffer queue interface, ignoring");
+            return;
+        }
+        // logBufferState();
+
+        // remove from delivered queue
+        if (mDeliveredQueue.size()) {
+            mDeliveredQueue.pop_front();
+        } else {
+            ALOGW("no delivered data!");
+        }
+        if (!mWriteReady.isOpen()) {
+            mWriteReady.openGate();
+        }
+    }
+
+    static void BufferQueueCallback(SLBufferQueueItf queueItf, void *pContext) {
+        SLresult res;
+        // naked native track
+        AudioTrackNative *track = (AudioTrackNative *)pContext;
+        track->bufferQueueCallback(queueItf);
+    }
+
+    SLObjectItf          mEngineObj;
+    SLEngineItf          mEngine;
+    SLObjectItf          mOutputMixObj;
+    SLObjectItf          mPlayerObj;
+    SLPlayItf            mPlay;
+    SLBufferQueueItf     mBufferQueue;
+    SLuint32             mPlayState;
+    SLuint32             mNumBuffers;
+    std::recursive_mutex mLock;           // monitor lock - locks public API methods and callback.
+                                          // recursive since it may call itself through API.
+    std::mutex           mWriteLock;      // write lock - for blocking mode, prevents multiple
+                                          // writer threads from overlapping writes.  this is
+                                          // generally unnecessary as writes occur from
+                                          // one thread only.  acquire this before mLock.
+    Gate                 mWriteReady;
+    std::deque<std::shared_ptr<BlobReadOnly>> mDeliveredQueue; // delivered to mBufferQueue
+};
+
+/* Java static methods.
+ *
+ * These are not directly exposed to the user, so we can assume a valid "jtrack" handle
+ * to be passed in.
+ */
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeTest(
+    JNIEnv * /* env */, jclass /* clazz */,
+    jint numChannels, jint sampleRate, jboolean useFloat,
+    jint msecPerBuffer, jint numBuffers)
+{
+    AudioTrackNative track;
+    const size_t frameSize = numChannels * (useFloat ? sizeof(float) : sizeof(int16_t));
+    const size_t framesPerBuffer = msecPerBuffer * sampleRate / 1000;
+
+    status_t res;
+    void *buffer = calloc(framesPerBuffer * numBuffers, frameSize);
+    for (;;) {
+        res = track.open(numChannels, sampleRate, useFloat, numBuffers);
+        if (res != OK) break;
+
+        for (int i = 0; i < numBuffers; ++i) {
+            track.write((char *)buffer + i * (framesPerBuffer * frameSize),
+                    framesPerBuffer * frameSize);
+        }
+
+        track.logBufferState();
+        res = track.start();
+        if (res != OK) break;
+
+        size_t buffers;
+        while ((buffers = track.getBuffersPending()) > 0) {
+            // ALOGD("outstanding buffers: %zu", buffers);
+            usleep(5 * 1000 /* usec */);
+        }
+        res = track.stop();
+        break;
+    }
+    track.close();
+    free(buffer);
+    return res;
+}
+
+extern "C" jlong Java_android_media_cts_AudioTrackNative_nativeCreateTrack(
+    JNIEnv * /* env */, jclass /* clazz */)
+{
+    return (jlong)(new shared_pointer<AudioTrackNative>(new AudioTrackNative()));
+}
+
+extern "C" void Java_android_media_cts_AudioTrackNative_nativeDestroyTrack(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack)
+{
+    delete (shared_pointer<AudioTrackNative> *)jtrack;
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeOpen(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack,
+    jint numChannels, jint sampleRate, jboolean useFloat, jint numBuffers)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)track->open(numChannels, sampleRate, useFloat == JNI_TRUE,
+            numBuffers);
+}
+
+extern "C" void Java_android_media_cts_AudioTrackNative_nativeClose(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() != NULL) {
+        track->close();
+    }
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeStart(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)track->start();
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeStop(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)track->stop();
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativePause(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)track->pause();
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeFlush(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    return (jint)track->flush();
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeGetPositionInMsec(
+    JNIEnv *env, jclass /* clazz */, jlong jtrack, jlongArray jPosition)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+    int64_t pos;
+    status_t res = track->getPositionInMsec(&pos);
+    if (res != OK) {
+        return res;
+    }
+    jlong *nPostition = (jlong *) env->GetPrimitiveArrayCritical(jPosition, NULL /* isCopy */);
+    if (nPostition == NULL) {
+        ALOGE("Unable to get array for nativeGetPositionInMsec()");
+        return BAD_VALUE;
+    }
+    nPostition[0] = (jlong)pos;
+    env->ReleasePrimitiveArrayCritical(jPosition, nPostition, 0 /* mode */);
+    return OK;
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeGetBuffersPending(
+    JNIEnv * /* env */, jclass /* clazz */, jlong jtrack)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)0;
+    }
+    return (jint)track->getBuffersPending();
+}
+
+template <typename T>
+static inline jint writeToTrack(jlong jtrack, const T *data,
+    jint offsetInSamples, jint sizeInSamples, jint writeFlags)
+{
+    auto track = *(shared_pointer<AudioTrackNative> *)jtrack;
+    if (track.get() == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+
+    const bool isBlocking = writeFlags & WRITE_FLAG_BLOCKING;
+    const size_t sizeInBytes = sizeInSamples * sizeof(T);
+    ssize_t ret = track->write(data + offsetInSamples, sizeInBytes, isBlocking);
+    return (jint)(ret > 0 ? ret / sizeof(T) : ret);
+}
+
+template <typename T>
+static inline jint writeArray(JNIEnv *env, jclass /* clazz */, jlong jtrack,
+        T javaAudioData, jint offsetInSamples, jint sizeInSamples, jint writeFlags)
+{
+    if (javaAudioData == NULL) {
+        return (jint)INVALID_OPERATION;
+    }
+
+    auto cAudioData = envGetArrayElements(env, javaAudioData, NULL /* isCopy */);
+    if (cAudioData == NULL) {
+        ALOGE("Error retrieving source of audio data to play");
+        return (jint)BAD_VALUE;
+    }
+
+    jint ret = writeToTrack(jtrack, cAudioData, offsetInSamples, sizeInSamples, writeFlags);
+    envReleaseArrayElements(env, javaAudioData, cAudioData, 0 /* mode */);
+    return ret;
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeWriteByteArray(
+    JNIEnv *env, jclass clazz, jlong jtrack,
+    jbyteArray byteArray, jint offsetInSamples, jint sizeInSamples, jint writeFlags)
+{
+    ALOGV("nativeWriteByteArray(%p, %d, %d, %d)",
+            byteArray, offsetInSamples, sizeInSamples, writeFlags);
+    return writeArray(env, clazz, jtrack, byteArray, offsetInSamples, sizeInSamples, writeFlags);
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeWriteShortArray(
+    JNIEnv *env, jclass clazz, jlong jtrack,
+    jshortArray shortArray, jint offsetInSamples, jint sizeInSamples, jint writeFlags)
+{
+    ALOGV("nativeWriteShortArray(%p, %d, %d, %d)",
+            shortArray, offsetInSamples, sizeInSamples, writeFlags);
+    return writeArray(env, clazz, jtrack, shortArray, offsetInSamples, sizeInSamples, writeFlags);
+}
+
+extern "C" jint Java_android_media_cts_AudioTrackNative_nativeWriteFloatArray(
+    JNIEnv *env, jclass clazz, jlong jtrack,
+    jfloatArray floatArray, jint offsetInSamples, jint sizeInSamples, jint writeFlags)
+{
+    ALOGV("nativeWriteFloatArray(%p, %d, %d, %d)",
+            floatArray, offsetInSamples, sizeInSamples, writeFlags);
+    return writeArray(env, clazz, jtrack, floatArray, offsetInSamples, sizeInSamples, writeFlags);
+}
diff --git a/tests/tests/media/libaudiojni/sl-utils.cpp b/tests/tests/media/libaudiojni/sl-utils.cpp
new file mode 100644
index 0000000..1aa89ba
--- /dev/null
+++ b/tests/tests/media/libaudiojni/sl-utils.cpp
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "SL-Utils"
+
+#include "sl-utils.h"
+#include <utils/Mutex.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+
+// These will wind up in <SLES/OpenSLES_Android.h>
+#define SL_ANDROID_SPEAKER_QUAD (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT \
+ | SL_SPEAKER_BACK_LEFT | SL_SPEAKER_BACK_RIGHT)
+
+#define SL_ANDROID_SPEAKER_5DOT1 (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT \
+ | SL_SPEAKER_FRONT_CENTER  | SL_SPEAKER_LOW_FREQUENCY| SL_SPEAKER_BACK_LEFT \
+ | SL_SPEAKER_BACK_RIGHT)
+
+#define SL_ANDROID_SPEAKER_7DOT1 (SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_SIDE_LEFT \
+ |SL_SPEAKER_SIDE_RIGHT)
+
+namespace android {
+
+static Mutex gLock;
+static SLObjectItf gEngineObject;
+static unsigned gRefCount;
+
+static const char *gErrorStrings[] = {
+    "SL_RESULT_SUCCESS",                // 0
+    "SL_RESULT_PRECONDITIONS_VIOLATE",  // 1
+    "SL_RESULT_PARAMETER_INVALID",      // 2
+    "SL_RESULT_MEMORY_FAILURE",         // 3
+    "SL_RESULT_RESOURCE_ERROR",         // 4
+    "SL_RESULT_RESOURCE_LOST",          // 5
+    "SL_RESULT_IO_ERROR",               // 6
+    "SL_RESULT_BUFFER_INSUFFICIENT",    // 7
+    "SL_RESULT_CONTENT_CORRUPTED",      // 8
+    "SL_RESULT_CONTENT_UNSUPPORTED",    // 9
+    "SL_RESULT_CONTENT_NOT_FOUND",      // 10
+    "SL_RESULT_PERMISSION_DENIED",      // 11
+    "SL_RESULT_FEATURE_UNSUPPORTED",    // 12
+    "SL_RESULT_INTERNAL_ERROR",         // 13
+    "SL_RESULT_UNKNOWN_ERROR",          // 14
+    "SL_RESULT_OPERATION_ABORTED",      // 15
+    "SL_RESULT_CONTROL_LOST",           // 16
+};
+
+const char *getSLErrStr(int code) {
+    if ((size_t)code >= ARRAY_SIZE(gErrorStrings)) {
+        return "SL_RESULT_UNKNOWN";
+    }
+    return gErrorStrings[code];
+}
+
+SLuint32 channelCountToMask(unsigned channelCount) {
+    switch (channelCount) {
+    case 1:
+        return SL_SPEAKER_FRONT_LEFT; // we prefer left over center
+    case 2:
+        return SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;
+    case 3:
+        return SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT | SL_SPEAKER_FRONT_CENTER;
+    case 4:
+        return SL_ANDROID_SPEAKER_QUAD;
+    case 5:
+        return SL_ANDROID_SPEAKER_QUAD | SL_SPEAKER_FRONT_CENTER;
+    case 6:
+        return SL_ANDROID_SPEAKER_5DOT1;
+    case 7:
+        return SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_BACK_CENTER;
+    case 8:
+        return SL_ANDROID_SPEAKER_7DOT1;
+    default:
+        return 0;
+    }
+}
+
+static SLObjectItf createEngine() {
+    static SLEngineOption EngineOption[] = {
+            (SLuint32) SL_ENGINEOPTION_THREADSAFE,
+            (SLuint32) SL_BOOLEAN_TRUE
+    };
+    // create engine in thread-safe mode
+    SLObjectItf engine;
+    SLresult result = slCreateEngine(&engine,
+            1 /* numOptions */, EngineOption /* pEngineOptions */,
+            0 /* numInterfaces */, NULL /* pInterfaceIds */, NULL /* pInterfaceRequired */);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("slCreateEngine() failed: %s", getSLErrStr(result));
+        return NULL;
+    }
+    // realize the engine
+    result = (*engine)->Realize(engine, SL_BOOLEAN_FALSE /* async */);
+    if (result != SL_RESULT_SUCCESS) {
+        ALOGE("Realize() failed: %s", getSLErrStr(result));
+        (*engine)->Destroy(engine);
+        return NULL;
+    }
+    return engine;
+}
+
+SLObjectItf OpenSLEngine(bool global) {
+
+    if (!global) {
+        return createEngine();
+    }
+    Mutex::Autolock l(gLock);
+    if (gRefCount == 0) {
+        gEngineObject = createEngine();
+    }
+    gRefCount++;
+    return gEngineObject;
+}
+
+void CloseSLEngine(SLObjectItf engine) {
+    Mutex::Autolock l(gLock);
+    if (engine == gEngineObject) {
+        if (gRefCount == 0) {
+            ALOGE("CloseSLEngine(%p): refcount already 0", engine);
+            return;
+        }
+        if (--gRefCount != 0) {
+            return;
+        }
+        gEngineObject = NULL;
+    }
+    (*engine)->Destroy(engine);
+}
+
+} // namespace android
+
diff --git a/tests/tests/media/libaudiojni/sl-utils.h b/tests/tests/media/libaudiojni/sl-utils.h
new file mode 100644
index 0000000..8582648
--- /dev/null
+++ b/tests/tests/media/libaudiojni/sl-utils.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 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.
+ */
+
+#ifndef ANDROID_SL_UTILS_H
+#define ANDROID_SL_UTILS_H
+
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
+
+#include <jni.h>
+#include <mutex>
+#include <utils/Log.h>
+
+#define CheckErr(res) LOG_ALWAYS_FATAL_IF( \
+        (res) != SL_RESULT_SUCCESS, "result error %s", android::getSLErrStr(res));
+
+namespace android {
+
+// FIXME: Move to common file.
+template <typename T>
+static inline
+const T &min(const T &a, const T &b) {
+    return a < b ? a : b;
+}
+
+/* Returns the error string for the OpenSL ES error code
+ */
+const char *getSLErrStr(int code);
+
+/* Returns the OpenSL ES equivalent standard channel mask
+ * for a given channel count, 0 if no such mask is available.
+ */
+SLuint32 channelCountToMask(unsigned channelCount);
+
+/* Returns an OpenSL ES Engine object interface.
+ * The engine created will be thread safe [3.2]
+ * The underlying implementation may not support more than one engine. [4.1.1]
+ *
+ * @param global if true, return and open the global engine instance or make
+ *   a local engine instance if false.
+ * @return NULL if unsuccessful or the Engine SLObjectItf.
+ */
+SLObjectItf OpenSLEngine(bool global = true);
+
+/* Closes an OpenSL ES Engine object returned by OpenSLEngine().
+ */
+void CloseSLEngine(SLObjectItf engine);
+
+// overloaded JNI array helper functions (same as in android_media_AudioRecord)
+inline
+jbyte *envGetArrayElements(JNIEnv *env, jbyteArray array, jboolean *isCopy) {
+    return env->GetByteArrayElements(array, isCopy);
+}
+
+inline
+void envReleaseArrayElements(JNIEnv *env, jbyteArray array, jbyte *elems, jint mode) {
+    env->ReleaseByteArrayElements(array, elems, mode);
+}
+
+inline
+jshort *envGetArrayElements(JNIEnv *env, jshortArray array, jboolean *isCopy) {
+    return env->GetShortArrayElements(array, isCopy);
+}
+
+inline
+void envReleaseArrayElements(JNIEnv *env, jshortArray array, jshort *elems, jint mode) {
+    env->ReleaseShortArrayElements(array, elems, mode);
+}
+
+inline
+jfloat *envGetArrayElements(JNIEnv *env, jfloatArray array, jboolean *isCopy) {
+    return env->GetFloatArrayElements(array, isCopy);
+}
+
+inline
+void envReleaseArrayElements(JNIEnv *env, jfloatArray array, jfloat *elems, jint mode) {
+    env->ReleaseFloatArrayElements(array, elems, mode);
+}
+
+} // namespace android
+
+#endif // ANDROID_SL_UTILS_H
diff --git a/tests/tests/media/src/android/media/cts/AudioHelper.java b/tests/tests/media/src/android/media/cts/AudioHelper.java
index efee024..6707ea6 100644
--- a/tests/tests/media/src/android/media/cts/AudioHelper.java
+++ b/tests/tests/media/src/android/media/cts/AudioHelper.java
@@ -211,13 +211,13 @@
      * This affects AudioRecord timing.
      */
     public static class AudioRecordAudit extends AudioRecord {
-        AudioRecordAudit(int audioSource, int sampleRate, int channelMask,
+        public AudioRecordAudit(int audioSource, int sampleRate, int channelMask,
                 int format, int bufferSize, boolean isChannelIndex) {
             this(audioSource, sampleRate, channelMask, format, bufferSize, isChannelIndex,
                     AudioManager.STREAM_MUSIC, 500 /*delayMs*/);
         }
 
-        AudioRecordAudit(int audioSource, int sampleRate, int channelMask,
+        public AudioRecordAudit(int audioSource, int sampleRate, int channelMask,
                 int format, int bufferSize,
                 boolean isChannelIndex, int auditStreamType, int delayMs) {
             // without channel index masks, one could call:
@@ -408,4 +408,84 @@
         private int mPosition;
         private long mFinishAtMs;
     }
+
+    /* AudioRecordAudit extends AudioRecord to allow concurrent playback
+     * of read content to an AudioTrack.  This is for testing only.
+     * For general applications, it is NOT recommended to extend AudioRecord.
+     * This affects AudioRecord timing.
+     */
+    public static class AudioRecordAuditNative extends AudioRecordNative {
+        public AudioRecordAuditNative() {
+            super();
+            // Caution: delayMs too large results in buffer sizes that cannot be created.
+            mTrack = new AudioTrackNative();
+        }
+
+        @Override
+        public boolean open(int numChannels, int sampleRate, boolean useFloat, int numBuffers) {
+            if (super.open(numChannels, sampleRate, useFloat, numBuffers)) {
+                if (!mTrack.open(numChannels, sampleRate, useFloat, 2 /* numBuffers */)) {
+                    mTrack = null; // remove track
+                }
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        public void close() {
+            super.close();
+            if (mTrack != null) {
+                mTrack.close();
+            }
+        }
+
+        @Override
+        public boolean start() {
+            if (super.start()) {
+                if (mTrack != null) {
+                    mTrack.start();
+                }
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        public boolean stop() {
+            if (super.stop()) {
+                if (mTrack != null) {
+                    mTrack.stop(); // doesn't allow remaining data to play out
+                }
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        public int read(short[] audioData, int offsetInShorts, int sizeInShorts, int readFlags) {
+            int samples = super.read(audioData, offsetInShorts, sizeInShorts, readFlags);
+            if (mTrack != null) {
+                Assert.assertEquals(samples, mTrack.write(audioData, offsetInShorts, samples,
+                        AudioTrackNative.WRITE_FLAG_BLOCKING));
+                mPosition += samples / mTrack.getChannelCount();
+            }
+            return samples;
+        }
+
+        @Override
+        public int read(float[] audioData, int offsetInFloats, int sizeInFloats, int readFlags) {
+            int samples = super.read(audioData, offsetInFloats, sizeInFloats, readFlags);
+            if (mTrack != null) {
+                Assert.assertEquals(samples, mTrack.write(audioData, offsetInFloats, samples,
+                        AudioTrackNative.WRITE_FLAG_BLOCKING));
+                mPosition += samples / mTrack.getChannelCount();
+            }
+            return samples;
+        }
+
+        public AudioTrackNative mTrack;
+        private final static String TAG = "AudioRecordAuditNative";
+        private int mPosition;
+    }
 }
diff --git a/tests/tests/media/src/android/media/cts/AudioManagerTest.java b/tests/tests/media/src/android/media/cts/AudioManagerTest.java
index ded0539..a0163e5 100644
--- a/tests/tests/media/src/android/media/cts/AudioManagerTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioManagerTest.java
@@ -45,23 +45,27 @@
 import android.os.Vibrator;
 import android.provider.Settings;
 import android.provider.Settings.System;
-import android.test.AndroidTestCase;
+import android.test.InstrumentationTestCase;
 import android.view.SoundEffectConstants;
 
 import java.util.TreeMap;
 
-public class AudioManagerTest extends AndroidTestCase {
+public class AudioManagerTest extends InstrumentationTestCase {
 
     private final static int MP3_TO_PLAY = R.raw.testmp3;
     private final static long TIME_TO_PLAY = 2000;
+    private final static String APPOPS_OP_STR = "android:write_settings";
     private AudioManager mAudioManager;
     private boolean mHasVibrator;
     private boolean mUseFixedVolume;
     private boolean mIsTelevision;
+    private Context mContext;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        mContext = getInstrumentation().getContext();
+        Utils.enableAppOps(mContext.getPackageName(), APPOPS_OP_STR, getInstrumentation());
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
         Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
         mHasVibrator = (vibrator != null) && vibrator.hasVibrator();
diff --git a/tests/tests/media/src/android/media/cts/AudioNativeTest.java b/tests/tests/media/src/android/media/cts/AudioNativeTest.java
new file mode 100644
index 0000000..f52232f
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/AudioNativeTest.java
@@ -0,0 +1,239 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.media.cts;
+
+import android.content.pm.PackageManager;
+import android.cts.util.CtsAndroidTestCase;
+import android.util.Log;
+
+public class AudioNativeTest extends CtsAndroidTestCase {
+    public void testAppendixBBufferQueue() {
+        nativeAppendixBBufferQueue();
+    }
+
+    public void testAppendixBRecording() {
+        // better to detect presence of microphone here.
+        if (!hasMicrophone()) {
+            return;
+        }
+        nativeAppendixBRecording();
+    }
+
+    public void testStereo16Playback() {
+        assertTrue(AudioTrackNative.test(
+                2 /* numChannels */, 48000 /* sampleRate */, false /* useFloat */,
+                20 /* msecPerBuffer */, 8 /* numBuffers */));
+    }
+
+    public void testStereo16Record() {
+        if (!hasMicrophone()) {
+            return;
+        }
+        assertTrue(AudioRecordNative.test(
+                2 /* numChannels */, 48000 /* sampleRate */, false /* useFloat */,
+                20 /* msecPerBuffer */, 8 /* numBuffers */));
+    }
+
+    public void testPlayStreamData() throws Exception {
+        final String TEST_NAME = "testPlayStreamData";
+        final boolean TEST_FLOAT_ARRAY[] = {
+                false,
+                true,
+        };
+        // due to downmixer algorithmic latency, source channels greater than 2 may
+        // sound shorter in duration at 4kHz sampling rate.
+        final int TEST_SR_ARRAY[] = {
+                /* 4000, */ // below limit of OpenSL ES
+                12345, // irregular sampling rate
+                44100,
+                48000,
+                96000,
+                192000,
+        };
+        final int TEST_CHANNELS_ARRAY[] = {
+                1,
+                2,
+                3,
+                4,
+                5,
+                6,
+                7,
+                // 8  // can fail due to memory issues
+        };
+        final float TEST_SWEEP = 0; // sine wave only
+        final int TEST_TIME_IN_MSEC = 300;
+        final int TOLERANCE_MSEC = 20;
+
+        for (boolean TEST_FLOAT : TEST_FLOAT_ARRAY) {
+            double frequency = 400; // frequency changes for each test
+            for (int TEST_SR : TEST_SR_ARRAY) {
+                for (int TEST_CHANNELS : TEST_CHANNELS_ARRAY) {
+                    // OpenSL ES BUG: we run out of AudioTrack memory for this config on MNC
+                    // Log.d(TEST_NAME, "open channels:" + TEST_CHANNELS + " sr:" + TEST_SR);
+                    if (TEST_FLOAT == true && TEST_CHANNELS >= 6 && TEST_SR >= 192000) {
+                        continue;
+                    }
+                    AudioTrackNative track = new AudioTrackNative();
+                    assertTrue(TEST_NAME,
+                            track.open(TEST_CHANNELS, TEST_SR, TEST_FLOAT, 1 /* numBuffers */));
+                    assertTrue(TEST_NAME, track.start());
+
+                    final int sourceSamples =
+                            (int)((long)TEST_SR * TEST_TIME_IN_MSEC * TEST_CHANNELS / 1000);
+                    final double testFrequency = frequency / TEST_CHANNELS;
+                    if (TEST_FLOAT) {
+                        float data[] = AudioHelper.createSoundDataInFloatArray(
+                                sourceSamples, TEST_SR,
+                                testFrequency, TEST_SWEEP);
+                        assertEquals(sourceSamples,
+                                track.write(data, 0 /* offset */, sourceSamples,
+                                        AudioTrackNative.WRITE_FLAG_BLOCKING));
+                    } else {
+                        short data[] = AudioHelper.createSoundDataInShortArray(
+                                sourceSamples, TEST_SR,
+                                testFrequency, TEST_SWEEP);
+                        assertEquals(sourceSamples,
+                                track.write(data, 0 /* offset */, sourceSamples,
+                                        AudioTrackNative.WRITE_FLAG_BLOCKING));
+                    }
+
+                    while (true) {
+                        // OpenSL ES BUG: getPositionInMsec returns 0 after a data underrun.
+
+                        long position = track.getPositionInMsec();
+                        //Log.d(TEST_NAME, "position: " + position[0]);
+                        if (position >= (long)(TEST_TIME_IN_MSEC - TOLERANCE_MSEC)) {
+                            break;
+                        }
+
+                        // It is safer to use a buffer count of 0 to determine termination
+                        if (track.getBuffersPending() == 0) {
+                            break;
+                        }
+                        Thread.sleep(5 /* millis */);
+                    }
+                    track.stop();
+                    track.close();
+                    Thread.sleep(40 /* millis */);  // put a gap in the tone sequence
+                    frequency += 50; // increment test tone frequency
+                }
+            }
+        }
+    }
+
+    public void testRecordStreamData() throws Exception {
+        if (!hasMicrophone()) {
+            return;
+        }
+        final String TEST_NAME = "testRecordStreamData";
+        final boolean TEST_FLOAT_ARRAY[] = {
+                false,
+                true,
+        };
+        final int TEST_SR_ARRAY[] = {
+                //4000, // below limit of OpenSL ES
+                12345, // irregular sampling rate
+                44100,
+                48000,
+                96000,
+                192000,
+        };
+        final int TEST_CHANNELS_ARRAY[] = {
+                1,
+                2,
+                3,
+                4,
+                5,
+                6,
+                7,
+                8,
+        };
+        final int SEGMENT_DURATION_IN_MSEC = 20;
+        final int NUMBER_SEGMENTS = 10;
+
+        for (boolean TEST_FLOAT : TEST_FLOAT_ARRAY) {
+            for (int TEST_SR : TEST_SR_ARRAY) {
+                for (int TEST_CHANNELS : TEST_CHANNELS_ARRAY) {
+                    // OpenSL ES BUG: we run out of AudioTrack memory for this config on MNC
+                    if (TEST_FLOAT == true && TEST_CHANNELS >= 8 && TEST_SR >= 192000) {
+                        continue;
+                    }
+                    AudioRecordNative record = new AudioRecordNative();
+                    doRecordTest(record, TEST_CHANNELS, TEST_SR, TEST_FLOAT,
+                            SEGMENT_DURATION_IN_MSEC, NUMBER_SEGMENTS);
+                }
+            }
+        }
+    }
+
+    public void testRecordAudit() throws Exception {
+        if (!hasMicrophone()) {
+            return;
+        }
+        AudioRecordNative record = new AudioHelper.AudioRecordAuditNative();
+        doRecordTest(record, 4 /* numChannels */, 44100 /* sampleRate */, false /* useFloat */,
+                1000 /* segmentDurationMs */, 10 /* numSegments */);
+    }
+
+    static {
+        System.loadLibrary("audio_jni");
+    }
+
+    private static final String TAG = "AudioNativeTest";
+
+    private void doRecordTest(AudioRecordNative record,
+            int numChannels, int sampleRate, boolean useFloat,
+            int segmentDurationMs, int numSegments) {
+        final String TEST_NAME = "doRecordTest";
+        try {
+            // Log.d(TEST_NAME, "open numChannels:" + numChannels + " sampleRate:" + sampleRate);
+            assertTrue(TEST_NAME, record.open(numChannels, sampleRate, useFloat,
+                    numSegments /* numBuffers */));
+            assertTrue(TEST_NAME, record.start());
+
+            final int sourceSamples =
+                    (int)((long)sampleRate * segmentDurationMs * numChannels / 1000);
+
+            if (useFloat) {
+                float data[] = new float[sourceSamples];
+                for (int i = 0; i < numSegments; ++i) {
+                    assertEquals(sourceSamples,
+                            record.read(data, 0 /* offset */, sourceSamples,
+                                    AudioRecordNative.READ_FLAG_BLOCKING));
+                }
+            } else {
+                short data[] = new short[sourceSamples];
+                for (int i = 0; i < numSegments; ++i) {
+                    assertEquals(sourceSamples,
+                            record.read(data, 0 /* offset */, sourceSamples,
+                                    AudioRecordNative.READ_FLAG_BLOCKING));
+                }
+            }
+            assertTrue(TEST_NAME, record.stop());
+        } finally {
+            record.close();
+        }
+    }
+
+    private boolean hasMicrophone() {
+        return getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_MICROPHONE);
+    }
+
+    private static native void nativeAppendixBBufferQueue();
+    private static native void nativeAppendixBRecording();
+}
diff --git a/tests/tests/media/src/android/media/cts/AudioRecordNative.java b/tests/tests/media/src/android/media/cts/AudioRecordNative.java
new file mode 100644
index 0000000..18df8ee
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/AudioRecordNative.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.media.cts;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.cts.util.CtsAndroidTestCase;
+import android.util.Log;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+public class AudioRecordNative {
+    // Must be kept in sync with C++ JNI audio-record-native (AudioRecordNative) READ_FLAG_*
+    public static final int READ_FLAG_BLOCKING = 1 << 0;
+    /** @hide */
+    @IntDef(flag = true,
+            value = {
+                    READ_FLAG_BLOCKING,
+            })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ReadFlags { }
+
+    public AudioRecordNative() {
+        mNativeRecordInJavaObj = nativeCreateRecord();
+    }
+
+    public boolean open(int numChannels, int sampleRate, boolean useFloat, int numBuffers) {
+        if (nativeOpen(mNativeRecordInJavaObj, numChannels, sampleRate, useFloat, numBuffers)
+                == STATUS_OK) {
+            mChannelCount = numChannels;
+            return true;
+        }
+        return false;
+    }
+
+    public void close() {
+        nativeClose(mNativeRecordInJavaObj);
+    }
+
+    public boolean start() {
+        return nativeStart(mNativeRecordInJavaObj) == STATUS_OK;
+    }
+
+    public boolean stop() {
+        return nativeStop(mNativeRecordInJavaObj) == STATUS_OK;
+    }
+
+    public boolean pause() {
+        return nativePause(mNativeRecordInJavaObj) == STATUS_OK;
+    }
+
+    public boolean flush() {
+        return nativeFlush(mNativeRecordInJavaObj) == STATUS_OK;
+    }
+
+    public long getPositionInMsec() {
+        long[] position = new long[1];
+        if (nativeGetPositionInMsec(mNativeRecordInJavaObj, position) != STATUS_OK) {
+            throw new IllegalStateException();
+        }
+        return position[0];
+    }
+
+    public int getBuffersPending() {
+        return nativeGetBuffersPending(mNativeRecordInJavaObj);
+    }
+
+    public int read(@NonNull byte[] byteArray,
+            int offsetInSamples, int sizeInSamples, @ReadFlags int readFlags) {
+        return nativeReadByteArray(
+                mNativeRecordInJavaObj, byteArray, offsetInSamples, sizeInSamples, readFlags);
+    }
+
+    public int read(@NonNull short[] shortArray,
+            int offsetInSamples, int sizeInSamples, @ReadFlags int readFlags) {
+        return nativeReadShortArray(
+                mNativeRecordInJavaObj, shortArray, offsetInSamples, sizeInSamples, readFlags);
+    }
+
+    public int read(@NonNull float[] floatArray,
+            int offsetInSamples, int sizeInSamples, @ReadFlags int readFlags) {
+        return nativeReadFloatArray(
+                mNativeRecordInJavaObj, floatArray, offsetInSamples, sizeInSamples, readFlags);
+    }
+
+    public int getChannelCount() {
+        return mChannelCount;
+    }
+
+    public static boolean test(int numChannels, int sampleRate, boolean useFloat,
+            int msecPerBuffer, int numBuffers) {
+        return nativeTest(numChannels, sampleRate, useFloat, msecPerBuffer, numBuffers)
+                == STATUS_OK;
+    }
+
+    @Override
+    protected void finalize() {
+        nativeClose(mNativeRecordInJavaObj);
+        nativeDestroyRecord(mNativeRecordInJavaObj);
+    }
+
+    static {
+        System.loadLibrary("audio_jni");
+    }
+
+    private static final String TAG = "AudioRecordNative";
+    private int mChannelCount;
+    private final long mNativeRecordInJavaObj;
+    private static final int STATUS_OK = 0;
+
+    // static native API.
+    // The native API uses a long "record handle" created by nativeCreateRecord.
+    // The handle must be destroyed after use by nativeDestroyRecord.
+    //
+    // Return codes from the native layer are status_t.
+    // Converted to Java booleans or exceptions at the public API layer.
+    private static native long nativeCreateRecord();
+    private static native void nativeDestroyRecord(long record);
+    private static native int nativeOpen(
+            long record, int numChannels, int sampleRate, boolean useFloat, int numBuffers);
+    private static native void nativeClose(long record);
+    private static native int nativeStart(long record);
+    private static native int nativeStop(long record);
+    private static native int nativePause(long record);
+    private static native int nativeFlush(long record);
+    private static native int nativeGetPositionInMsec(long record, @NonNull long[] position);
+    private static native int nativeGetBuffersPending(long record);
+    private static native int nativeReadByteArray(long record, @NonNull byte[] byteArray,
+            int offsetInSamples, int sizeInSamples, @ReadFlags int readFlags);
+    private static native int nativeReadShortArray(long record, @NonNull short[] shortArray,
+            int offsetInSamples, int sizeInSamples, @ReadFlags int readFlags);
+    private static native int nativeReadFloatArray(long record, @NonNull float[] floatArray,
+            int offsetInSamples, int sizeInSamples, @ReadFlags int readFlags);
+
+    // native interface for all-in-one testing, no record handle required.
+    private static native int nativeTest(
+            int numChannels, int sampleRate, boolean useFloat, int msecPerBuffer, int numBuffers);
+}
diff --git a/tests/tests/media/src/android/media/cts/AudioRecordTest.java b/tests/tests/media/src/android/media/cts/AudioRecordTest.java
index 6ba1aeb..b1ee3f5 100644
--- a/tests/tests/media/src/android/media/cts/AudioRecordTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioRecordTest.java
@@ -321,6 +321,9 @@
     // Test AudioRecord.Builder to verify the observed configuration of an AudioRecord built with
     // an empty Builder matches the documentation / expected values
     public void testAudioRecordBuilderDefault() throws Exception {
+        if (!hasMicrophone()) {
+            return;
+        }
         // constants for test
         final String TEST_NAME = "testAudioRecordBuilderDefault";
         // expected values below match the AudioRecord.Builder documentation
@@ -352,6 +355,9 @@
     // Test AudioRecord.Builder to verify the observed configuration of an AudioRecord built with
     // an incomplete AudioFormat matches the documentation / expected values
     public void testAudioRecordBuilderPartialFormat() throws Exception {
+        if (!hasMicrophone()) {
+            return;
+        }
         // constants for test
         final String TEST_NAME = "testAudioRecordBuilderPartialFormat";
         final int expectedRate = 16000;
@@ -380,6 +386,9 @@
     // Test AudioRecord.Builder to verify the observed configuration of an AudioRecord matches
     // the parameters used in the builder
     public void testAudioRecordBuilderParams() throws Exception {
+        if (!hasMicrophone()) {
+            return;
+        }
         // constants for test
         final String TEST_NAME = "testAudioRecordBuilderParams";
         final int expectedRate = 8000;
@@ -418,6 +427,9 @@
 
     // Test AudioRecord to ensure we can build after a failure.
     public void testAudioRecordBufferSize() throws Exception {
+        if (!hasMicrophone()) {
+            return;
+        }
         // constants for test
         final String TEST_NAME = "testAudioRecordBufferSize";
 
@@ -678,174 +690,194 @@
             listener = new MockOnRecordPositionUpdateListener(record);
         }
 
-        if (markerPeriodsPerSecond != 0) {
-            mMarkerPeriodInFrames = TEST_SR / markerPeriodsPerSecond;
-            mMarkerPosition = mMarkerPeriodInFrames;
-            assertEquals(AudioRecord.SUCCESS,
-                    record.setNotificationMarkerPosition(mMarkerPosition));
-        } else {
-            mMarkerPeriodInFrames = 0;
-        }
         final int updatePeriodInFrames = (periodsPerSecond == 0)
                 ? 0 : TEST_SR / periodsPerSecond;
-        assertEquals(AudioRecord.SUCCESS,
-                record.setPositionNotificationPeriod(updatePeriodInFrames));
-
-        listener.start(TEST_SR);
-        record.startRecording();
-        assertEquals(AudioRecord.RECORDSTATE_RECORDING, record.getRecordingState());
-        long startTime = System.currentTimeMillis();
-
-        // For our tests, we could set test duration by timed sleep or by # frames received.
-        // Since we don't know *exactly* when AudioRecord actually begins recording,
-        // we end the test by # frames read.
-        final int numChannels =  AudioFormat.channelCountFromInChannelMask(TEST_CONF);
-        final int bytesPerSample = AudioFormat.getBytesPerSample(TEST_FORMAT);
-        final int bytesPerFrame = numChannels * bytesPerSample;
-        // careful about integer overflow in the formula below:
-        final int targetSamples = (int)((long)TEST_TIME_MS * TEST_SR * numChannels / 1000);
-        final int BUFFER_FRAMES = 512;
-        final int BUFFER_SAMPLES = BUFFER_FRAMES * numChannels;
-        // TODO: verify behavior when buffer size is not a multiple of frame size.
-
         // After starting, there is no guarantee when the first frame of data is read.
         long firstSampleTime = 0;
-        int samplesRead = 0;
-        if (useByteBuffer) {
-            ByteBuffer byteBuffer = ByteBuffer.allocateDirect(BUFFER_SAMPLES * bytesPerSample);
-            while (samplesRead < targetSamples) {
-                // the first time through, we read a single frame.
-                // this sets the recording anchor position.
-                int amount = samplesRead == 0 ? numChannels :
-                    Math.min(BUFFER_SAMPLES, targetSamples - samplesRead);
-                amount *= bytesPerSample;    // in bytes
-                // read always places data at the start of the byte buffer with
-                // position and limit are ignored.  test this by setting
-                // position and limit to arbitrary values here.
-                final int lastPosition = 7;
-                final int lastLimit = 13;
-                byteBuffer.position(lastPosition);
-                byteBuffer.limit(lastLimit);
-                int ret = blocking ? record.read(byteBuffer, amount) :
-                    record.read(byteBuffer, amount, AudioRecord.READ_NON_BLOCKING);
-                // so long as amount requested in bytes is a multiple of the frame size
-                // we expect the byte buffer request to be filled.  Caution: the
-                // byte buffer data will be in native endian order, not Java order.
-                if (blocking) {
-                    assertEquals(amount, ret);
-                } else {
-                    assertTrue("0 <= " + ret + " <= " + amount, 0 <= ret && ret <= amount);
-                }
-                // position, limit are not changed by read().
-                assertEquals(lastPosition, byteBuffer.position());
-                assertEquals(lastLimit, byteBuffer.limit());
-                if (samplesRead == 0 && ret > 0) {
-                    firstSampleTime = System.currentTimeMillis();
-                }
-                samplesRead += ret / bytesPerSample;
+
+        // blank final variables: all successful paths will initialize the times.
+        final long endTime;
+        final long startTime;
+        final long stopRequestTime;
+        final long stopTime;
+
+        try {
+            if (markerPeriodsPerSecond != 0) {
+                mMarkerPeriodInFrames = TEST_SR / markerPeriodsPerSecond;
+                mMarkerPosition = mMarkerPeriodInFrames;
+                assertEquals(AudioRecord.SUCCESS,
+                        record.setNotificationMarkerPosition(mMarkerPosition));
+            } else {
+                mMarkerPeriodInFrames = 0;
             }
-        } else {
-            switch (TEST_FORMAT) {
-            case AudioFormat.ENCODING_PCM_8BIT: {
-                // For 8 bit data, use bytes
-                byte[] byteData = new byte[BUFFER_SAMPLES];
+
+            assertEquals(AudioRecord.SUCCESS,
+                    record.setPositionNotificationPeriod(updatePeriodInFrames));
+
+            listener.start(TEST_SR);
+            record.startRecording();
+            assertEquals(AudioRecord.RECORDSTATE_RECORDING, record.getRecordingState());
+            startTime = System.currentTimeMillis();
+
+            // For our tests, we could set test duration by timed sleep or by # frames received.
+            // Since we don't know *exactly* when AudioRecord actually begins recording,
+            // we end the test by # frames read.
+            final int numChannels =  AudioFormat.channelCountFromInChannelMask(TEST_CONF);
+            final int bytesPerSample = AudioFormat.getBytesPerSample(TEST_FORMAT);
+            final int bytesPerFrame = numChannels * bytesPerSample;
+            // careful about integer overflow in the formula below:
+            final int targetSamples = (int)((long)TEST_TIME_MS * TEST_SR * numChannels / 1000);
+            final int BUFFER_FRAMES = 512;
+            final int BUFFER_SAMPLES = BUFFER_FRAMES * numChannels;
+            // TODO: verify behavior when buffer size is not a multiple of frame size.
+
+            int samplesRead = 0;
+            if (useByteBuffer) {
+                ByteBuffer byteBuffer =
+                        ByteBuffer.allocateDirect(BUFFER_SAMPLES * bytesPerSample);
                 while (samplesRead < targetSamples) {
                     // the first time through, we read a single frame.
                     // this sets the recording anchor position.
                     int amount = samplesRead == 0 ? numChannels :
                         Math.min(BUFFER_SAMPLES, targetSamples - samplesRead);
-                    int ret = blocking ? record.read(byteData, 0, amount) :
-                        record.read(byteData, 0, amount, AudioRecord.READ_NON_BLOCKING);
+                    amount *= bytesPerSample;    // in bytes
+                    // read always places data at the start of the byte buffer with
+                    // position and limit are ignored.  test this by setting
+                    // position and limit to arbitrary values here.
+                    final int lastPosition = 7;
+                    final int lastLimit = 13;
+                    byteBuffer.position(lastPosition);
+                    byteBuffer.limit(lastLimit);
+                    int ret = blocking ? record.read(byteBuffer, amount) :
+                        record.read(byteBuffer, amount, AudioRecord.READ_NON_BLOCKING);
+                    // so long as amount requested in bytes is a multiple of the frame size
+                    // we expect the byte buffer request to be filled.  Caution: the
+                    // byte buffer data will be in native endian order, not Java order.
                     if (blocking) {
                         assertEquals(amount, ret);
                     } else {
-                        assertTrue("0 <= " + ret + " <= " + amount, 0 <= ret && ret <= amount);
+                        assertTrue("0 <= " + ret + " <= " + amount,
+                                0 <= ret && ret <= amount);
                     }
+                    // position, limit are not changed by read().
+                    assertEquals(lastPosition, byteBuffer.position());
+                    assertEquals(lastLimit, byteBuffer.limit());
                     if (samplesRead == 0 && ret > 0) {
                         firstSampleTime = System.currentTimeMillis();
                     }
-                    samplesRead += ret;
+                    samplesRead += ret / bytesPerSample;
                 }
-            } break;
-            case AudioFormat.ENCODING_PCM_16BIT: {
-                // For 16 bit data, use shorts
-                short[] shortData = new short[BUFFER_SAMPLES];
-                while (samplesRead < targetSamples) {
-                    // the first time through, we read a single frame.
-                    // this sets the recording anchor position.
-                    int amount = samplesRead == 0 ? numChannels :
-                        Math.min(BUFFER_SAMPLES, targetSamples - samplesRead);
-                    int ret = blocking ? record.read(shortData, 0, amount) :
-                        record.read(shortData, 0, amount, AudioRecord.READ_NON_BLOCKING);
-                    if (blocking) {
-                        assertEquals(amount, ret);
-                    } else {
-                        assertTrue("0 <= " + ret + " <= " + amount, 0 <= ret && ret <= amount);
+            } else {
+                switch (TEST_FORMAT) {
+                case AudioFormat.ENCODING_PCM_8BIT: {
+                    // For 8 bit data, use bytes
+                    byte[] byteData = new byte[BUFFER_SAMPLES];
+                    while (samplesRead < targetSamples) {
+                        // the first time through, we read a single frame.
+                        // this sets the recording anchor position.
+                        int amount = samplesRead == 0 ? numChannels :
+                            Math.min(BUFFER_SAMPLES, targetSamples - samplesRead);
+                        int ret = blocking ? record.read(byteData, 0, amount) :
+                            record.read(byteData, 0, amount, AudioRecord.READ_NON_BLOCKING);
+                        if (blocking) {
+                            assertEquals(amount, ret);
+                        } else {
+                            assertTrue("0 <= " + ret + " <= " + amount,
+                                    0 <= ret && ret <= amount);
+                        }
+                        if (samplesRead == 0 && ret > 0) {
+                            firstSampleTime = System.currentTimeMillis();
+                        }
+                        samplesRead += ret;
                     }
-                    if (samplesRead == 0 && ret > 0) {
-                        firstSampleTime = System.currentTimeMillis();
+                } break;
+                case AudioFormat.ENCODING_PCM_16BIT: {
+                    // For 16 bit data, use shorts
+                    short[] shortData = new short[BUFFER_SAMPLES];
+                    while (samplesRead < targetSamples) {
+                        // the first time through, we read a single frame.
+                        // this sets the recording anchor position.
+                        int amount = samplesRead == 0 ? numChannels :
+                            Math.min(BUFFER_SAMPLES, targetSamples - samplesRead);
+                        int ret = blocking ? record.read(shortData, 0, amount) :
+                            record.read(shortData, 0, amount, AudioRecord.READ_NON_BLOCKING);
+                        if (blocking) {
+                            assertEquals(amount, ret);
+                        } else {
+                            assertTrue("0 <= " + ret + " <= " + amount,
+                                    0 <= ret && ret <= amount);
+                        }
+                        if (samplesRead == 0 && ret > 0) {
+                            firstSampleTime = System.currentTimeMillis();
+                        }
+                        samplesRead += ret;
                     }
-                    samplesRead += ret;
+                } break;
+                case AudioFormat.ENCODING_PCM_FLOAT: {
+                    float[] floatData = new float[BUFFER_SAMPLES];
+                    while (samplesRead < targetSamples) {
+                        // the first time through, we read a single frame.
+                        // this sets the recording anchor position.
+                        int amount = samplesRead == 0 ? numChannels :
+                            Math.min(BUFFER_SAMPLES, targetSamples - samplesRead);
+                        int ret = record.read(floatData, 0, amount, blocking ?
+                                AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
+                        if (blocking) {
+                            assertEquals(amount, ret);
+                        } else {
+                            assertTrue("0 <= " + ret + " <= " + amount,
+                                    0 <= ret && ret <= amount);
+                        }
+                        if (samplesRead == 0 && ret > 0) {
+                            firstSampleTime = System.currentTimeMillis();
+                        }
+                        samplesRead += ret;
+                    }
+                } break;
                 }
-            } break;
-            case AudioFormat.ENCODING_PCM_FLOAT: {
-                float[] floatData = new float[BUFFER_SAMPLES];
-                while (samplesRead < targetSamples) {
-                    // the first time through, we read a single frame.
-                    // this sets the recording anchor position.
-                    int amount = samplesRead == 0 ? numChannels :
-                        Math.min(BUFFER_SAMPLES, targetSamples - samplesRead);
-                    int ret = record.read(floatData, 0, amount, blocking ?
-                            AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
-                    if (blocking) {
-                        assertEquals(amount, ret);
-                    } else {
-                        assertTrue("0 <= " + ret + " <= " + amount, 0 <= ret && ret <= amount);
-                    }
-                    if (samplesRead == 0 && ret > 0) {
-                        firstSampleTime = System.currentTimeMillis();
-                    }
-                    samplesRead += ret;
-                }
-            } break;
             }
+
+            // We've read all the frames, now check the record timing.
+            endTime = System.currentTimeMillis();
+            //Log.d(TAG, "first sample time " + (firstSampleTime - startTime)
+            //        + " test time " + (endTime - firstSampleTime));
+            // Verify recording starts within 200 ms of record.startRecording() (typical 100ms)
+            // Verify recording completes within 50 ms of expected test time (typical 20ms)
+            assertEquals(0, firstSampleTime - startTime, 200);
+            assertEquals(TEST_TIME_MS, endTime - firstSampleTime, auditRecording ? 1000 : 50);
+
+            // Even though we've read all the frames we want, the events may not be sent to
+            // the listeners (events are handled through a separate internal callback thread).
+            // One must sleep to make sure the last event(s) come in.
+            Thread.sleep(30);
+
+            stopRequestTime = System.currentTimeMillis();
+            record.stop();
+            assertEquals(AudioRecord.RECORDSTATE_STOPPED, record.getRecordingState());
+
+            stopTime = System.currentTimeMillis();
+
+            // stop listening - we should be done.
+            // Caution M behavior and likely much earlier:
+            // we assume no events can happen after stop(), but this may not
+            // always be true as stop can take 100ms to complete (as it may disable
+            // input recording on the hal); thus the event handler may be block with
+            // valid events, issuing right after stop completes. Except for those events,
+            // no other events should show up after stop.
+            // This behavior may change in the future but we account for it here in testing.
+            listener.stop();
+
+            // clean up
+            if (makeSomething != null) {
+                makeSomething.join();
+            }
+
+        } finally {
+            listener.release();
+            // we must release the record immediately as it is a system-wide
+            // resource needed for other tests.
+            record.release();
         }
-
-        // We've read all the frames, now check the record timing.
-        final long endTime = System.currentTimeMillis();
-        //Log.d(TAG, "first sample time " + (firstSampleTime - startTime)
-        //        + " test time " + (endTime - firstSampleTime));
-        // Verify recording starts within 200 ms of record.startRecording() (typical 100ms)
-        // Verify recording completes within 50 ms of expected test time (typical 20ms)
-        assertEquals(0, firstSampleTime - startTime, 200);
-        assertEquals(TEST_TIME_MS, endTime - firstSampleTime, auditRecording ? 1000 : 50);
-
-        // Even though we've read all the frames we want, the events may not be sent to
-        // the listeners (events are handled through a separate internal callback thread).
-        // One must sleep to make sure the last event(s) come in.
-        Thread.sleep(30);
-
-        record.stop();
-        assertEquals(AudioRecord.RECORDSTATE_STOPPED, record.getRecordingState());
-
-        final long stopTime = System.currentTimeMillis();
-
-        // stop listening - we should be done.
-        // Caution M behavior and likely much earlier:
-        // we assume no events can happen after stop(), but this may not
-        // always be true as stop can take 100ms to complete (as it may disable
-        // input recording on the hal); thus the event handler may be block with
-        // valid events, issuing right after stop completes. Except for those events,
-        // no other events should show up after stop.
-        // This behavior may change in the future but we account for it here in testing.
-        listener.stop();
-
-        // clean up
-        if (makeSomething != null) {
-            makeSomething.join();
-        }
-        listener.release();
-        record.release();
         if (auditRecording) { // don't check timing if auditing (messes up timing)
             return;
         }
@@ -881,10 +913,14 @@
         // and there is no record.getPosition(), we consider only differential timing
         // from the first marker or periodic event.
         final int toleranceInFrames = TEST_SR * 80 / 1000; // 80 ms
+        final int testTimeInFrames = (int)((long)TEST_TIME_MS * TEST_SR / 1000);
 
         AudioHelper.Statistics markerStat = new AudioHelper.Statistics();
         for (int i = 1; i < markerList.size(); ++i) {
             final int expected = mMarkerPeriodInFrames * i;
+            if (markerList.get(i) > testTimeInFrames) {
+                break; // don't consider any notifications when we might be stopping.
+            }
             final int actual = markerList.get(i) - markerList.get(0);
             //Log.d(TAG, "Marker: " + i + " expected(" + expected + ")  actual(" + actual
             //        + ")  diff(" + (actual - expected) + ")"
@@ -896,6 +932,9 @@
         AudioHelper.Statistics periodicStat = new AudioHelper.Statistics();
         for (int i = 1; i < periodicList.size(); ++i) {
             final int expected = updatePeriodInFrames * i;
+            if (periodicList.get(i) > testTimeInFrames) {
+                break; // don't consider any notifications when we might be stopping.
+            }
             final int actual = periodicList.get(i) - periodicList.get(0);
             //Log.d(TAG, "Update: " + i + " expected(" + expected + ")  actual(" + actual
             //        + ")  diff(" + (actual - expected) + ")"
@@ -908,9 +947,11 @@
         ReportLog log = getReportLog();
         log.printValue(reportName + ": startRecording lag", firstSampleTime - startTime,
                 ResultType.LOWER_BETTER, ResultUnit.MS);
+        log.printValue(reportName + ": stop execution time", stopTime - stopRequestTime,
+                ResultType.LOWER_BETTER, ResultUnit.MS);
         log.printValue(reportName + ": Total record time expected", TEST_TIME_MS,
                 ResultType.NEUTRAL, ResultUnit.MS);
-        log.printValue(reportName + ": Total record time actual", (endTime - firstSampleTime),
+        log.printValue(reportName + ": Total record time actual", endTime - firstSampleTime,
                 ResultType.NEUTRAL, ResultUnit.MS);
         log.printValue(reportName + ": Total markers expected", markerPeriods,
                 ResultType.NEUTRAL, ResultUnit.COUNT);
@@ -993,6 +1034,7 @@
         }
 
         public synchronized void release() {
+            stop();
             mAudioRecord.setRecordPositionUpdateListener(null);
             mAudioRecord = null;
         }
diff --git a/tests/tests/media/src/android/media/cts/AudioTrackNative.java b/tests/tests/media/src/android/media/cts/AudioTrackNative.java
new file mode 100644
index 0000000..1ce44ef
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/AudioTrackNative.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.media.cts;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.cts.util.CtsAndroidTestCase;
+import android.util.Log;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+public class AudioTrackNative {
+    // Must be kept in sync with C++ JNI audio-track-native (AudioTrackNative) WRITE_FLAG_*
+    public static final int WRITE_FLAG_BLOCKING = 1 << 0;
+    /** @hide */
+    @IntDef(flag = true,
+            value = {
+                    WRITE_FLAG_BLOCKING,
+            })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface WriteFlags { }
+
+    public AudioTrackNative() {
+        mNativeTrackInJavaObj = nativeCreateTrack();
+    }
+
+    // TODO: eventually accept AudioFormat
+    // numBuffers is the number of internal buffers before hitting the OpenSL ES.
+    // A value of 0 means that all writes are blocking.
+    public boolean open(int numChannels, int sampleRate, boolean useFloat, int numBuffers) {
+        if (nativeOpen(mNativeTrackInJavaObj, numChannels, sampleRate, useFloat, numBuffers)
+                == STATUS_OK) {
+            mChannelCount = numChannels;
+            return true;
+        }
+        return false;
+    }
+
+    public void close() {
+        nativeClose(mNativeTrackInJavaObj);
+    }
+
+    public boolean start() {
+        return nativeStart(mNativeTrackInJavaObj) == STATUS_OK;
+    }
+
+    public boolean stop() {
+        return nativeStop(mNativeTrackInJavaObj) == STATUS_OK;
+    }
+
+    public boolean pause() {
+        return nativePause(mNativeTrackInJavaObj) == STATUS_OK;
+    }
+
+    public boolean flush() {
+        return nativeFlush(mNativeTrackInJavaObj) == STATUS_OK;
+    }
+
+    public long getPositionInMsec() {
+        long[] position = new long[1];
+        if (nativeGetPositionInMsec(mNativeTrackInJavaObj, position) != STATUS_OK) {
+            throw new IllegalStateException();
+        }
+        return position[0];
+    }
+
+    public int getBuffersPending() {
+        return nativeGetBuffersPending(mNativeTrackInJavaObj);
+    }
+
+    /* returns number of samples written.
+     * 0 may be returned if !isBlocking.
+     * negative value indicates error.
+     */
+    public int write(@NonNull byte[] byteArray,
+            int offsetInSamples, int sizeInSamples, @WriteFlags int writeFlags) {
+        return nativeWriteByteArray(
+                mNativeTrackInJavaObj, byteArray, offsetInSamples, sizeInSamples, writeFlags);
+    }
+
+    public int write(@NonNull short[] shortArray,
+            int offsetInSamples, int sizeInSamples, @WriteFlags int writeFlags) {
+        return nativeWriteShortArray(
+                mNativeTrackInJavaObj, shortArray, offsetInSamples, sizeInSamples, writeFlags);
+    }
+
+    public int write(@NonNull float[] floatArray,
+            int offsetInSamples, int sizeInSamples, @WriteFlags int writeFlags) {
+        return nativeWriteFloatArray(
+                mNativeTrackInJavaObj, floatArray, offsetInSamples, sizeInSamples, writeFlags);
+    }
+
+    public int getChannelCount() {
+        return mChannelCount;
+    }
+
+    public static boolean test(int numChannels, int sampleRate, boolean useFloat,
+            int msecPerBuffer, int numBuffers) {
+        return nativeTest(numChannels, sampleRate, useFloat, msecPerBuffer, numBuffers)
+                == STATUS_OK;
+    }
+
+    @Override
+    protected void finalize() {
+        nativeClose(mNativeTrackInJavaObj);
+        nativeDestroyTrack(mNativeTrackInJavaObj);
+    }
+
+    static {
+        System.loadLibrary("audio_jni");
+    }
+
+    private static final String TAG = "AudioTrackNative";
+    private int mChannelCount;
+    private final long mNativeTrackInJavaObj;
+    private static final int STATUS_OK = 0;
+
+    // static native API.
+    // The native API uses a long "track handle" created by nativeCreateTrack.
+    // The handle must be destroyed after use by nativeDestroyTrack.
+    //
+    // Return codes from the native layer are status_t.
+    // Converted to Java booleans or exceptions at the public API layer.
+    private static native long nativeCreateTrack();
+    private static native void nativeDestroyTrack(long track);
+    private static native int nativeOpen(
+            long track, int numChannels, int sampleRate, boolean useFloat, int numBuffers);
+    private static native void nativeClose(long track);
+    private static native int nativeStart(long track);
+    private static native int nativeStop(long track);
+    private static native int nativePause(long track);
+    private static native int nativeFlush(long track);
+    private static native int nativeGetPositionInMsec(long track, @NonNull long[] position);
+    private static native int nativeGetBuffersPending(long track);
+    private static native int nativeWriteByteArray(long track, @NonNull byte[] byteArray,
+            int offsetInSamples, int sizeInSamples, @WriteFlags int writeFlags);
+    private static native int nativeWriteShortArray(long track, @NonNull short[] shortArray,
+            int offsetInSamples, int sizeInSamples, @WriteFlags int writeFlags);
+    private static native int nativeWriteFloatArray(long track, @NonNull float[] floatArray,
+            int offsetInSamples, int sizeInSamples, @WriteFlags int writeFlags);
+
+    // native interface for all-in-one testing, no track handle required.
+    private static native int nativeTest(
+            int numChannels, int sampleRate, boolean useFloat, int msecPerBuffer, int numBuffers);
+}
diff --git a/tests/tests/media/src/android/media/cts/DecoderTest.java b/tests/tests/media/src/android/media/cts/DecoderTest.java
old mode 100644
new mode 100755
index ee40207..6765051
--- a/tests/tests/media/src/android/media/cts/DecoderTest.java
+++ b/tests/tests/media/src/android/media/cts/DecoderTest.java
@@ -164,8 +164,12 @@
     }
 
     public void testDecodeMonoGsm() throws Exception {
-        monoTest(R.raw.monotestgsm, 8000);
-        testTimeStampOrdering(R.raw.monotestgsm);
+        if (MediaUtils.hasCodecsForResource(mContext, R.raw.monotestgsm)) {
+            monoTest(R.raw.monotestgsm, 8000);
+            testTimeStampOrdering(R.raw.monotestgsm);
+        } else {
+            MediaUtils.skipTest("not mandatory");
+        }
     }
 
     public void testDecodeAacTs() throws Exception {
@@ -1297,6 +1301,10 @@
         }
     }
 
+    private static MediaCodec createDecoder(MediaFormat format) {
+        return MediaUtils.getDecoder(format);
+    }
+
     // for video
     private int countFrames(int video, int resetMode, int eosframe, Surface s)
             throws Exception {
@@ -1409,7 +1417,7 @@
         ByteBuffer[] codecInputBuffers;
         ByteBuffer[] codecOutputBuffers;
 
-        MediaCodec codec = createDecoder(mime);
+        MediaCodec codec = createDecoder(format);
         Log.i("@@@@", "using codec: " + codec.getName());
         codec.configure(format, surface, null /* crypto */, 0 /* flags */);
         codec.start();
diff --git a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
index d65bbf6..48fcb65 100755
--- a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
+++ b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
@@ -509,7 +509,7 @@
      * Determines if two color values are approximately equal.
      */
     private static boolean approxEquals(int expected, int actual) {
-        final int MAX_DELTA = 4;
+        final int MAX_DELTA = 7;
         return Math.abs(expected - actual) <= MAX_DELTA;
     }
 
diff --git a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayWithCompositionTest.java b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayWithCompositionTest.java
index 2320990..a999135 100644
--- a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayWithCompositionTest.java
+++ b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayWithCompositionTest.java
@@ -657,7 +657,6 @@
             } catch (InterruptedException e) {
                 // don't care
             }
-            cleanupGl();
             mCompositionThread = null;
             mSurface = null;
             mStartCompletionSemaphore = null;
@@ -970,7 +969,6 @@
 
             public void cleanup() {
                 mNumTextureUpdated.set(0);
-                mVerticesData.clear();
                 if (mTextureId != 0) {
                     int[] textures = new int[] {
                             mTextureId
diff --git a/tests/tests/media/src/android/media/cts/EnumDevicesTest.java b/tests/tests/media/src/android/media/cts/EnumDevicesTest.java
index f513709..94af087 100644
--- a/tests/tests/media/src/android/media/cts/EnumDevicesTest.java
+++ b/tests/tests/media/src/android/media/cts/EnumDevicesTest.java
@@ -115,29 +115,31 @@
             // Sample Rates
             int[] sampleRates = deviceInfo.getSampleRates();
             assertNotNull(sampleRates);
-            // "analog" devices won't list any sample rates
+            // Note: an empty array indicates that the device supports arbitrary sample rates.
 
             // Channel Masks
             int[] channelMasks = deviceInfo.getChannelMasks();
             assertNotNull(channelMasks);
-            // "analog" devices won't list any channel masks
+            // Note: an empty array indicates that the device supports arbitrary channel masks.
 
             // Channel Index Masks
             int[] indexMasks = deviceInfo.getChannelIndexMasks();
-            assertNotNull(channelMasks);
+            assertNotNull(indexMasks);
+            // Note: an empty array indicates that the device supports arbitrary channel index
+            // masks.
 
             // Channel Counts
             int[] channelCounts = deviceInfo.getChannelCounts();
             assertNotNull(channelCounts);
-            // "analog" devices won't list any channel Counts
+            // Note: an empty array indicates that the device supports arbitrary channel counts.
 
             // Encodings
             int[] encodings = deviceInfo.getEncodings();
             assertNotNull(encodings);
-            // "analog" devices won't list any encodings
+            // Note: an empty array indicates that the device supports arbitrary encodings.
 
             int type = deviceInfo.getType();
-            assert(type > AudioDeviceInfo.TYPE_UNKNOWN);
+            assertTrue(type != AudioDeviceInfo.TYPE_UNKNOWN);
         }
     }
 
@@ -167,7 +169,7 @@
         }
         return myLooper;
     }
-    
+
     public void test_deviceCallback() {
         // null callback?
         mAudioManager.registerAudioDeviceCallback(null,null);
@@ -187,7 +189,7 @@
         mAudioManager.unregisterAudioDeviceCallback(callback);
 
         Looper myLooper = prepareIfNeededLooper();
-        
+
         mAudioManager.registerAudioDeviceCallback(callback, new Handler());
         // unregister null callback
         mAudioManager.unregisterAudioDeviceCallback(null);
diff --git a/tests/tests/media/src/android/media/cts/MediaCodecCapabilitiesTest.java b/tests/tests/media/src/android/media/cts/MediaCodecCapabilitiesTest.java
index 15438e8..813af0f2 100644
--- a/tests/tests/media/src/android/media/cts/MediaCodecCapabilitiesTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaCodecCapabilitiesTest.java
@@ -19,6 +19,7 @@
 import android.cts.util.MediaUtils;
 import android.media.MediaCodec;
 import android.media.MediaCodecInfo;
+import android.media.MediaCodecInfo.AudioCapabilities;
 import android.media.MediaCodecInfo.CodecCapabilities;
 import android.media.MediaCodecInfo.CodecProfileLevel;
 import android.media.MediaCodecInfo.VideoCapabilities;
@@ -530,32 +531,45 @@
         }
     }
 
-    private static MediaFormat createMinFormat(String mime, VideoCapabilities vcaps, int color) {
-        int minWidth = vcaps.getSupportedWidths().getLower();
-        int minHeight = vcaps.getSupportedHeightsFor(minWidth).getLower();
-        int minBitrate = vcaps.getBitrateRange().getLower();
+    private static MediaFormat createMinFormat(String mime, CodecCapabilities caps) {
+        MediaFormat format;
+        if (caps.getVideoCapabilities() != null) {
+            VideoCapabilities vcaps = caps.getVideoCapabilities();
+            int minWidth = vcaps.getSupportedWidths().getLower();
+            int minHeight = vcaps.getSupportedHeightsFor(minWidth).getLower();
+            int minBitrate = vcaps.getBitrateRange().getLower();
+            format = MediaFormat.createVideoFormat(mime, minWidth, minHeight);
+            format.setInteger(MediaFormat.KEY_COLOR_FORMAT, caps.colorFormats[0]);
+            format.setInteger(MediaFormat.KEY_BIT_RATE, minBitrate);
+            format.setInteger(MediaFormat.KEY_FRAME_RATE, 10);
+            format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 10);
+        } else {
+            AudioCapabilities acaps = caps.getAudioCapabilities();
+            int minSampleRate = acaps.getSupportedSampleRateRanges()[0].getLower();
+            int minChannelCount = 1;
+            int minBitrate = acaps.getBitrateRange().getLower();
+            format = MediaFormat.createAudioFormat(mime, minSampleRate, minChannelCount);
+            format.setInteger(MediaFormat.KEY_BIT_RATE, minBitrate);
+        }
 
-        MediaFormat format = MediaFormat.createVideoFormat(mime, minWidth, minHeight);
-        format.setInteger(MediaFormat.KEY_COLOR_FORMAT, color);
-        format.setInteger(MediaFormat.KEY_BIT_RATE, minBitrate);
-        format.setInteger(MediaFormat.KEY_FRAME_RATE, 10);
-        format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 10);
         return format;
     }
 
     private static int getActualMax(
             boolean isEncoder, String name, String mime, CodecCapabilities caps, int max) {
         int flag = isEncoder ? MediaCodec.CONFIGURE_FLAG_ENCODE : 0;
-        MediaFormat format =
-                createMinFormat(mime, caps.getVideoCapabilities(), caps.colorFormats[0]);
+        MediaFormat format = createMinFormat(mime, caps);
+        Log.d(TAG, "Test format " + format);
         Vector<MediaCodec> codecs = new Vector<MediaCodec>();
+        MediaCodec codec = null;
         for (int i = 0; i < max; ++i) {
             try {
                 Log.d(TAG, "Create codec " + name + " #" + i);
-                MediaCodec codec = MediaCodec.createByCodecName(name);
+                codec = MediaCodec.createByCodecName(name);
                 codec.configure(format, null, null, flag);
                 codec.start();
                 codecs.add(codec);
+                codec = null;
             } catch (IllegalArgumentException e) {
                 fail("Got unexpected IllegalArgumentException " + e.getMessage());
             } catch (IOException e) {
@@ -569,24 +583,25 @@
                 } else {
                     fail("Unexpected CodecException " + e.getDiagnosticInfo());
                 }
+            } finally {
+                if (codec != null) {
+                    Log.d(TAG, "release codec");
+                    codec.release();
+                    codec = null;
+                }
             }
         }
         int actualMax = codecs.size();
         for (int i = 0; i < codecs.size(); ++i) {
+            Log.d(TAG, "release codec #" + i);
             codecs.get(i).release();
         }
+        codecs.clear();
         return actualMax;
     }
 
-    private static boolean shouldTestActual(CodecCapabilities caps) {
-        if (caps.getVideoCapabilities() == null) {
-            // TODO: test audio codecs.
-            return false;
-        }
-        return true;
-    }
-
     public void testGetMaxSupportedInstances() {
+        final int MAX_INSTANCES = 32;
         StringBuilder xmlOverrides = new StringBuilder();
         MediaCodecList allCodecs = new MediaCodecList(MediaCodecList.ALL_CODECS);
         for (MediaCodecInfo info : allCodecs.getCodecInfos()) {
@@ -601,21 +616,19 @@
                 Log.d(TAG, "getMaxSupportedInstances returns " + max);
                 assertTrue(max > 0);
 
-                if (shouldTestActual(caps)) {
-                    int actualMax = getActualMax(
-                            info.isEncoder(), info.getName(), types[j], caps, max + 1);
-                    Log.d(TAG, "actualMax " + actualMax + " vs reported max " + max);
-                    if (actualMax < (int)(max * 0.9) || actualMax > (int) Math.ceil(max * 1.1)) {
-                        String codec = "<MediaCodec name=\"" + info.getName() +
-                                "\" type=\"" + types[j] + "\" >";
-                        String limit = "    <Limit name=\"concurrent-instances\" max=\"" +
-                                actualMax + "\" />";
-                        xmlOverrides.append(codec);
-                        xmlOverrides.append("\n");
-                        xmlOverrides.append(limit);
-                        xmlOverrides.append("\n");
-                        xmlOverrides.append("</MediaCodec>\n");
-                    }
+                int actualMax = getActualMax(
+                        info.isEncoder(), info.getName(), types[j], caps, MAX_INSTANCES);
+                Log.d(TAG, "actualMax " + actualMax + " vs reported max " + max);
+                if (actualMax < (int)(max * 0.9) || actualMax > (int) Math.ceil(max * 1.1)) {
+                    String codec = "<MediaCodec name=\"" + info.getName() +
+                            "\" type=\"" + types[j] + "\" >";
+                    String limit = "    <Limit name=\"concurrent-instances\" max=\"" +
+                            actualMax + "\" />";
+                    xmlOverrides.append(codec);
+                    xmlOverrides.append("\n");
+                    xmlOverrides.append(limit);
+                    xmlOverrides.append("\n");
+                    xmlOverrides.append("</MediaCodec>\n");
                 }
             }
         }
diff --git a/tests/tests/media/src/android/media/cts/MediaRandomTest.java b/tests/tests/media/src/android/media/cts/MediaRandomTest.java
index 7b49a37..e928a8f 100644
--- a/tests/tests/media/src/android/media/cts/MediaRandomTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaRandomTest.java
@@ -282,6 +282,11 @@
 
             final int[] width  = {176, 352, 320, 640, 1280, 1920};
             final int[] height = {144, 288, 240, 480,  720, 1080};
+            final int[] audioSource = {
+                    MediaRecorder.AudioSource.DEFAULT,
+                    MediaRecorder.AudioSource.MIC,
+                    MediaRecorder.AudioSource.CAMCORDER,
+            };
 
             watchdog.start();
             for (int i = 0; i < NUMBER_OF_RECORDER_RANDOM_ACTIONS; i++) {
@@ -292,9 +297,14 @@
                 mParam = (int)(r.nextInt(1000000));
                 try {
                     switch (mAction) {
-                    case 0:
-                        mRecorder.setAudioSource(mParam % 3);
+                    case 0: {
+                        // We restrict the audio sources because setting some sources
+                        // may cause 2+ second delays because the input device may
+                        // retry - loop (e.g. VOICE_UPLINK for voice call to be initiated).
+                        final int index = mParam % audioSource.length;
+                        mRecorder.setAudioSource(audioSource[index]);
                         break;
+                    }
                     case 1:
                         // XXX:
                         // Fix gralloc source and change
diff --git a/tests/tests/media/src/android/media/cts/MediaRecorderTest.java b/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
index b6ee1db..f7b6c91 100644
--- a/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaRecorderTest.java
@@ -22,6 +22,7 @@
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.hardware.Camera;
+import android.media.CamcorderProfile;
 import android.media.EncoderCapabilities;
 import android.media.MediaCodec;
 import android.media.MediaFormat;
@@ -174,13 +175,27 @@
     }
 
     public void testRecorderCamera() throws Exception {
+        int width;
+        int height;
+        Camera camera = null;
         if (!hasCamera()) {
             return;
         }
+        // Try to get camera profile for QUALITY_LOW; if unavailable,
+        // set the video size to default value.
+        CamcorderProfile profile = CamcorderProfile.get(
+                0 /* cameraId */, CamcorderProfile.QUALITY_LOW);
+        if (profile != null) {
+            width = profile.videoFrameWidth;
+            height = profile.videoFrameHeight;
+        } else {
+            width = VIDEO_WIDTH;
+            height = VIDEO_HEIGHT;
+        }
         mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
         mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
         mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
-        mMediaRecorder.setVideoSize(VIDEO_WIDTH, VIDEO_HEIGHT);
+        mMediaRecorder.setVideoSize(width, height);
         mMediaRecorder.setVideoEncodingBitRate(VIDEO_BIT_RATE_IN_BPS);
         mMediaRecorder.setPreviewDisplay(mActivity.getSurfaceHolder().getSurface());
         mMediaRecorder.prepare();
diff --git a/tests/tests/media/src/android/media/cts/MediaSessionTest.java b/tests/tests/media/src/android/media/cts/MediaSessionTest.java
index 78ad1f9..3ebe6e4 100644
--- a/tests/tests/media/src/android/media/cts/MediaSessionTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaSessionTest.java
@@ -26,6 +26,7 @@
 import android.media.VolumeProvider;
 import android.media.session.MediaController;
 import android.media.session.MediaSession;
+import android.media.session.MediaSession.QueueItem;
 import android.media.session.PlaybackState;
 import android.os.Bundle;
 import android.os.Handler;
@@ -165,8 +166,8 @@
 
             // test setQueue and setQueueTitle
             mCallback.resetLocked();
-            List<MediaSession.QueueItem> queue = new ArrayList<MediaSession.QueueItem>();
-            MediaSession.QueueItem item = new MediaSession.QueueItem(new MediaDescription.Builder()
+            List<QueueItem> queue = new ArrayList<>();
+            QueueItem item = new QueueItem(new MediaDescription.Builder()
                     .setMediaId(TEST_VALUE).setTitle("title").build(), TEST_QUEUE_ID);
             queue.add(item);
             mSession.setQueue(queue);
@@ -289,6 +290,23 @@
         }
     }
 
+    /**
+     * Tests MediaSession.QueueItem.
+     */
+    public void testQueueItem() {
+        QueueItem item = new QueueItem(new MediaDescription.Builder()
+                .setMediaId("media-id").setTitle("title").build(), TEST_QUEUE_ID);
+        assertEquals(TEST_QUEUE_ID, item.getQueueId());
+        assertEquals("media-id", item.getDescription().getMediaId());
+        assertEquals("title", item.getDescription().getTitle());
+
+        Parcel p = Parcel.obtain();
+        item.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        QueueItem other = QueueItem.CREATOR.createFromParcel(p);
+        assertEquals(item.toString(), other.toString());
+        p.recycle();
+    }
 
     /**
      * Verifies that a new session hasn't had any configuration bits set yet.
@@ -334,7 +352,7 @@
 
         private volatile PlaybackState mPlaybackState;
         private volatile MediaMetadata mMediaMetadata;
-        private volatile List<MediaSession.QueueItem> mQueue;
+        private volatile List<QueueItem> mQueue;
         private volatile CharSequence mTitle;
         private volatile String mEvent;
         private volatile Bundle mExtras;
@@ -377,7 +395,7 @@
         }
 
         @Override
-        public void onQueueChanged(List<MediaSession.QueueItem> queue) {
+        public void onQueueChanged(List<QueueItem> queue) {
             synchronized (mWaitLock) {
                 mOnQueueChangedCalled = true;
                 mQueue = queue;
diff --git a/tests/tests/media/src/android/media/cts/MediaSyncTest.java b/tests/tests/media/src/android/media/cts/MediaSyncTest.java
index 41d8d89..c4fe4c1 100644
--- a/tests/tests/media/src/android/media/cts/MediaSyncTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaSyncTest.java
@@ -33,6 +33,8 @@
 import android.media.MediaTimestamp;
 import android.media.PlaybackParams;
 import android.media.SyncParams;
+import android.os.Handler;
+import android.os.HandlerThread;
 import android.test.ActivityInstrumentationTestCase2;
 import android.util.Log;
 import android.view.Surface;
@@ -56,7 +58,7 @@
     private static final String LOG_TAG = "MediaSyncTest";
 
     private final long NO_TIMESTAMP = -1;
-    private final int PLAYBACK_RATE_TOLERANCE_PERCENT = 2;
+    private final float FLOAT_PLAYBACK_RATE_TOLERANCE = .02f;
     private final long TIME_MEASUREMENT_TOLERANCE_US = 20000;
     final int INPUT_RESOURCE_ID =
             R.raw.video_480x360_mp4_h264_1350kbps_30fps_aac_stereo_192kbps_44100hz;
@@ -501,9 +503,9 @@
                     mediaDurationUs,
                     playTimeUs * playbackRate,
                     // sync.getTolerance() is MediaSync's tolerance of the playback rate, whereas
-                    // PLAYBACK_RATE_TOLERANCE_PERCENT / 100 is our test's tolerance.
+                    // FLOAT_PLAYBACK_RATE_TOLERANCE is our test's tolerance.
                     // We need to add both to get an upperbound for allowable error.
-                    mediaDurationUs * (sync.getTolerance() + PLAYBACK_RATE_TOLERANCE_PERCENT / 100.)
+                    mediaDurationUs * (sync.getTolerance() + FLOAT_PLAYBACK_RATE_TOLERANCE)
                             + TIME_MEASUREMENT_TOLERANCE_US);
         }
 
@@ -554,6 +556,9 @@
             }
         }
 
+        private HandlerThread mHandlerThread;
+        private Handler mHandler;
+
         Decoder(MediaSyncTest test, MediaSync sync, boolean isAudio) {
             mMediaSyncTest = test;
             mMediaSync = sync;
@@ -563,6 +568,10 @@
         public boolean setup(int inputResourceId, Surface surface, long lastBufferTimestampUs) {
             if (!mIsAudio) {
                 mSurface = surface;
+                // handle video callback in a separate thread as releaseOutputBuffer is blocking
+                mHandlerThread = new HandlerThread("SyncViewVidDec");
+                mHandlerThread.start();
+                mHandler = new Handler(mHandlerThread.getLooper());
             }
             mLastBufferTimestampUs = lastBufferTimestampUs;
             try {
@@ -581,7 +590,7 @@
                 }
                 mDecoder = MediaCodec.createDecoderByType(mimeType);
                 mDecoder.configure(mediaFormat, mSurface, null, 0);
-                mDecoder.setCallback(this);
+                mDecoder.setCallback(this, mHandler);
 
                 return true;
             } catch (IOException e) {
diff --git a/tests/tests/media/src/android/media/cts/MidiSoloTest.java b/tests/tests/media/src/android/media/cts/MidiSoloTest.java
index 4c1a5e8..d198ee8 100644
--- a/tests/tests/media/src/android/media/cts/MidiSoloTest.java
+++ b/tests/tests/media/src/android/media/cts/MidiSoloTest.java
@@ -97,9 +97,7 @@
         MidiManager.DeviceCallback callback = new MidiManager.DeviceCallback();
 
         // These should not crash.
-        midiManager.unregisterDeviceCallback(null);
         midiManager.unregisterDeviceCallback(callback);
-        midiManager.registerDeviceCallback(null, null);
         midiManager.registerDeviceCallback(callback, null);
         midiManager.unregisterDeviceCallback(callback);
         midiManager.registerDeviceCallback(callback, new Handler(Looper.getMainLooper()));
@@ -107,9 +105,6 @@
         midiManager.unregisterDeviceCallback(callback);
         midiManager.unregisterDeviceCallback(callback);
         midiManager.unregisterDeviceCallback(callback);
-        midiManager.registerDeviceCallback(null, new Handler(Looper.getMainLooper()));
-        midiManager.unregisterDeviceCallback(callback);
-        midiManager.unregisterDeviceCallback(null);
     }
 
     public void testMidiReceiver() throws Exception {
diff --git a/tests/tests/media/src/android/media/cts/ResourceManagerStubActivity.java b/tests/tests/media/src/android/media/cts/ResourceManagerStubActivity.java
index d453e3f..5595800 100644
--- a/tests/tests/media/src/android/media/cts/ResourceManagerStubActivity.java
+++ b/tests/tests/media/src/android/media/cts/ResourceManagerStubActivity.java
@@ -28,6 +28,27 @@
     private int[] mRequestCodes = {0, 1};
     private boolean[] mResults = {false, false};
     private int mNumResults = 0;
+    private int mType1 = ResourceManagerTestActivityBase.TYPE_NONSECURE;
+    private int mType2 = ResourceManagerTestActivityBase.TYPE_NONSECURE;
+    private boolean mWaitForReclaim = true;
+
+    private static final String ERROR_INSUFFICIENT_RESOURCES =
+            "* Please check if the omx component is returning OMX_ErrorInsufficientResources " +
+            "properly when the codec failure is due to insufficient resource.\n";
+    private static final String ERROR_SUPPORTS_MULTIPLE_SECURE_CODECS =
+            "* Please check if this platform supports multiple concurrent secure codec " +
+            "instances. If not, please add below setting in /etc/media_codecs.xml in order " +
+            "to pass the test:\n" +
+            "    <Settings>\n" +
+            "       <Setting name=\"supports-multiple-secure-codecs\" value=\"false\" />\n" +
+            "    </Settings>\n";
+    private static final String ERROR_SUPPORTS_SECURE_WITH_NON_SECURE_CODEC =
+            "* Please check if this platform supports co-exist of secure and non-secure codec. " +
+            "If not, please add below setting in /etc/media_codecs.xml in order to pass the " +
+            "test:\n" +
+            "    <Settings>\n" +
+            "       <Setting name=\"supports-secure-with-non-secure-codec\" value=\"false\" />\n" +
+            "    </Settings>\n";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -36,7 +57,7 @@
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        Log.d(TAG, "Activity " + requestCode + " finished.");
+        Log.d(TAG, "Activity " + requestCode + " finished with resultCode " + resultCode);
         mResults[requestCode] = (resultCode == RESULT_OK);
         if (++mNumResults == mResults.length) {
             synchronized (mFinishEvent) {
@@ -45,17 +66,28 @@
         }
     }
 
-    public boolean testReclaimResource() throws InterruptedException {
+    public void testReclaimResource(int type1, int type2) throws InterruptedException {
+        mType1 = type1;
+        mType2 = type2;
+        if (type1 != ResourceManagerTestActivityBase.TYPE_MIX && type1 != type2) {
+            // in this case, activity2 may not need to reclaim codec from activity1.
+            mWaitForReclaim = false;
+        } else {
+            mWaitForReclaim = true;
+        }
         Thread thread = new Thread() {
             @Override
             public void run() {
                 try {
                     Context context = getApplicationContext();
                     Intent intent1 = new Intent(context, ResourceManagerTestActivity1.class);
+                    intent1.putExtra("test-type", mType1);
+                    intent1.putExtra("wait-for-reclaim", mWaitForReclaim);
                     startActivityForResult(intent1, mRequestCodes[0]);
                     Thread.sleep(5000);  // wait for process to launch and allocate all codecs.
 
                     Intent intent2 = new Intent(context, ResourceManagerTestActivity2.class);
+                    intent2.putExtra("test-type", mType2);
                     startActivityForResult(intent2, mRequestCodes[1]);
 
                     synchronized (mFinishEvent) {
@@ -67,11 +99,30 @@
             }
         };
         thread.start();
-        thread.join(10000);
+        thread.join(20000 /* millis */);
+        System.gc();
+        Thread.sleep(5000);  // give the gc a chance to release test activities.
 
+        boolean result = true;
         for (int i = 0; i < mResults.length; ++i) {
-            Assert.assertTrue("Result from activity " + i + " is a fail.", mResults[i]);
+            if (!mResults[i]) {
+                Log.e(TAG, "Result from activity " + i + " is a fail.");
+                result = false;
+                break;
+            }
         }
-        return true;
+        if (!result) {
+            String failMessage = "The potential reasons for the failure:\n";
+            StringBuilder reasons = new StringBuilder();
+            reasons.append(ERROR_INSUFFICIENT_RESOURCES);
+            if (mType1 != mType2) {
+                reasons.append(ERROR_SUPPORTS_SECURE_WITH_NON_SECURE_CODEC);
+            }
+            if (mType1 == ResourceManagerTestActivityBase.TYPE_MIX &&
+                    mType2 == ResourceManagerTestActivityBase.TYPE_SECURE) {
+                reasons.append(ERROR_SUPPORTS_MULTIPLE_SECURE_CODECS);
+            }
+            Assert.assertTrue(failMessage + reasons.toString(), result);
+        }
     }
 }
diff --git a/tests/tests/media/src/android/media/cts/ResourceManagerTest.java b/tests/tests/media/src/android/media/cts/ResourceManagerTest.java
index 5170aac..7305651 100644
--- a/tests/tests/media/src/android/media/cts/ResourceManagerTest.java
+++ b/tests/tests/media/src/android/media/cts/ResourceManagerTest.java
@@ -26,11 +26,41 @@
         super("com.android.cts.media", ResourceManagerStubActivity.class);
     }
 
-    public void testReclaimResource() throws Exception {
+    private void doTestReclaimResource(int type1, int type2) throws Exception {
         Bundle extras = new Bundle();
         ResourceManagerStubActivity activity = launchActivity(
                 "com.android.cts.media", ResourceManagerStubActivity.class, extras);
-        activity.testReclaimResource();
+        activity.testReclaimResource(type1, type2);
         activity.finish();
     }
+
+    public void testReclaimResourceNonsecureVsNonsecure() throws Exception {
+        doTestReclaimResource(ResourceManagerTestActivityBase.TYPE_NONSECURE,
+                ResourceManagerTestActivityBase.TYPE_NONSECURE);
+    }
+
+    public void testReclaimResourceNonsecureVsSecure() throws Exception {
+        doTestReclaimResource(ResourceManagerTestActivityBase.TYPE_NONSECURE,
+                ResourceManagerTestActivityBase.TYPE_SECURE);
+    }
+
+    public void testReclaimResourceSecureVsNonsecure() throws Exception {
+        doTestReclaimResource(ResourceManagerTestActivityBase.TYPE_SECURE,
+                ResourceManagerTestActivityBase.TYPE_NONSECURE);
+    }
+
+    public void testReclaimResourceSecureVsSecure() throws Exception {
+        doTestReclaimResource(ResourceManagerTestActivityBase.TYPE_SECURE,
+                ResourceManagerTestActivityBase.TYPE_SECURE);
+    }
+
+    public void testReclaimResourceMixVsNonsecure() throws Exception {
+        doTestReclaimResource(ResourceManagerTestActivityBase.TYPE_MIX,
+                ResourceManagerTestActivityBase.TYPE_NONSECURE);
+    }
+
+    public void testReclaimResourceMixVsSecure() throws Exception {
+        doTestReclaimResource(ResourceManagerTestActivityBase.TYPE_MIX,
+                ResourceManagerTestActivityBase.TYPE_SECURE);
+    }
 }
diff --git a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity1.java b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity1.java
index aff3f03..a11d773 100644
--- a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity1.java
+++ b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity1.java
@@ -31,12 +31,16 @@
         super.onCreate(savedInstanceState);
         moveTaskToBack(true);
 
-        if (allocateCodecs(MAX_INSTANCES) == MAX_INSTANCES) {
-            // haven't reached the limit with MAX_INSTANCES, report RESULT_OK directly and
-            // skip additional test.
-            setResult(Activity.RESULT_OK);
-            finish();
+        Bundle extras = getIntent().getExtras();
+        if (extras != null) {
+            mWaitForReclaim = extras.getBoolean("wait-for-reclaim", mWaitForReclaim);
         }
+
+        if (allocateCodecs(MAX_INSTANCES) == MAX_INSTANCES) {
+            // haven't reached the limit with MAX_INSTANCES, no need to wait for reclaim exception.
+            mWaitForReclaim = false;
+        }
+
         useCodecs();
     }
 }
diff --git a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity2.java b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity2.java
index f4c57f5..79d0d2d 100644
--- a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity2.java
+++ b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivity2.java
@@ -28,9 +28,7 @@
         Log.d(TAG, "onCreate called.");
         super.onCreate(savedInstanceState);
 
-        if (allocateCodecs(1) == 1) {
-          setResult(Activity.RESULT_OK);
-          finish();
-        }
+        int result = (allocateCodecs(1 /* max */) == 1) ? RESULT_OK : RESULT_CANCELED;
+        finishWithResult(result);
     }
 }
diff --git a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java
index 9c48fc4..689babb 100644
--- a/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java
+++ b/tests/tests/media/src/android/media/cts/ResourceManagerTestActivityBase.java
@@ -29,7 +29,12 @@
 import java.util.Vector;
 
 public class ResourceManagerTestActivityBase extends Activity {
+    public static final int TYPE_NONSECURE = 0;
+    public static final int TYPE_SECURE = 1;
+    public static final int TYPE_MIX = 2;
+
     protected String TAG;
+    private static final int FRAME_RATE = 10;
     private static final int IFRAME_INTERVAL = 10;  // 10 seconds between I-frames
     private static final String MIME = MediaFormat.MIMETYPE_VIDEO_AVC;
 
@@ -60,27 +65,26 @@
 
     private MediaCodec.Callback mCallback = new TestCodecCallback();
 
-    private static MediaFormat getTestFormat(VideoCapabilities vcaps) {
-        int maxWidth = vcaps.getSupportedWidths().getUpper();
-        int maxHeight = vcaps.getSupportedHeightsFor(maxWidth).getUpper();
-        int maxBitrate = vcaps.getBitrateRange().getUpper();
-        int maxFramerate = vcaps.getSupportedFrameRatesFor(maxWidth, maxHeight)
-                .getUpper().intValue();
+    private MediaFormat getTestFormat(CodecCapabilities caps, boolean securePlayback) {
+        VideoCapabilities vcaps = caps.getVideoCapabilities();
+        int width = vcaps.getSupportedWidths().getLower();
+        int height = vcaps.getSupportedHeightsFor(width).getLower();
+        int bitrate = vcaps.getBitrateRange().getLower();
 
-        MediaFormat format = MediaFormat.createVideoFormat(MIME, maxWidth, maxHeight);
-        format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
-                CodecCapabilities.COLOR_FormatYUV420Flexible);
-        format.setInteger(MediaFormat.KEY_BIT_RATE, maxBitrate);
-        format.setInteger(MediaFormat.KEY_FRAME_RATE, maxFramerate);
+        MediaFormat format = MediaFormat.createVideoFormat(MIME, width, height);
+        format.setInteger(MediaFormat.KEY_COLOR_FORMAT, caps.colorFormats[0]);
+        format.setInteger(MediaFormat.KEY_BIT_RATE, bitrate);
+        format.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
         format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL);
+        format.setFeatureEnabled(CodecCapabilities.FEATURE_SecurePlayback, securePlayback);
         return format;
     }
 
-    private MediaCodecInfo getTestCodecInfo() {
+    private MediaCodecInfo getTestCodecInfo(boolean securePlayback) {
         // Use avc decoder for testing.
         boolean isEncoder = false;
 
-        MediaCodecList mcl = new MediaCodecList(MediaCodecList.REGULAR_CODECS);
+        MediaCodecList mcl = new MediaCodecList(MediaCodecList.ALL_CODECS);
         for (MediaCodecInfo info : mcl.getCodecInfos()) {
             if (info.isEncoder() != isEncoder) {
                 continue;
@@ -88,6 +92,17 @@
             CodecCapabilities caps;
             try {
                 caps = info.getCapabilitiesForType(MIME);
+                boolean securePlaybackSupported =
+                        caps.isFeatureSupported(CodecCapabilities.FEATURE_SecurePlayback);
+                boolean securePlaybackRequired =
+                        caps.isFeatureRequired(CodecCapabilities.FEATURE_SecurePlayback);
+                if ((securePlayback && securePlaybackSupported) ||
+                        (!securePlayback && !securePlaybackRequired) ) {
+                    Log.d(TAG, "securePlayback " + securePlayback + " will use " + info.getName());
+                } else {
+                    Log.d(TAG, "securePlayback " + securePlayback + " skip " + info.getName());
+                    continue;
+                }
             } catch (IllegalArgumentException e) {
                 // mime is not supported
                 continue;
@@ -99,25 +114,62 @@
     }
 
     protected int allocateCodecs(int max) {
-        MediaCodecInfo info = getTestCodecInfo();
-        if (info == null) {
-            // skip the test
-            return 0;
+        Bundle extras = getIntent().getExtras();
+        int type = TYPE_NONSECURE;
+        if (extras != null) {
+            type = extras.getInt("test-type", type);
+            Log.d(TAG, "type is: " + type);
         }
 
+        boolean shouldSkip = false;
+        boolean securePlayback;
+        if (type == TYPE_NONSECURE || type == TYPE_MIX) {
+            securePlayback = false;
+            MediaCodecInfo info = getTestCodecInfo(securePlayback);
+            if (info != null) {
+                allocateCodecs(max, info, securePlayback);
+            } else {
+                shouldSkip = true;
+            }
+        }
+
+        if (!shouldSkip) {
+            if (type == TYPE_SECURE || type == TYPE_MIX) {
+                securePlayback = true;
+                MediaCodecInfo info = getTestCodecInfo(securePlayback);
+                if (info != null) {
+                    allocateCodecs(max, info, securePlayback);
+                } else {
+                    shouldSkip = true;
+                }
+            }
+        }
+
+        if (shouldSkip) {
+            Log.d(TAG, "test skipped as there's no supported codec.");
+            finishWithResult(RESULT_OK);
+        }
+
+        Log.d(TAG, "allocateCodecs returned " + mCodecs.size());
+        return mCodecs.size();
+    }
+
+    protected void allocateCodecs(int max, MediaCodecInfo info, boolean securePlayback) {
         String name = info.getName();
-        VideoCapabilities vcaps = info.getCapabilitiesForType(MIME).getVideoCapabilities();
-        MediaFormat format = getTestFormat(vcaps);
-        for (int i = 0; i < max; ++i) {
+        CodecCapabilities caps = info.getCapabilitiesForType(MIME);
+        MediaFormat format = getTestFormat(caps, securePlayback);
+        MediaCodec codec = null;
+        for (int i = mCodecs.size(); i < max; ++i) {
             try {
                 Log.d(TAG, "Create codec " + name + " #" + i);
-                MediaCodec codec = MediaCodec.createByCodecName(name);
+                codec = MediaCodec.createByCodecName(name);
                 codec.setCallback(mCallback);
                 Log.d(TAG, "Configure codec " + format);
                 codec.configure(format, null, null, 0);
                 Log.d(TAG, "Start codec " + format);
                 codec.start();
                 mCodecs.add(codec);
+                codec = null;
             } catch (IllegalArgumentException e) {
                 Log.d(TAG, "IllegalArgumentException " + e.getMessage());
                 break;
@@ -127,10 +179,25 @@
             } catch (MediaCodec.CodecException e) {
                 Log.d(TAG, "CodecException 0x" + Integer.toHexString(e.getErrorCode()));
                 break;
+            } finally {
+                if (codec != null) {
+                    Log.d(TAG, "release codec");
+                    codec.release();
+                    codec = null;
+                }
             }
         }
+    }
 
-        return mCodecs.size();
+    protected void finishWithResult(int result) {
+        for (int i = 0; i < mCodecs.size(); ++i) {
+            Log.d(TAG, "release codec #" + i);
+            mCodecs.get(i).release();
+        }
+        mCodecs.clear();
+        setResult(result);
+        finish();
+        Log.d(TAG, "activity finished");
     }
 
     private void doUseCodecs() {
@@ -144,20 +211,38 @@
             if (e.getErrorCode() == MediaCodec.CodecException.ERROR_RECLAIMED) {
                 Log.d(TAG, "Remove codec " + current + " from the list");
                 mCodecs.remove(current);
-                setResult(Activity.RESULT_OK);
-                finish();
+                mGotReclaimedException = true;
+                mUseCodecs = false;
             }
             return;
         }
     }
 
+    protected boolean mWaitForReclaim = true;
     private Thread mWorkerThread;
+    private volatile boolean mUseCodecs = true;
+    private volatile boolean mGotReclaimedException = false;
     protected void useCodecs() {
         mWorkerThread = new Thread(new Runnable() {
             @Override
             public void run() {
-                while (true) {
+                long start = System.currentTimeMillis();
+                long timeSinceStartedMs = 0;
+                while (mUseCodecs && (timeSinceStartedMs < 15000)) {  // timeout in 15s
                     doUseCodecs();
+                    try {
+                        Thread.sleep(50 /* millis */);
+                    } catch (InterruptedException e) {}
+                    timeSinceStartedMs = System.currentTimeMillis() - start;
+                }
+                if (mGotReclaimedException) {
+                    Log.d(TAG, "Got expected reclaim exception.");
+                    finishWithResult(RESULT_OK);
+                } else {
+                    Log.d(TAG, "Stopped without getting reclaim exception.");
+                    // if the test is supposed to wait for reclaim event then this is a failure,
+                    // otherwise this is a pass.
+                    finishWithResult(mWaitForReclaim ? RESULT_CANCELED : RESULT_OK);
                 }
             }
         });
@@ -168,9 +253,5 @@
     protected void onDestroy() {
         Log.d(TAG, "onDestroy called.");
         super.onDestroy();
-
-        for (int i = 0; i < mCodecs.size(); ++i) {
-            mCodecs.get(i).release();
-        }
     }
 }
diff --git a/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java b/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java
index bf47a27..4693036 100644
--- a/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java
+++ b/tests/tests/media/src/android/media/cts/RingtoneManagerTest.java
@@ -55,6 +55,7 @@
         mActivity = getActivity();
         mInstrumentation = getInstrumentation();
         mContext = mInstrumentation.getContext();
+        Utils.enableAppOps(mContext.getPackageName(), "android:write_settings", mInstrumentation);
         mRingtoneManager = new RingtoneManager(mActivity);
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
         // backup ringer settings
@@ -74,6 +75,7 @@
         }
         RingtoneManager.setActualDefaultRingtoneUri(mContext, RingtoneManager.TYPE_RINGTONE,
                 mDefaultUri);
+        Utils.disableAppOps(mContext.getPackageName(), "android:write_settings", mInstrumentation);
         super.tearDown();
     }
 
diff --git a/tests/tests/media/src/android/media/cts/RingtoneTest.java b/tests/tests/media/src/android/media/cts/RingtoneTest.java
index f5218e3..3527b1a 100644
--- a/tests/tests/media/src/android/media/cts/RingtoneTest.java
+++ b/tests/tests/media/src/android/media/cts/RingtoneTest.java
@@ -16,6 +16,7 @@
 
 package android.media.cts;
 
+import android.app.UiAutomation;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.media.AudioManager;
@@ -23,10 +24,10 @@
 import android.media.RingtoneManager;
 import android.net.Uri;
 import android.provider.Settings;
-import android.test.AndroidTestCase;
+import android.test.InstrumentationTestCase;
 import android.util.Log;
 
-public class RingtoneTest extends AndroidTestCase {
+public class RingtoneTest extends InstrumentationTestCase {
     private static final String TAG = "RingtoneTest";
 
     private Context mContext;
@@ -40,7 +41,8 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        mContext = getContext();
+        enableAppOps();
+        mContext = getInstrumentation().getContext();
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
         mRingtone = RingtoneManager.getRingtone(mContext, Settings.System.DEFAULT_RINGTONE_URI);
         // backup ringer settings
@@ -58,6 +60,18 @@
                 RingtoneManager.TYPE_RINGTONE);
     }
 
+    private void enableAppOps() {
+        StringBuilder cmd = new StringBuilder();
+        cmd.append("appops set ");
+        cmd.append(getInstrumentation().getContext().getPackageName());
+        cmd.append(" android:write_settings allow");
+        getInstrumentation().getUiAutomation().executeShellCommand(cmd.toString());
+        try {
+            Thread.sleep(2200);
+        } catch (InterruptedException e) {
+        }
+    }
+
     @Override
     protected void tearDown() throws Exception {
         // restore original settings
@@ -76,7 +90,7 @@
     }
 
     private boolean hasAudioOutput() {
-        return getContext().getPackageManager()
+        return getInstrumentation().getContext().getPackageManager()
             .hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT);
     }
 
diff --git a/tests/tests/media/src/android/media/cts/Utils.java b/tests/tests/media/src/android/media/cts/Utils.java
new file mode 100644
index 0000000..bb9cf78
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/Utils.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.media.cts;
+
+import android.app.Instrumentation;
+import android.app.UiAutomation;
+import android.os.ParcelFileDescriptor;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Scanner;
+
+public class Utils {
+    public static void enableAppOps(String packageName, String operation,
+            Instrumentation instrumentation) {
+        setAppOps(packageName, operation, instrumentation, true);
+    }
+
+    public static void disableAppOps(String packageName, String operation,
+            Instrumentation instrumentation) {
+        setAppOps(packageName, operation, instrumentation, false);
+    }
+
+    public static String convertStreamToString(InputStream is) {
+        try (Scanner scanner = new Scanner(is).useDelimiter("\\A")) {
+            return scanner.hasNext() ? scanner.next() : "";
+        }
+    }
+
+    private static void setAppOps(String packageName, String operation,
+            Instrumentation instrumentation, boolean enable) {
+        StringBuilder cmd = new StringBuilder();
+        cmd.append("appops set ");
+        cmd.append(packageName);
+        cmd.append(" ");
+        cmd.append(operation);
+        cmd.append(enable ? " allow" : " deny");
+        instrumentation.getUiAutomation().executeShellCommand(cmd.toString());
+
+        StringBuilder query = new StringBuilder();
+        query.append("appops get ");
+        query.append(packageName);
+        query.append(" ");
+        query.append(operation);
+        String queryStr = query.toString();
+
+        String expectedResult = enable ? "allow" : "deny";
+        String result = "";
+        while(!result.contains(expectedResult)) {
+            ParcelFileDescriptor pfd = instrumentation.getUiAutomation().executeShellCommand(
+                                                            queryStr);
+            InputStream inputStream = new FileInputStream(pfd.getFileDescriptor());
+            result = convertStreamToString(inputStream);
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/VideoDecoderPerfTest.java b/tests/tests/media/src/android/media/cts/VideoDecoderPerfTest.java
index 54024f7..f5680f6 100644
--- a/tests/tests/media/src/android/media/cts/VideoDecoderPerfTest.java
+++ b/tests/tests/media/src/android/media/cts/VideoDecoderPerfTest.java
@@ -27,22 +27,26 @@
 import android.media.MediaCodecList;
 import android.media.MediaCodecInfo;
 import android.media.MediaCodecInfo.CodecCapabilities;
+import android.media.MediaCodecInfo.VideoCapabilities;
 import android.media.MediaExtractor;
 import android.media.MediaFormat;
 import android.util.Log;
+import android.util.Range;
 import android.view.Surface;
 
-import com.android.cts.util.ReportLog;
 import com.android.cts.util.ResultType;
 import com.android.cts.util.ResultUnit;
+import com.android.cts.util.Stat;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.ArrayList;
+import java.util.LinkedList;
 
 public class VideoDecoderPerfTest extends MediaPlayerTestBase {
     private static final String TAG = "VideoDecoderPerfTest";
     private static final int TOTAL_FRAMES = 3000;
+    private static final int MAX_TIME_MS = 120000;  // 2 minutes
     private static final int NUMBER_OF_REPEAT = 2;
     private static final String VIDEO_AVC = MediaFormat.MIMETYPE_VIDEO_AVC;
     private static final String VIDEO_VP8 = MediaFormat.MIMETYPE_VIDEO_VP8;
@@ -51,20 +55,35 @@
     private static final String VIDEO_H263 = MediaFormat.MIMETYPE_VIDEO_H263;
     private static final String VIDEO_MPEG4 = MediaFormat.MIMETYPE_VIDEO_MPEG4;
 
+    private static final int MAX_SIZE_SAMPLES_IN_MEMORY_BYTES = 5 * 1024 * 1024;  // 5MB
+    LinkedList<ByteBuffer> mSamplesInMemory = new LinkedList<ByteBuffer>();
+    private static final int MOVING_AVERAGE_NUM = 10;
+    private MediaFormat mDecOutputFormat;
+    private double[] mMeasuredFps;
+    private String[] mResultRawData;
+
     private Resources mResources;
-    private DeviceReportLog mReportLog = new DeviceReportLog();
+    private DeviceReportLog mReportLog;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         mResources = mContext.getResources();
+        mReportLog = new DeviceReportLog();
     }
 
-    private static String[] getDecoderName(String mime) {
+    @Override
+    protected void tearDown() throws Exception {
+        mReportLog.deliverReportToHost(getInstrumentation());
+        super.tearDown();
+    }
+
+    private static String[] getDecoderName(String mime, boolean isGoog) {
         MediaCodecList mcl = new MediaCodecList(MediaCodecList.REGULAR_CODECS);
         ArrayList<String> result = new ArrayList<String>();
         for (MediaCodecInfo info : mcl.getCodecInfos()) {
-            if (info.isEncoder()) {
+            if (info.isEncoder() ||
+                    info.getName().toLowerCase().startsWith("omx.google.") != isGoog) {
                 continue;
             }
             CodecCapabilities caps = null;
@@ -78,43 +97,94 @@
         return result.toArray(new String[result.size()]);
     }
 
-    private void decode(String mime, int video, int width, int height) throws Exception {
-        String[] names = getDecoderName(mime);
+    private void decode(String mime, int video, int width, int height,
+            boolean isGoog) throws Exception {
+        String[] names = getDecoderName(mime, isGoog);
         for (String name: names) {
             if (!MediaUtils.supports(name, mime, width, height)) {
                 Log.i(TAG, "Codec " + name + " with " + width + "," + height + " not supported");
                 continue;
             }
 
+            boolean pass = false;
+            mMeasuredFps = new double[NUMBER_OF_REPEAT];
+            mResultRawData = new String[NUMBER_OF_REPEAT];
             Log.d(TAG, "testing " + name);
             for (int i = 0; i < NUMBER_OF_REPEAT; ++i) {
                 // Decode to Surface.
                 Log.d(TAG, "round #" + i + " decode to surface");
                 Surface s = getActivity().getSurfaceHolder().getSurface();
-                doDecode(name, video, TOTAL_FRAMES, s);
+                // only verify the result for decode to surface case.
+                if (doDecode(name, video, width, height, s, i)) {
+                    pass = true;
+                }
 
                 // Decode to buffer.
                 Log.d(TAG, "round #" + i + " decode to buffer");
-                doDecode(name, video, TOTAL_FRAMES, null);
+                doDecode(name, video, width, height, null, i);
             }
+
+            if (!pass) {
+                Range<Double> reportedRange =
+                    MediaUtils.getAchievableFrameRatesFor(name, mime, width, height);
+                String failMessage =
+                    MediaUtils.getErrorMessage(reportedRange, mMeasuredFps, mResultRawData);
+                fail(failMessage);
+            }
+            mMeasuredFps = null;
+            mResultRawData = null;
         }
+        // use 0 for summary line, detail for each test config is in the report.
+        mReportLog.printSummary("average fps", 0, ResultType.HIGHER_BETTER, ResultUnit.FPS);
+        mSamplesInMemory.clear();
     }
 
-    private void doDecode(String name, int video, int stopAtSample, Surface surface)
+    private boolean doDecode(String name, int video, int w, int h, Surface surface, int round)
             throws Exception {
         AssetFileDescriptor testFd = mResources.openRawResourceFd(video);
         MediaExtractor extractor = new MediaExtractor();
         extractor.setDataSource(testFd.getFileDescriptor(), testFd.getStartOffset(),
                 testFd.getLength());
         extractor.selectTrack(0);
-
         int trackIndex = extractor.getSampleTrackIndex();
         MediaFormat format = extractor.getTrackFormat(trackIndex);
         String mime = format.getString(MediaFormat.KEY_MIME);
         ByteBuffer[] codecInputBuffers;
         ByteBuffer[] codecOutputBuffers;
 
+        if (mSamplesInMemory.size() == 0) {
+            int totalMemory = 0;
+            ByteBuffer tmpBuf = ByteBuffer.allocate(w * h * 3 / 2);
+            int sampleSize = 0;
+            int index = 0;
+            while ((sampleSize = extractor.readSampleData(tmpBuf, 0 /* offset */)) > 0) {
+                if (totalMemory + sampleSize > MAX_SIZE_SAMPLES_IN_MEMORY_BYTES) {
+                    break;
+                }
+                ByteBuffer copied = ByteBuffer.allocate(sampleSize);
+                copied.put(tmpBuf);
+                mSamplesInMemory.addLast(copied);
+                totalMemory += sampleSize;
+                extractor.advance();
+            }
+            Log.d(TAG, mSamplesInMemory.size() + " samples in memory for " +
+                    (totalMemory / 1024) + " KB.");
+        }
+        int sampleIndex = 0;
+
+        extractor.release();
+        testFd.close();
+
         MediaCodec codec = MediaCodec.createByCodecName(name);
+        VideoCapabilities cap = codec.getCodecInfo().getCapabilitiesForType(mime).getVideoCapabilities();
+        int frameRate = 120;
+        try {
+            frameRate = cap.getSupportedFrameRatesFor(w, h).getUpper().intValue();
+        } catch (IllegalArgumentException e) {
+            Log.w(TAG, "unsupported size");
+            codec.release();
+            return false;
+        }
         codec.configure(format, surface, null /* crypto */, 0 /* flags */);
         codec.start();
         codecInputBuffers = codec.getInputBuffers();
@@ -124,14 +194,12 @@
         MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
 
         final long kTimeOutUs = 5000; // 5ms timeout
-        long[] frameTimeDiff = new long[TOTAL_FRAMES - 1];
+        double[] frameTimeDiff = new double[TOTAL_FRAMES - 1];
         long lastOutputTimeNs = 0;
         boolean sawInputEOS = false;
         boolean sawOutputEOS = false;
         int inputNum = 0;
         int outputNum = 0;
-        int width = 0;
-        int height = 0;
         long start = System.currentTimeMillis();
         while (!sawOutputEOS) {
             // handle input
@@ -140,25 +208,21 @@
 
                 if (inputBufIndex >= 0) {
                     ByteBuffer dstBuf = codecInputBuffers[inputBufIndex];
+                    ByteBuffer sample =
+                            mSamplesInMemory.get(sampleIndex++ % mSamplesInMemory.size());
+                    sample.rewind();
+                    int sampleSize = sample.remaining();
+                    dstBuf.put(sample);
+                    // use 120fps to compute pts
+                    long presentationTimeUs = inputNum * 1000000L / frameRate;
 
-                    int sampleSize =
-                            extractor.readSampleData(dstBuf, 0 /* offset */);
-                    if (sampleSize < 0) {
-                        // repeat from beginning.
-                        extractor.release();
-                        extractor = new MediaExtractor();
-                        extractor.setDataSource(testFd.getFileDescriptor(), testFd.getStartOffset(),
-                                testFd.getLength());
-                        extractor.selectTrack(0);
-                        sampleSize =
-                            extractor.readSampleData(dstBuf, 0 /* offset */);
+                    sawInputEOS = (++inputNum == TOTAL_FRAMES);
+                    if (!sawInputEOS &&
+                            ((System.currentTimeMillis() - start) > MAX_TIME_MS)) {
+                        sawInputEOS = true;
                     }
-                    assert sampleSize >= 0:
-                        "extractor.readSampleData returns negative.";
-                    long presentationTimeUs = extractor.getSampleTime();
-                    if (++inputNum == stopAtSample) {
+                    if (sawInputEOS) {
                         Log.d(TAG, "saw input EOS (stop at sample).");
-                        sawInputEOS = true; // tag this sample as EOS
                     }
                     codec.queueInputBuffer(
                             inputBufIndex,
@@ -193,9 +257,9 @@
                 codecOutputBuffers = codec.getOutputBuffers();
                 Log.d(TAG, "output buffers have changed.");
             } else if (outputBufIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
-                MediaFormat oformat = codec.getOutputFormat();
-                width = oformat.getInteger(MediaFormat.KEY_WIDTH);
-                height = oformat.getInteger(MediaFormat.KEY_HEIGHT);
+                mDecOutputFormat = codec.getOutputFormat();
+                int width = mDecOutputFormat.getInteger(MediaFormat.KEY_WIDTH);
+                int height = mDecOutputFormat.getInteger(MediaFormat.KEY_HEIGHT);
                 Log.d(TAG, "output resolution " + width + "x" + height);
             } else {
                 assertEquals(
@@ -205,157 +269,300 @@
             }
         }
         long finish = System.currentTimeMillis();
-
+        int validDataNum = outputNum - 1;
+        frameTimeDiff = Arrays.copyOf(frameTimeDiff, validDataNum);
         codec.stop();
         codec.release();
 
-        extractor.release();
-        testFd.close();
-
         Log.d(TAG, "input num " + inputNum + " vs output num " + outputNum);
 
         String testConfig = "codec=" + name +
                 " decodeto=" + ((surface == null) ? "buffer" : "surface") +
-                " size=" + width + "x" + height;
+                " mime=" + mime + " round=" + round +
+                " DecOutputFormat=" + mDecOutputFormat;
 
         String message = "average fps for " + testConfig;
         double fps = (double)outputNum / ((finish - start) / 1000.0);
         mReportLog.printValue(message, fps, ResultType.HIGHER_BETTER, ResultUnit.FPS);
 
-        message = "frame time diff for " + testConfig + ": " + Arrays.toString(frameTimeDiff);
-        mReportLog.printValue(message, 0, ResultType.NEUTRAL, ResultUnit.NONE);
+        double[] avgs = MediaUtils.calculateMovingAverage(frameTimeDiff, MOVING_AVERAGE_NUM);
+        double decMin = Stat.getMin(avgs);
+        double decMax = Stat.getMax(avgs);
+        double decAvg = Stat.getAverage(avgs);
+        double decStdev = MediaUtils.getStdev(avgs);
+        String result =
+                MediaUtils.logResults(mReportLog, testConfig, decMin, decMax, decAvg, decStdev);
+        fps = 1000000000 / decMin;
+        if (surface != null) {
+            mMeasuredFps[round] = fps;
+            mResultRawData[round] = result;
+        }
+
+        return MediaUtils.verifyResults(name, mime, w, h, fps);
     }
 
-    public void testH264320x240() throws Exception {
+    public void testH2640320x0240Other() throws Exception {
         decode(VIDEO_AVC,
                R.raw.video_320x240_mp4_h264_800kbps_30fps_aac_stereo_128kbps_44100hz,
-               320, 240);
+               320, 240, false /* isGoog */);
     }
 
-    public void testH264720x480() throws Exception {
+    public void testH2640320x0240Goog() throws Exception {
+        decode(VIDEO_AVC,
+               R.raw.video_320x240_mp4_h264_800kbps_30fps_aac_stereo_128kbps_44100hz,
+               320, 240, true /* isGoog */);
+    }
+
+    public void testH2640720x0480Other() throws Exception {
         decode(VIDEO_AVC,
                R.raw.video_720x480_mp4_h264_2048kbps_30fps_aac_stereo_128kbps_44100hz,
-               720, 480);
+               720, 480, false /* isGoog */);
     }
 
-    public void testH2641280x720() throws Exception {
+    public void testH2640720x0480Goog() throws Exception {
+        decode(VIDEO_AVC,
+               R.raw.video_720x480_mp4_h264_2048kbps_30fps_aac_stereo_128kbps_44100hz,
+               720, 480, true /* isGoog */);
+    }
+
+    public void testH2641280x0720Other() throws Exception {
         decode(VIDEO_AVC,
                R.raw.video_1280x720_mp4_h264_8192kbps_30fps_aac_stereo_128kbps_44100hz,
-               1280, 720);
+               1280, 720, false /* isGoog */);
     }
 
-    public void testH2641920x1080() throws Exception {
+    public void testH2641280x0720Goog() throws Exception {
+        decode(VIDEO_AVC,
+               R.raw.video_1280x720_mp4_h264_8192kbps_30fps_aac_stereo_128kbps_44100hz,
+               1280, 720, true /* isGoog */);
+    }
+
+    public void testH2641920x1080Other() throws Exception {
         decode(VIDEO_AVC,
                R.raw.video_1920x1080_mp4_h264_20480kbps_30fps_aac_stereo_128kbps_44100hz,
-               1920, 1080);
+               1920, 1080, false /* isGoog */);
     }
 
-    public void testVP8320x240() throws Exception {
+    public void testH2641920x1080Goog() throws Exception {
+        decode(VIDEO_AVC,
+               R.raw.video_1920x1080_mp4_h264_20480kbps_30fps_aac_stereo_128kbps_44100hz,
+               1920, 1080, true /* isGoog */);
+    }
+
+    public void testVP80320x0240Other() throws Exception {
         decode(VIDEO_VP8,
                R.raw.video_320x240_webm_vp8_800kbps_30fps_vorbis_stereo_128kbps_44100hz,
-               320, 240);
+               320, 240, false /* isGoog */);
     }
 
-    public void testVP8640x360() throws Exception {
+    public void testVP80320x0240Goog() throws Exception {
+        decode(VIDEO_VP8,
+               R.raw.video_320x240_webm_vp8_800kbps_30fps_vorbis_stereo_128kbps_44100hz,
+               320, 240, true /* isGoog */);
+    }
+
+    public void testVP80640x0360Other() throws Exception {
         decode(VIDEO_VP8,
                R.raw.video_640x360_webm_vp8_2048kbps_30fps_vorbis_stereo_128kbps_48000hz,
-               640, 360);
+               640, 360, false /* isGoog */);
     }
 
-    public void testVP81280x720() throws Exception {
+    public void testVP80640x0360Goog() throws Exception {
+        decode(VIDEO_VP8,
+               R.raw.video_640x360_webm_vp8_2048kbps_30fps_vorbis_stereo_128kbps_48000hz,
+               640, 360, true /* isGoog */);
+    }
+
+    public void testVP81280x0720Other() throws Exception {
         decode(VIDEO_VP8,
                R.raw.video_1280x720_webm_vp8_8192kbps_30fps_vorbis_stereo_128kbps_48000hz,
-               1280, 720);
+               1280, 720, false /* isGoog */);
     }
 
-    public void testVP81920x1080() throws Exception {
+    public void testVP81280x0720Goog() throws Exception {
+        decode(VIDEO_VP8,
+               R.raw.video_1280x720_webm_vp8_8192kbps_30fps_vorbis_stereo_128kbps_48000hz,
+               1280, 720, true /* isGoog */);
+    }
+
+    public void testVP81920x1080Other() throws Exception {
         decode(VIDEO_VP8,
                R.raw.video_1920x1080_webm_vp8_20480kbps_30fps_vorbis_stereo_128kbps_48000hz,
-               1920, 1080);
+               1920, 1080, false /* isGoog */);
     }
 
-    public void testVP9320x240() throws Exception {
+    public void testVP81920x1080Goog() throws Exception {
+        decode(VIDEO_VP8,
+               R.raw.video_1920x1080_webm_vp8_20480kbps_30fps_vorbis_stereo_128kbps_48000hz,
+               1920, 1080, true /* isGoog */);
+    }
+
+    public void testVP90320x0240Other() throws Exception {
         decode(VIDEO_VP9,
                R.raw.video_320x240_webm_vp9_600kbps_30fps_vorbis_stereo_128kbps_48000hz,
-               320, 240);
+               320, 240, false /* isGoog */);
     }
 
-    public void testVP9640x360() throws Exception {
+    public void testVP90320x0240Goog() throws Exception {
+        decode(VIDEO_VP9,
+               R.raw.video_320x240_webm_vp9_600kbps_30fps_vorbis_stereo_128kbps_48000hz,
+               320, 240, true /* isGoog */);
+    }
+
+    public void testVP90640x0360Other() throws Exception {
         decode(VIDEO_VP9,
                R.raw.video_640x360_webm_vp9_1600kbps_30fps_vorbis_stereo_128kbps_48000hz,
-               640, 360);
+               640, 360, false /* isGoog */);
     }
 
-    public void testVP91280x720() throws Exception {
+    public void testVP90640x0360Goog() throws Exception {
+        decode(VIDEO_VP9,
+               R.raw.video_640x360_webm_vp9_1600kbps_30fps_vorbis_stereo_128kbps_48000hz,
+               640, 360, true /* isGoog */);
+    }
+
+    public void testVP91280x0720Other() throws Exception {
         decode(VIDEO_VP9,
                R.raw.video_1280x720_webm_vp9_4096kbps_30fps_vorbis_stereo_128kbps_44100hz,
-               1280, 720);
+               1280, 720, false /* isGoog */);
     }
 
-    public void testVP91920x1080() throws Exception {
+    public void testVP91280x0720Goog() throws Exception {
+        decode(VIDEO_VP9,
+               R.raw.video_1280x720_webm_vp9_4096kbps_30fps_vorbis_stereo_128kbps_44100hz,
+               1280, 720, true /* isGoog */);
+    }
+
+    public void testVP91920x1080Other() throws Exception {
         decode(VIDEO_VP9,
                R.raw.video_1920x1080_webm_vp9_10240kbps_30fps_vorbis_stereo_128kbps_48000hz,
-               1920, 1080);
+               1920, 1080, false /* isGoog */);
     }
 
-    public void testVP93840x2160() throws Exception {
+    public void testVP91920x1080Goog() throws Exception {
+        decode(VIDEO_VP9,
+               R.raw.video_1920x1080_webm_vp9_10240kbps_30fps_vorbis_stereo_128kbps_48000hz,
+               1920, 1080, true /* isGoog */);
+    }
+
+    public void testVP93840x2160Other() throws Exception {
         decode(VIDEO_VP9,
                R.raw.video_3840x2160_webm_vp9_20480kbps_30fps_vorbis_stereo_128kbps_48000hz,
-               3840, 2160);
+               3840, 2160, false /* isGoog */);
     }
 
-    public void testHEVC352x288() throws Exception {
+    public void testVP93840x2160Goog() throws Exception {
+        decode(VIDEO_VP9,
+               R.raw.video_3840x2160_webm_vp9_20480kbps_30fps_vorbis_stereo_128kbps_48000hz,
+               3840, 2160, true /* isGoog */);
+    }
+
+    public void testHEVC0352x0288Other() throws Exception {
         decode(VIDEO_HEVC,
                R.raw.video_352x288_mp4_hevc_600kbps_30fps_aac_stereo_128kbps_44100hz,
-               352, 288);
+               352, 288, false /* isGoog */);
     }
 
-    public void testHEVC720x480() throws Exception {
+    public void testHEVC0352x0288Goog() throws Exception {
+        decode(VIDEO_HEVC,
+               R.raw.video_352x288_mp4_hevc_600kbps_30fps_aac_stereo_128kbps_44100hz,
+               352, 288, true /* isGoog */);
+    }
+
+    public void testHEVC0720x0480Other() throws Exception {
         decode(VIDEO_HEVC,
                R.raw.video_720x480_mp4_hevc_1638kbps_30fps_aac_stereo_128kbps_44100hz,
-               720, 480);
+               720, 480, false /* isGoog */);
     }
 
-    public void testHEVC1280x720() throws Exception {
+    public void testHEVC0720x0480Goog() throws Exception {
+        decode(VIDEO_HEVC,
+               R.raw.video_720x480_mp4_hevc_1638kbps_30fps_aac_stereo_128kbps_44100hz,
+               720, 480, true /* isGoog */);
+    }
+
+    public void testHEVC1280x0720Other() throws Exception {
         decode(VIDEO_HEVC,
                R.raw.video_1280x720_mp4_hevc_4096kbps_30fps_aac_stereo_128kbps_44100hz,
-               1280, 720);
+               1280, 720, false /* isGoog */);
     }
 
-    public void testHEVC1920x1080() throws Exception {
+    public void testHEVC1280x0720Goog() throws Exception {
+        decode(VIDEO_HEVC,
+               R.raw.video_1280x720_mp4_hevc_4096kbps_30fps_aac_stereo_128kbps_44100hz,
+               1280, 720, true /* isGoog */);
+    }
+
+    public void testHEVC1920x1080Other() throws Exception {
         decode(VIDEO_HEVC,
                R.raw.video_1920x1080_mp4_hevc_10240kbps_30fps_aac_stereo_128kbps_44100hz,
-               1920, 1080);
+               1920, 1080, false /* isGoog */);
     }
 
-    public void testHEVC3840x2160() throws Exception {
+    public void testHEVC1920x1080Goog() throws Exception {
+        decode(VIDEO_HEVC,
+               R.raw.video_1920x1080_mp4_hevc_10240kbps_30fps_aac_stereo_128kbps_44100hz,
+               1920, 1080, true /* isGoog */);
+    }
+
+    public void testHEVC3840x2160Other() throws Exception {
         decode(VIDEO_HEVC,
                R.raw.video_3840x2160_mp4_hevc_20480kbps_30fps_aac_stereo_128kbps_44100hz,
-               3840, 2160);
+               3840, 2160, false /* isGoog */);
     }
 
-    public void testH263176x144() throws Exception {
+    public void testHEVC3840x2160Goog() throws Exception {
         decode(VIDEO_HEVC,
+               R.raw.video_3840x2160_mp4_hevc_20480kbps_30fps_aac_stereo_128kbps_44100hz,
+               3840, 2160, true /* isGoog */);
+    }
+
+    public void testH2630176x0144Other() throws Exception {
+        decode(VIDEO_H263,
                R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz,
-               176, 144);
+               176, 144, false /* isGoog */);
     }
 
-    public void testH263352x288() throws Exception {
-        decode(VIDEO_HEVC,
+    public void testH2630176x0144Goog() throws Exception {
+        decode(VIDEO_H263,
+               R.raw.video_176x144_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz,
+               176, 144, true /* isGoog */);
+    }
+
+    public void testH2630352x0288Other() throws Exception {
+        decode(VIDEO_H263,
                R.raw.video_352x288_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz,
-               352, 288);
+               352, 288, false /* isGoog */);
     }
 
-    public void testMPEG4480x360() throws Exception {
+    public void testH2630352x0288Goog() throws Exception {
+        decode(VIDEO_H263,
+               R.raw.video_352x288_3gp_h263_300kbps_12fps_aac_stereo_128kbps_22050hz,
+               352, 288, true /* isGoog */);
+    }
+
+    public void testMPEG40480x0360Other() throws Exception {
         decode(VIDEO_MPEG4,
                R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz,
-               480, 360);
+               480, 360, false /* isGoog */);
     }
 
-    public void testMPEG41280x720() throws Exception {
+    public void testMPEG40480x0360Goog() throws Exception {
+        decode(VIDEO_MPEG4,
+               R.raw.video_480x360_mp4_mpeg4_860kbps_25fps_aac_stereo_128kbps_44100hz,
+               480, 360, true /* isGoog */);
+    }
+
+    public void testMPEG41280x0720Other() throws Exception {
         decode(VIDEO_MPEG4,
                R.raw.video_1280x720_mp4_mpeg4_1000kbps_25fps_aac_stereo_128kbps_44100hz,
-               1280, 720);
+               1280, 720, false /* isGoog */);
+    }
+
+    public void testMPEG41280x0720Goog() throws Exception {
+        decode(VIDEO_MPEG4,
+               R.raw.video_1280x720_mp4_mpeg4_1000kbps_25fps_aac_stereo_128kbps_44100hz,
+               1280, 720, true /* isGoog */);
     }
 }
 
diff --git a/tests/tests/media/src/android/media/cts/VideoEncoderTest.java b/tests/tests/media/src/android/media/cts/VideoEncoderTest.java
index 858e47c..e3d2f09 100644
--- a/tests/tests/media/src/android/media/cts/VideoEncoderTest.java
+++ b/tests/tests/media/src/android/media/cts/VideoEncoderTest.java
@@ -53,6 +53,8 @@
     private static final int MAX_SAMPLE_SIZE = 256 * 1024;
     private static final String TAG = "VideoEncoderTest";
     private static final long FRAME_TIMEOUT_MS = 1000;
+    // use larger delay before we get first frame, some encoders may need more time
+    private static final long INIT_TIMEOUT_MS = 2000;
 
     private static final String SOURCE_URL =
         "android.resource://com.android.cts.media/raw/video_480x360_mp4_h264_871kbps_30fps";
@@ -172,6 +174,7 @@
         private boolean mSignaledDecoderEOS;
 
         protected boolean mCompleted;
+        protected boolean mEncodeOutputFormatUpdated;
         protected final Object mCondition = new Object();
 
         protected MediaFormat mDecFormat;
@@ -382,7 +385,8 @@
                             // wait for an encoder input buffer and a decoder output buffer
                             // Use a timeout to avoid stalling the test if it doesn't arrive.
                             if (!haveBuffers() && !mCompleted) {
-                                mCondition.wait(FRAME_TIMEOUT_MS);
+                                mCondition.wait(mEncodeOutputFormatUpdated ?
+                                        FRAME_TIMEOUT_MS : INIT_TIMEOUT_MS);
                             }
                         } catch (InterruptedException ie) {
                             fail("wait interrupted");  // shouldn't happen
@@ -494,7 +498,7 @@
             if (mEncInputBufferSize < 0) {
                 mEncInputBufferSize = mEncoder.getInputBuffer(encBuffer).capacity();
             }
-            Log.d(TAG, "queuing output #" + encBuffer + " for encoder (sz="
+            Log.d(TAG, "queuing input #" + encBuffer + " for encoder (sz="
                     + mEncInputBufferSize + ", f=" + decBuffer.second.flags
                     + ", ts=" + decBuffer.second.presentationTimeUs + ")");
             mEncoder.queueInputBuffer(
@@ -515,6 +519,7 @@
         public void onOutputFormatChanged(MediaCodec mediaCodec, MediaFormat mediaFormat) {
             Log.i(TAG, mediaCodec.getName() + " got new output format " + mediaFormat);
             if (mediaCodec == mEncoder) {
+                mEncodeOutputFormatUpdated = true;
                 saveEncoderFormat(mediaFormat);
             }
         }
@@ -596,7 +601,8 @@
                             // wait for mFrameAvailable, which is set by onFrameAvailable().
                             // Use a timeout to avoid stalling the test if it doesn't arrive.
                             if (!mFrameAvailable && !mCompleted && !mEncoderIsActive) {
-                                mCondition.wait(FRAME_TIMEOUT_MS);
+                                mCondition.wait(mEncodeOutputFormatUpdated ?
+                                        FRAME_TIMEOUT_MS : INIT_TIMEOUT_MS);
                             }
                         } catch (InterruptedException ie) {
                             fail("wait interrupted");  // shouldn't happen
@@ -746,6 +752,7 @@
         public void onOutputFormatChanged(MediaCodec mediaCodec, MediaFormat mediaFormat) {
             Log.i(TAG, mediaCodec.getName() + " got new output format " + mediaFormat);
             if (mediaCodec == mEncoder) {
+                mEncodeOutputFormatUpdated = true;
                 saveEncoderFormat(mediaFormat);
             }
         }
diff --git a/tests/tests/mediastress/src/android/mediastress/cts/MediaRecorderStressTest.java b/tests/tests/mediastress/src/android/mediastress/cts/MediaRecorderStressTest.java
index 0b76185..17b79d0 100644
--- a/tests/tests/mediastress/src/android/mediastress/cts/MediaRecorderStressTest.java
+++ b/tests/tests/mediastress/src/android/mediastress/cts/MediaRecorderStressTest.java
@@ -32,12 +32,13 @@
 import java.io.File;
 import java.io.FileWriter;
 import java.io.Writer;
+import java.util.List;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 
 public class MediaRecorderStressTest extends ActivityInstrumentationTestCase2<MediaFrameworkTest> {
 
-    private static String TAG = "MediaRecorderStressTest";
+    private static final String TAG = "MediaRecorderStressTest";
     private static final int NUMBER_OF_CAMERA_STRESS_LOOPS = 50;
     private static final int NUMBER_OF_RECORDER_STRESS_LOOPS = 50;
     private static final int NUMBER_OF_RECORDERANDPLAY_STRESS_LOOPS = 25;
@@ -50,6 +51,8 @@
     private final CameraErrorCallback mCameraErrorCallback = new CameraErrorCallback();
     private final RecorderErrorCallback mRecorderErrorCallback = new RecorderErrorCallback();
     private final static int WAIT_TIMEOUT = 10000;
+    private static final int VIDEO_WIDTH = 176;
+    private static final int VIDEO_HEIGHT = 144;
 
     private MediaRecorder mRecorder;
     private Camera mCamera;
@@ -215,11 +218,35 @@
         mSurfaceHolder = MediaFrameworkTest.getSurfaceView().getHolder();
         File stressOutFile = new File(WorkDir.getTopDir(), MEDIA_STRESS_OUTPUT);
         Writer output = new BufferedWriter(new FileWriter(stressOutFile, true));
+        int width;
+        int height;
+        Camera camera = null;
 
         if (!mHasRearCamera && !mHasFrontCamera) {
                 output.write("No camera found. Skipping recorder stress test\n");
                 return;
         }
+        // Try to get camera smallest supported resolution.
+        // If we fail for any reason, set the video size to default value.
+        try {
+            camera = Camera.open(0);
+            List<Camera.Size> previewSizes = camera.getParameters().getSupportedPreviewSizes();
+            width = previewSizes.get(0).width;
+            height = previewSizes.get(0).height;
+            for (Camera.Size size : previewSizes) {
+                if (size.width < width || size.height < height) {
+                    width = size.width;
+                    height = size.height;
+                }
+            }
+        } catch (Exception e) {
+            width = VIDEO_WIDTH;
+            height = VIDEO_HEIGHT;
+        }
+        if (camera != null) {
+            camera.release();
+        }
+        Log.v(TAG, String.format("Camera video size used for test %dx%d", width, height));
         output.write("H263 video record- reset after prepare Stress test\n");
         output.write("Total number of loops:" +
                 NUMBER_OF_RECORDER_STRESS_LOOPS + "\n");
@@ -241,7 +268,7 @@
             mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
             mRecorder.setOutputFile(filename);
             mRecorder.setVideoFrameRate(mFrameRate);
-            mRecorder.setVideoSize(176,144);
+            mRecorder.setVideoSize(width, height);
             Log.v(TAG, "setEncoder");
             mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
             mSurfaceHolder = MediaFrameworkTest.getSurfaceView().getHolder();
@@ -268,6 +295,8 @@
         }
 
         String filename;
+        int width;
+        int height;
         SurfaceHolder mSurfaceHolder;
         mSurfaceHolder = MediaFrameworkTest.getSurfaceView().getHolder();
         File stressOutFile = new File(WorkDir.getTopDir(), MEDIA_STRESS_OUTPUT);
@@ -294,6 +323,19 @@
             if (mCamera == null) {
                 break;
             }
+            // Try to get camera smallest supported resolution.
+            // If we fail for any reason, set the video size to default value.
+            List<Camera.Size> previewSizes = mCamera.getParameters().getSupportedPreviewSizes();
+            width = previewSizes.get(0).width;
+            height = previewSizes.get(0).height;
+            for (Camera.Size size : previewSizes) {
+                if (size.width < width || size.height < height) {
+                    width = size.width;
+                    height = size.height;
+                }
+            }
+            Log.v(TAG, String.format("Camera video size used for test %dx%d", width, height));
+
             mCamera.setErrorCallback(mCameraErrorCallback);
             mCamera.setPreviewDisplay(mSurfaceHolder);
             mCamera.startPreview();
@@ -315,7 +357,7 @@
             mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
             mRecorder.setOutputFile(filename);
             mRecorder.setVideoFrameRate(mFrameRate);
-            mRecorder.setVideoSize(176,144);
+            mRecorder.setVideoSize(width, height);
             Log.v(TAG, "Media recorder setEncoder");
             mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
             Log.v(TAG, "mediaRecorder setPreview");
diff --git a/tests/tests/net/AndroidManifest.xml b/tests/tests/net/AndroidManifest.xml
index bca2d2c..001e294 100644
--- a/tests/tests/net/AndroidManifest.xml
+++ b/tests/tests/net/AndroidManifest.xml
@@ -20,6 +20,7 @@
 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
diff --git a/tests/tests/net/jni/NativeMultinetworkJni.c b/tests/tests/net/jni/NativeMultinetworkJni.c
index 9a5ab9c..4da0c1c4 100644
--- a/tests/tests/net/jni/NativeMultinetworkJni.c
+++ b/tests/tests/net/jni/NativeMultinetworkJni.c
@@ -122,9 +122,7 @@
     struct addrinfo *res = NULL;
     net_handle_t handle = (net_handle_t) nethandle;
 
-    // Quoth Ian Swett:
-    //     "QUIC always uses 80 and 443, but only 443 is used for secure(HTTPS) traffic."
-    int rval = android_getaddrinfofornetwork(handle, kHostname, "80", &kHints, &res);
+    int rval = android_getaddrinfofornetwork(handle, kHostname, "443", &kHints, &res);
     if (rval != 0) {
         ALOGD("android_getaddrinfofornetwork(%llu, %s) returned rval=%d errno=%d",
               handle, kHostname, rval, errno);
diff --git a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
index 15d368f..88dbd7c 100644
--- a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
+++ b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
@@ -16,19 +16,24 @@
 
 package android.net.cts;
 
+import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
 import android.net.NetworkConfig;
 import android.net.NetworkInfo;
 import android.net.NetworkInfo.DetailedState;
 import android.net.NetworkInfo.State;
+import android.net.NetworkRequest;
 import android.net.wifi.WifiManager;
 import android.test.AndroidTestCase;
 import android.util.Log;
+import android.os.SystemProperties;
 
 import com.android.internal.telephony.PhoneConstants;
 
@@ -50,6 +55,10 @@
     public static final int TYPE_WIFI = ConnectivityManager.TYPE_WIFI;
     private static final int HOST_ADDRESS = 0x7f000001;// represent ip 127.0.0.1
 
+    // Action sent to ConnectivityActionReceiver when a network callback is sent via PendingIntent.
+    private static final String NETWORK_CALLBACK_ACTION =
+            "ConnectivityManagerTest.NetworkCallbackAction";
+
     // device could have only one interface: data, wifi.
     private static final int MIN_NUM_NETWORK_TYPES = 1;
 
@@ -58,7 +67,6 @@
     private PackageManager mPackageManager;
     private final HashMap<Integer, NetworkConfig> mNetworks =
             new HashMap<Integer, NetworkConfig>();
-    private final List<Integer>mProtectedNetworks = new ArrayList<Integer>();
 
     @Override
     protected void setUp() throws Exception {
@@ -70,20 +78,17 @@
         // Get com.android.internal.R.array.networkAttributes
         int resId = getContext().getResources().getIdentifier("networkAttributes", "array", "android");
         String[] naStrings = getContext().getResources().getStringArray(resId);
-
+        //TODO: What is the "correct" way to determine if this is a wifi only device?
+        boolean wifiOnly = SystemProperties.getBoolean("ro.radio.noril", false);
         for (String naString : naStrings) {
             try {
                 NetworkConfig n = new NetworkConfig(naString);
+                if (wifiOnly && ConnectivityManager.isNetworkTypeMobile(n.type)) {
+                    continue;
+                }
                 mNetworks.put(n.type, n);
             } catch (Exception e) {}
         }
-
-        // Get com.android.internal.R.array.config_protectedNetworks
-        resId = getContext().getResources().getIdentifier("config_protectedNetworks", "array", "android");
-        int[] protectedNetworks = getContext().getResources().getIntArray(resId);
-        for (int p : protectedNetworks) {
-            mProtectedNetworks.add(p);
-        }
     }
 
     public void testIsNetworkTypeValid() {
@@ -124,7 +129,19 @@
     public void testGetActiveNetworkInfo() {
         NetworkInfo ni = mCm.getActiveNetworkInfo();
 
-        assertTrue("You must have an active network connection to complete CTS", ni != null);
+        assertNotNull("You must have an active network connection to complete CTS", ni);
+        assertTrue(ConnectivityManager.isNetworkTypeValid(ni.getType()));
+        assertTrue(ni.getState() == State.CONNECTED);
+    }
+
+    public void testGetActiveNetwork() {
+        Network network = mCm.getActiveNetwork();
+        assertNotNull("You must have an active network connection to complete CTS", network);
+
+        NetworkInfo ni = mCm.getNetworkInfo(network);
+        assertNotNull("Network returned from getActiveNetwork was invalid", ni);
+
+        // Similar to testGetActiveNetworkInfo above.
         assertTrue(ConnectivityManager.isNetworkTypeValid(ni.getType()));
         assertTrue(ni.getState() == State.CONNECTED);
     }
@@ -165,6 +182,27 @@
         }
     }
 
+    private void assertStartUsingNetworkFeatureUnsupported(int networkType, String feature) {
+        try {
+            mCm.startUsingNetworkFeature(networkType, feature);
+            fail("startUsingNetworkFeature is no longer supported in the current API version");
+        } catch (UnsupportedOperationException expected) {}
+    }
+
+    private void assertStopUsingNetworkFeatureUnsupported(int networkType, String feature) {
+        try {
+            mCm.startUsingNetworkFeature(networkType, feature);
+            fail("stopUsingNetworkFeature is no longer supported in the current API version");
+        } catch (UnsupportedOperationException expected) {}
+    }
+
+    private void assertRequestRouteToHostUnsupported(int networkType, int hostAddress) {
+        try {
+            mCm.requestRouteToHost(networkType, hostAddress);
+            fail("requestRouteToHost is no longer supported in the current API version");
+        } catch (UnsupportedOperationException expected) {}
+    }
+
     public void testStartUsingNetworkFeature() {
 
         final String invalidateFeature = "invalidateFeature";
@@ -173,27 +211,9 @@
         final int wifiOnlyStartFailureCode = PhoneConstants.APN_REQUEST_FAILED;
         final int wifiOnlyStopFailureCode = -1;
 
-        NetworkInfo ni = mCm.getNetworkInfo(TYPE_MOBILE);
-        if (ni != null) {
-            assertEquals(PhoneConstants.APN_REQUEST_FAILED,
-                    mCm.startUsingNetworkFeature(TYPE_MOBILE, invalidateFeature));
-            assertEquals(failureCode, mCm.stopUsingNetworkFeature(TYPE_MOBILE,
-                    invalidateFeature));
-        } else {
-            assertEquals(wifiOnlyStartFailureCode, mCm.startUsingNetworkFeature(TYPE_MOBILE,
-                    invalidateFeature));
-            assertEquals(wifiOnlyStopFailureCode, mCm.stopUsingNetworkFeature(TYPE_MOBILE,
-                    invalidateFeature));
-        }
-
-        ni = mCm.getNetworkInfo(TYPE_WIFI);
-        if (ni != null) {
-            // Should return failure because MMS is not supported on WIFI.
-            assertEquals(PhoneConstants.APN_REQUEST_FAILED, mCm.startUsingNetworkFeature(TYPE_WIFI,
-                    mmsFeature));
-            assertEquals(failureCode, mCm.stopUsingNetworkFeature(TYPE_WIFI,
-                    mmsFeature));
-        }
+        assertStartUsingNetworkFeatureUnsupported(TYPE_MOBILE, invalidateFeature);
+        assertStopUsingNetworkFeatureUnsupported(TYPE_MOBILE, invalidateFeature);
+        assertStartUsingNetworkFeatureUnsupported(TYPE_WIFI, mmsFeature);
     }
 
     private boolean isSupported(int networkType) {
@@ -204,11 +224,6 @@
                (networkType == ConnectivityManager.TYPE_VPN);
     }
 
-    // true if only the system can turn it on
-    private boolean isNetworkProtected(int networkType) {
-        return mProtectedNetworks.contains(networkType);
-    }
-
     public void testIsNetworkSupported() {
         for (int type = -1; type <= ConnectivityManager.MAX_NETWORK_TYPE; type++) {
             boolean supported = mCm.isNetworkSupported(type);
@@ -222,120 +237,234 @@
 
     public void testRequestRouteToHost() {
         for (int type = -1 ; type <= ConnectivityManager.MAX_NETWORK_TYPE; type++) {
-            NetworkInfo ni = mCm.getNetworkInfo(type);
-            boolean expectToWork = isSupported(type) && !isNetworkProtected(type) &&
-                    ni != null && ni.isConnected();
-
-            try {
-                assertTrue("Network type " + type,
-                        mCm.requestRouteToHost(type, HOST_ADDRESS) == expectToWork);
-            } catch (Exception e) {
-                Log.d(TAG, "got exception in requestRouteToHost for type " + type);
-                assertFalse("Exception received for type " + type, expectToWork);
-            }
-
-            //TODO verify route table
+            assertRequestRouteToHostUnsupported(type, HOST_ADDRESS);
         }
-
-        assertFalse(mCm.requestRouteToHost(-1, HOST_ADDRESS));
     }
 
     public void testTest() {
         mCm.getBackgroundDataSetting();
     }
 
-    /** Test that hipri can be brought up when Wifi is enabled. */
-    public void testStartUsingNetworkFeature_enableHipri() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
-                || !mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
-            // This test requires a mobile data connection and WiFi.
+    /**
+     * Exercises both registerNetworkCallback and unregisterNetworkCallback. This checks to
+     * see if we get a callback for the TRANSPORT_WIFI transport type being available.
+     *
+     * <p>In order to test that a NetworkCallback occurs, we need some change in the network
+     * state (either a transport or capability is now available). The most straightforward is
+     * WiFi. We could add a version that uses the telephony data connection but it's not clear
+     * that it would increase test coverage by much (how many devices have 3G radio but not Wifi?).
+     */
+    public void testRegisterNetworkCallback() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
+            Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
             return;
         }
 
-        boolean isWifiEnabled = mWifiManager.isWifiEnabled();
-        boolean isWifiConnected = false;
+        // We will register for a WIFI network being available or lost.
+        NetworkRequest request = new NetworkRequest.Builder()
+                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+                .build();
+        TestNetworkCallback callback = new TestNetworkCallback();
+        mCm.registerNetworkCallback(request, callback);
 
-        NetworkInfo nwInfo = mCm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
-        if (nwInfo != null) {
-            isWifiConnected = nwInfo.isConnected();
-        }
+        boolean previousWifiEnabledState = mWifiManager.isWifiEnabled();
+
         try {
-            // Make sure WiFi is connected to an access point.
-            if (!isWifiConnected) {
+            // Make sure WiFi is connected to an access point to start with.
+            if (!previousWifiEnabledState) {
                 connectToWifi();
             }
 
-            // Register a receiver that will capture the connectivity change for hipri.
-            ConnectivityActionReceiver receiver =
-                    new ConnectivityActionReceiver(ConnectivityManager.TYPE_MOBILE_HIPRI);
-            IntentFilter filter = new IntentFilter();
-            filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
-            mContext.registerReceiver(receiver, filter);
-
-            // Try to start using the hipri feature...
-            int result = mCm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
-                    FEATURE_ENABLE_HIPRI);
-            assertTrue("Couldn't start using the HIPRI feature.", result != -1);
-
-            // Check that the ConnectivityManager reported that it connected using hipri...
-            assertTrue("Couldn't connect using hipri...", receiver.waitForConnection());
-
-            assertTrue("Couldn't requestRouteToHost using HIPRI.",
-                    mCm.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, HOST_ADDRESS));
-            // TODO check dns selection
-            // TODO check routes
+            // Now we should expect to get a network callback about availability of the wifi
+            // network even if it was already connected as a state-based action when the callback
+            // is registered.
+            assertTrue("Did not receive NetworkCallback.onAvailable for TRANSPORT_WIFI",
+                    callback.waitForAvailable());
         } catch (InterruptedException e) {
-            fail("Broadcast receiver waiting for ConnectivityManager interrupted.");
+            fail("Broadcast receiver or NetworkCallback wait was interrupted.");
         } finally {
-            mCm.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE,
-                    FEATURE_ENABLE_HIPRI);
-            // TODO wait for HIPRI to go
-            // TODO check dns selection
-            // TODO check routes
-            if (!isWifiEnabled) {
-                mWifiManager.setWifiEnabled(false);
+            mCm.unregisterNetworkCallback(callback);
+
+            // Return WiFI to its original enabled/disabled state.
+            if (!previousWifiEnabledState) {
+                disconnectFromWifi();
             }
         }
     }
 
-    private void connectToWifi() throws InterruptedException {
-        ConnectivityActionReceiver receiver =
-                new ConnectivityActionReceiver(ConnectivityManager.TYPE_WIFI);
+    /**
+     * Tests both registerNetworkCallback and unregisterNetworkCallback similarly to
+     * {@link #testRegisterNetworkCallback} except that a {@code PendingIntent} is used instead
+     * of a {@code NetworkCallback}.
+     */
+    public void testRegisterNetworkCallback_withPendingIntent() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
+            Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
+            return;
+        }
+
+        // Create a ConnectivityActionReceiver that has an IntentFilter for our locally defined
+        // action, NETWORK_CALLBACK_ACTION.
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(NETWORK_CALLBACK_ACTION);
+
+        ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
+                ConnectivityManager.TYPE_WIFI, NetworkInfo.State.CONNECTED);
+        mContext.registerReceiver(receiver, filter);
+
+        // Create a broadcast PendingIntent for NETWORK_CALLBACK_ACTION.
+        Intent intent = new Intent(NETWORK_CALLBACK_ACTION);
+        PendingIntent pendingIntent = PendingIntent.getBroadcast(
+                mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
+
+        // We will register for a WIFI network being available or lost.
+        NetworkRequest request = new NetworkRequest.Builder()
+                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+                .build();
+        mCm.registerNetworkCallback(request, pendingIntent);
+
+        boolean previousWifiEnabledState = mWifiManager.isWifiEnabled();
+
+        try {
+            // Make sure WiFi is connected to an access point to start with.
+            if (!previousWifiEnabledState) {
+                connectToWifi();
+            }
+
+            // Now we expect to get the Intent delivered notifying of the availability of the wifi
+            // network even if it was already connected as a state-based action when the callback
+            // is registered.
+            assertTrue("Did not receive expected Intent " + intent + " for TRANSPORT_WIFI",
+                    receiver.waitForState());
+        } catch (InterruptedException e) {
+            fail("Broadcast receiver or NetworkCallback wait was interrupted.");
+        } finally {
+            mCm.unregisterNetworkCallback(pendingIntent);
+            pendingIntent.cancel();
+            mContext.unregisterReceiver(receiver);
+
+            // Return WiFI to its original enabled/disabled state.
+            if (!previousWifiEnabledState) {
+                disconnectFromWifi();
+            }
+        }
+    }
+
+    /** Enable WiFi and wait for it to become connected to a network. */
+    private void connectToWifi() {
+        ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
+                ConnectivityManager.TYPE_WIFI, NetworkInfo.State.CONNECTED);
         IntentFilter filter = new IntentFilter();
         filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
         mContext.registerReceiver(receiver, filter);
 
-        assertTrue(mWifiManager.setWifiEnabled(true));
-        assertTrue("Wifi must be configured to connect to an access point for this test.",
-                receiver.waitForConnection());
+        boolean connected = false;
+        try {
+            assertTrue(mWifiManager.setWifiEnabled(true));
+            connected = receiver.waitForState();
+        } catch (InterruptedException ex) {
+            fail("connectToWifi was interrupted");
+        } finally {
+            mContext.unregisterReceiver(receiver);
+        }
 
-        mContext.unregisterReceiver(receiver);
+        assertTrue("Wifi must be configured to connect to an access point for this test.",
+                connected);
     }
 
-    /** Receiver that captures the last connectivity change's network type and state. */
+    /** Disable WiFi and wait for it to become disconnected from the network. */
+    private void disconnectFromWifi() {
+        ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
+                ConnectivityManager.TYPE_WIFI, NetworkInfo.State.DISCONNECTED);
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+        mContext.registerReceiver(receiver, filter);
+
+        boolean disconnected = false;
+        try {
+            assertTrue(mWifiManager.setWifiEnabled(false));
+            disconnected = receiver.waitForState();
+        } catch (InterruptedException ex) {
+            fail("disconnectFromWifi was interrupted");
+        } finally {
+            mContext.unregisterReceiver(receiver);
+        }
+
+        assertTrue("Wifi failed to reach DISCONNECTED state.", disconnected);
+    }
+
+    /**
+     * Receiver that captures the last connectivity change's network type and state. Recognizes
+     * both {@code CONNECTIVITY_ACTION} and {@code NETWORK_CALLBACK_ACTION} intents.
+     */
     private class ConnectivityActionReceiver extends BroadcastReceiver {
 
         private final CountDownLatch mReceiveLatch = new CountDownLatch(1);
 
         private final int mNetworkType;
+        private final NetworkInfo.State mNetState;
 
-        ConnectivityActionReceiver(int networkType) {
+        ConnectivityActionReceiver(int networkType, NetworkInfo.State netState) {
             mNetworkType = networkType;
+            mNetState = netState;
         }
 
         public void onReceive(Context context, Intent intent) {
-            NetworkInfo networkInfo = intent.getExtras()
-                    .getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);
+            String action = intent.getAction();
+            NetworkInfo networkInfo = null;
+
+            // When receiving ConnectivityManager.CONNECTIVITY_ACTION, the NetworkInfo parcelable
+            // is stored in EXTRA_NETWORK_INFO. With a NETWORK_CALLBACK_ACTION, the Network is
+            // sent in EXTRA_NETWORK and we need to ask the ConnectivityManager for the NetworkInfo.
+            if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
+                networkInfo = intent.getExtras()
+                        .getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);
+                assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK_INFO", networkInfo);
+            } else if (NETWORK_CALLBACK_ACTION.equals(action)) {
+                Network network = intent.getExtras()
+                        .getParcelable(ConnectivityManager.EXTRA_NETWORK);
+                assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK", network);
+                networkInfo = mCm.getNetworkInfo(network);
+                if (networkInfo == null) {
+                    // When disconnecting, it seems like we get an intent sent with an invalid
+                    // Network; that is, by the time we call ConnectivityManager.getNetworkInfo(),
+                    // it is invalid. Ignore these.
+                    Log.i(TAG, "ConnectivityActionReceiver NETWORK_CALLBACK_ACTION ignoring "
+                            + "invalid network");
+                    return;
+                }
+            } else {
+                fail("ConnectivityActionReceiver received unxpected intent action: " + action);
+            }
+
+            assertNotNull("ConnectivityActionReceiver didn't find NetworkInfo", networkInfo);
             int networkType = networkInfo.getType();
             State networkState = networkInfo.getState();
             Log.i(TAG, "Network type: " + networkType + " state: " + networkState);
-            if (networkType == mNetworkType && networkInfo.getState() == State.CONNECTED) {
+            if (networkType == mNetworkType && networkInfo.getState() == mNetState) {
                 mReceiveLatch.countDown();
             }
         }
 
-        public boolean waitForConnection() throws InterruptedException {
+        public boolean waitForState() throws InterruptedException {
             return mReceiveLatch.await(30, TimeUnit.SECONDS);
         }
     }
+
+    /**
+     * Callback used in testRegisterNetworkCallback that allows caller to block on
+     * {@code onAvailable}.
+     */
+    private static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
+        private final CountDownLatch mAvailableLatch = new CountDownLatch(1);
+
+        public boolean waitForAvailable() throws InterruptedException {
+            return mAvailableLatch.await(30, TimeUnit.SECONDS);
+        }
+
+        @Override
+        public void onAvailable(Network network) {
+            mAvailableLatch.countDown();
+        }
+    }
 }
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java
index 6c416ca..2cc5951 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java
@@ -94,7 +94,7 @@
         // Hotspot 2.0 related attributes
         config.setPlmn(PLMN);
         assertTrue(config.getPlmn().equals(PLMN));
-        config.setPlmn(REALM);
+        config.setRealm(REALM);
         assertTrue(config.getRealm().equals(REALM));
         config.setAltSubjectMatch(ALT_SUBJECT_MATCH);
         assertTrue(config.getAltSubjectMatch().equals(ALT_SUBJECT_MATCH));
diff --git a/tests/tests/netlegacy22/Android.mk b/tests/tests/netlegacy22/Android.mk
new file mode 100644
index 0000000..68fd6f8
--- /dev/null
+++ b/tests/tests/netlegacy22/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := tests
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsNetTestCasesLegacyApi22
+
+LOCAL_SDK_VERSION := 22
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/netlegacy22/AndroidManifest.xml b/tests/tests/netlegacy22/AndroidManifest.xml
new file mode 100644
index 0000000..d243e45
--- /dev/null
+++ b/tests/tests/netlegacy22/AndroidManifest.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.net.legacy22">
+
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.INTERNET" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="com.android.cts.net.legacy22"
+                     android:label="CTS tests of legacy android.net APIs as of API 22">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/netlegacy22/src/android/net/cts/legacy/api22/ConnectivityManagerLegacyTest.java b/tests/tests/netlegacy22/src/android/net/cts/legacy/api22/ConnectivityManagerLegacyTest.java
new file mode 100644
index 0000000..8a9002b
--- /dev/null
+++ b/tests/tests/netlegacy22/src/android/net/cts/legacy/api22/ConnectivityManagerLegacyTest.java
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.net.cts.legacy.api22;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.net.LinkAddress;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiManager;
+import android.os.ConditionVariable;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.net.DatagramSocket;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
+import static android.net.ConnectivityManager.TYPE_MOBILE;
+import static android.net.ConnectivityManager.TYPE_MOBILE_HIPRI;
+import static android.net.ConnectivityManager.TYPE_VPN;
+import static android.net.ConnectivityManager.TYPE_WIFI;
+
+public class ConnectivityManagerLegacyTest extends AndroidTestCase {
+    private static final String TAG = ConnectivityManagerLegacyTest.class.getSimpleName();
+    private static final String FEATURE_ENABLE_HIPRI = "enableHIPRI";
+    private static final String HOST_ADDRESS1 = "192.0.2.1";
+    private static final String HOST_ADDRESS2 = "192.0.2.2";
+    private static final String HOST_ADDRESS3 = "192.0.2.3";
+
+    // These are correct as of API level 22, which is what we target here.
+    private static final int APN_REQUEST_FAILED = 3;
+    private static final int MAX_NETWORK_TYPE = TYPE_VPN;
+
+    private ConnectivityManager mCm;
+    private WifiManager mWifiManager;
+    private PackageManager mPackageManager;
+
+    private final List<Integer>mProtectedNetworks = new ArrayList<Integer>();
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+        mWifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
+        mPackageManager = getContext().getPackageManager();
+
+        // Get com.android.internal.R.array.config_protectedNetworks
+        int resId = getContext().getResources().getIdentifier("config_protectedNetworks", "array", "android");
+        int[] protectedNetworks = getContext().getResources().getIntArray(resId);
+        for (int p : protectedNetworks) {
+            mProtectedNetworks.add(p);
+        }
+    }
+
+    // true if only the system can turn it on
+    private boolean isNetworkProtected(int networkType) {
+        return mProtectedNetworks.contains(networkType);
+    }
+
+    private int ipv4AddrToInt(String addrString) throws Exception {
+        byte[] addr = ((Inet4Address) InetAddress.getByName(addrString)).getAddress();
+        return ((addr[3] & 0xff) << 24) | ((addr[2] & 0xff) << 16) |
+                ((addr[1] & 0xff) << 8) | (addr[0] & 0xff);
+    }
+
+    private void checkSourceAddress(String addrString, int type) throws Exception {
+        DatagramSocket d = new DatagramSocket();
+        d.connect(InetAddress.getByName(addrString), 7);
+        InetAddress localAddress = d.getLocalAddress();
+
+        Network[] networks = mCm.getAllNetworks();
+        for (int i = 0; i < networks.length; i++) {
+            NetworkInfo ni = mCm.getNetworkInfo(networks[i]);
+            if (ni != null && ni.getType() == type) {
+                LinkProperties lp = mCm.getLinkProperties(networks[i]);
+                for (LinkAddress address : lp.getLinkAddresses()) {
+                    if (address.getAddress().equals(localAddress)) {
+                        return;
+                    }
+                }
+            }
+        }
+        fail("Local address " + localAddress + " not assigned to any network of type " + type);
+    }
+
+    /** Test that hipri can be brought up when Wifi is enabled. */
+    public void testStartUsingNetworkFeature_enableHipri() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+                || !mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
+            // This test requires a mobile data connection and WiFi.
+            return;
+        }
+
+        // Make sure WiFi is connected to an access point.
+        connectToWifi();
+
+        expectNetworkBroadcast(TYPE_MOBILE_HIPRI, NetworkInfo.State.CONNECTED,
+                new Runnable() {
+                    public void run() {
+                        int ret = mCm.startUsingNetworkFeature(TYPE_MOBILE, FEATURE_ENABLE_HIPRI);
+                        assertTrue("Couldn't start using the HIPRI feature.", ret != -1);
+                    }
+                });
+
+        assertTrue("Couldn't requestRouteToHost using HIPRI.",
+                mCm.requestRouteToHost(TYPE_MOBILE_HIPRI, ipv4AddrToInt(HOST_ADDRESS1)));
+
+        try { Thread.sleep(1000); } catch(Exception e) {}
+        checkSourceAddress(HOST_ADDRESS1, TYPE_MOBILE);
+        checkSourceAddress(HOST_ADDRESS2, TYPE_WIFI);
+
+        // TODO check dns selection
+
+        expectNetworkBroadcast(TYPE_MOBILE_HIPRI, NetworkInfo.State.DISCONNECTED,
+                new Runnable() {
+                    public void run() {
+                        int ret = mCm.stopUsingNetworkFeature(TYPE_MOBILE, FEATURE_ENABLE_HIPRI);
+                        assertTrue("Couldn't stop using the HIPRI feature.", ret != -1);
+                    }
+                });
+
+
+        // TODO check dns selection
+        disconnectFromWifi();
+    }
+
+    public void testStartUsingNetworkFeature() {
+
+        final String invalidFeature = "invalidFeature";
+        final String mmsFeature = "enableMMS";
+        final int failureCode = -1;
+        final int wifiOnlyStartFailureCode = APN_REQUEST_FAILED;
+        final int wifiOnlyStopFailureCode = -1;
+
+        NetworkInfo ni = mCm.getNetworkInfo(TYPE_MOBILE);
+        if (ni != null) {
+            assertEquals(APN_REQUEST_FAILED,
+                    mCm.startUsingNetworkFeature(TYPE_MOBILE, invalidFeature));
+            assertEquals(failureCode, mCm.stopUsingNetworkFeature(TYPE_MOBILE, invalidFeature));
+        } else {
+            assertEquals(wifiOnlyStartFailureCode, mCm.startUsingNetworkFeature(TYPE_MOBILE,
+                    invalidFeature));
+            assertEquals(wifiOnlyStopFailureCode, mCm.stopUsingNetworkFeature(TYPE_MOBILE,
+                    invalidFeature));
+        }
+
+        ni = mCm.getNetworkInfo(TYPE_WIFI);
+        if (ni != null) {
+            // Should return failure because MMS is not supported on WIFI.
+            assertEquals(APN_REQUEST_FAILED, mCm.startUsingNetworkFeature(TYPE_WIFI,
+                    mmsFeature));
+            assertEquals(failureCode, mCm.stopUsingNetworkFeature(TYPE_WIFI,
+                    mmsFeature));
+        }
+    }
+
+    private void expectNetworkBroadcast(final int type, final NetworkInfo.State state,
+            Runnable afterWhat) {
+        final int TIMEOUT_MS = 30 * 1000;
+        final ConditionVariable var = new ConditionVariable();
+
+        Log.d(TAG, "Waiting for " + state + " broadcast for type " + type);
+        BroadcastReceiver receiver = new BroadcastReceiver() {
+            public void onReceive(Context context, Intent intent) {
+                NetworkInfo ni = intent.getExtras()
+                        .getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);
+                assertNotNull("CONNECTIVITY_ACTION with null EXTRA_NETWORK_INFO", ni);
+                if (ni.getType() == type && ni.getState().equals(state)) {
+                    Log.d(TAG, "Received expected " + state + " broadcast for type " + type);
+                    var.open();
+                }
+            }
+        };
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(CONNECTIVITY_ACTION);
+        mContext.registerReceiver(receiver, filter);
+
+        try {
+            afterWhat.run();
+            final String msg = "Did not receive expected " + state + " broadcast for type " + type +
+                    " after " + TIMEOUT_MS + " ms";
+            assertTrue(msg, var.block(TIMEOUT_MS));
+        } finally {
+            mContext.unregisterReceiver(receiver);
+        }
+    }
+
+    private boolean isWifiConnected() {
+        NetworkInfo ni = mCm.getNetworkInfo(TYPE_WIFI);
+        return ni != null && ni.isConnected();
+    }
+
+    private void setWifiState(final boolean enabled) {
+        if (enabled != isWifiConnected()) {
+            final NetworkInfo.State desiredState = enabled ?
+                    NetworkInfo.State.CONNECTED :
+                    NetworkInfo.State.DISCONNECTED;
+            expectNetworkBroadcast(TYPE_WIFI, desiredState, new Runnable() {
+                public void run() {
+                    mWifiManager.setWifiEnabled(enabled);
+                }
+            });
+        }
+    }
+
+    private void connectToWifi() {
+        setWifiState(true);
+    }
+
+    private void disconnectFromWifi() {
+        setWifiState(false);
+    }
+
+    private boolean isNetworkSupported(int networkType) {
+        return mCm.getNetworkInfo(networkType) != null;
+    }
+
+    public void testRequestRouteToHost() throws Exception {
+        for (int type = -1 ; type <= MAX_NETWORK_TYPE; type++) {
+            NetworkInfo ni = mCm.getNetworkInfo(type);
+            boolean expectToWork = isNetworkSupported(type) && !isNetworkProtected(type) &&
+                    ni != null && ni.isConnected();
+
+            try {
+                assertTrue("Network type " + type,
+                        mCm.requestRouteToHost(type, ipv4AddrToInt(HOST_ADDRESS3)) == expectToWork);
+            } catch (Exception e) {
+                Log.d(TAG, "got exception in requestRouteToHost for type " + type);
+                assertFalse("Exception received for type " + type, expectToWork);
+            }
+
+            //TODO verify route table
+        }
+
+        assertFalse(mCm.requestRouteToHost(-1, ipv4AddrToInt(HOST_ADDRESS1)));
+    }
+}
diff --git a/tests/tests/os/jni/android_os_cts_SeccompTest.cpp b/tests/tests/os/jni/android_os_cts_SeccompTest.cpp
index 528696b..1ba8550 100644
--- a/tests/tests/os/jni/android_os_cts_SeccompTest.cpp
+++ b/tests/tests/os/jni/android_os_cts_SeccompTest.cpp
@@ -33,7 +33,7 @@
 struct __test_metadata* get_seccomp_test_list();
 }
 
-static const char TAG[] = "SecompBpfTest-Native";
+static const char TAG[] = "SeccompBpfTest-Native";
 
 jboolean android_security_cts_SeccompBpfTest_runKernelUnitTest(
       JNIEnv* env, jobject thiz __unused, jstring name) {
diff --git a/tests/tests/os/src/android/os/cts/SeccompTest.java b/tests/tests/os/src/android/os/cts/SeccompTest.java
index 0340580..7376079 100644
--- a/tests/tests/os/src/android/os/cts/SeccompTest.java
+++ b/tests/tests/os/src/android/os/cts/SeccompTest.java
@@ -50,6 +50,15 @@
         System.loadLibrary("ctsos_jni");
     }
 
+    // As this test validates a kernel system call interface, if the CTS tests
+    // were built for ARM but are running on an x86 CPU, the system call numbers
+    // will not be correct, so skip those tests.
+    private boolean isRunningUnderEmulatedAbi() {
+        final String primaryAbi = Build.SUPPORTED_ABIS[0];
+        return (CpuFeatures.isArmCpu() || CpuFeatures.isArm64Cpu()) &&
+               !(primaryAbi.equals("armeabi-v7a") || primaryAbi.equals("arm64-v8a"));
+    }
+
     public void testSeccomp() {
         if (OSFeatures.needsSeccompSupport()) {
             assertTrue("Please enable seccomp support "
@@ -62,6 +71,11 @@
         if (!OSFeatures.needsSeccompSupport())
             return;
 
+        if (isRunningUnderEmulatedAbi()) {
+            Log.d(TAG, "Skipping test running under an emulated ABI");
+            return;
+        }
+
         final String[] tests = {
             "global.mode_strict_support",
             "global.mode_strict_cannot_call_prctl",
@@ -137,6 +151,11 @@
         if (!OSFeatures.needsSeccompSupport())
             return;
 
+        if (isRunningUnderEmulatedAbi()) {
+            Log.d(TAG, "Skipping test running under an emulated ABI");
+            return;
+        }
+
         final String[] tests = {
             "global.seccomp_syscall",
             "global.seccomp_syscall_mode_lock",
@@ -175,6 +194,11 @@
         if (!OSFeatures.needsSeccompSupport())
             return;
 
+        if (isRunningUnderEmulatedAbi()) {
+            Log.d(TAG, "Skipping test running under an emulated ABI");
+            return;
+        }
+
         final IsolatedServiceConnection peer = new IsolatedServiceConnection();
         final Intent intent = new Intent(getContext(), IsolatedService.class);
         assertTrue(getContext().bindService(intent, peer, Context.BIND_AUTO_CREATE));
@@ -201,6 +225,11 @@
         if (!OSFeatures.needsSeccompSupport())
             return;
 
+        if (isRunningUnderEmulatedAbi()) {
+            Log.d(TAG, "Skipping test running under an emulated ABI");
+            return;
+        }
+
         final IsolatedServiceConnection peer = new IsolatedServiceConnection();
         final Intent intent = new Intent(getContext(), IsolatedService.class);
         assertTrue(getContext().bindService(intent, peer, Context.BIND_AUTO_CREATE));
diff --git a/tests/tests/permission/src/android/permission/cts/AccountManagerTest.java b/tests/tests/permission/src/android/permission/cts/AccountManagerTest.java
deleted file mode 100644
index 5d4378f..0000000
--- a/tests/tests/permission/src/android/permission/cts/AccountManagerTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-package android.permission.cts;
-
-import android.content.Context;
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.AccountManagerFuture;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-/**
- * Verify GET_ACCOUNTS permissions are enforced.
- */
-public class AccountManagerTest extends AndroidTestCase {
-
-    private AccountManager mAccountManager;
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        mAccountManager = AccountManager.get(getContext());
-        assertNotNull(mAccountManager);
-    }
-
-    /**
-     * Verifies that AccountManager.getAccounts() requires Permission.
-     * <p>
-     * Requires Permission: {@link android.Manifest.permission#GET_ACCOUNTS}.
-     */
-    @SmallTest
-    public void testGetAccounts() {
-        try {
-            mAccountManager.getAccounts();
-            fail("AccountManager.getAccounts() did not throw SecurityException as expected");
-        } catch (SecurityException se) {
-            // Expected Exception
-        }
-    }
-
-    /**
-     * Verifies that AccountManager.getAccountsByType() requires Permission.
-     * <p>
-     * Requires Permission: {@link android.Manifest.permission#GET_ACCOUNTS}.
-     */
-    @SmallTest
-    public void testGetAccountsByType() {
-        try {
-            mAccountManager.getAccountsByType(null);
-            fail("AccountManager.getAccountsByType() did not throw SecurityException as expected");
-        } catch (SecurityException se) {
-            // Expected Exception
-        }
-    }
-
-    /**
-     * Verifies that AccountManager.getAccountsByTypeAndFeatures() requires
-     * Permission.
-     * <p>
-     * Requires Permission: {@link android.Manifest.permission#GET_ACCOUNTS}.
-     */
-    @SmallTest
-    public void testGetAccountsByTypeAndFeatures() {
-        try {
-            mAccountManager.getAccountsByTypeAndFeatures("", null, null, null);
-            fail("AccountManager.getAccountsByTypeAndFeatures() did not throw SecurityException as expected");
-        } catch (SecurityException se) {
-            // Expected Exception
-        }
-    }
-}
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index 5ec3c45..7b4adb0 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -19,6 +19,7 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.os.Environment;
+import android.os.SystemProperties;
 import android.system.Os;
 import android.system.OsConstants;
 import android.system.StructStatVfs;
@@ -360,6 +361,19 @@
 
     @MediumTest
     public void testDeviceTreeCpuCurrent() throws Exception {
+        String arch = System.getProperty("os.arch");
+        String flavor = SystemProperties.get("ro.build.flavor");
+        String[] osVersion = System.getProperty("os.version").split("\\.");
+        /*
+         * Perform the test for only arm-based architecture and
+         * kernel version 3.10 and above.
+         */
+        if (!arch.contains("arm") ||
+            Integer.parseInt(osVersion[0]) < 2 ||
+            (Integer.parseInt(osVersion[0]) == 3 &&
+             Integer.parseInt(osVersion[1]) < 10) ||
+             flavor.contains("sprout") || flavor.contains("sprout_b"))
+            return;
         final File f = new File("/proc/device-tree/cpus");
         assertTrue(f.exists());
         String[] dir = f.list(new FilenameFilter() {
diff --git a/tests/tests/permission/src/android/permission/cts/ProviderPermissionTest.java b/tests/tests/permission/src/android/permission/cts/ProviderPermissionTest.java
index 2dd5892..6d55a69 100644
--- a/tests/tests/permission/src/android/permission/cts/ProviderPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/ProviderPermissionTest.java
@@ -16,8 +16,10 @@
 
 package android.permission.cts;
 
+import android.content.ContentValues;
 import android.provider.CallLog;
 import android.provider.Contacts;
+import android.provider.Settings;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
 
@@ -73,7 +75,19 @@
      *   {@link android.Manifest.permission#WRITE_SETTINGS}
      */
     public void testWriteSettings() {
-        assertWritingContentUriRequiresPermission(android.provider.Settings.System.CONTENT_URI,
-                android.Manifest.permission.WRITE_SETTINGS);
+        final String permission = android.Manifest.permission.WRITE_SETTINGS;
+        ContentValues value = new ContentValues();
+        value.put(Settings.System.NAME, "name");
+        value.put(Settings.System.VALUE, "value_insert");
+
+        try {
+            getContext().getContentResolver().insert(Settings.System.CONTENT_URI, value);
+            fail("expected SecurityException requiring " + permission);
+        } catch (SecurityException expected) {
+            assertNotNull("security exception's error message.", expected.getMessage());
+            assertTrue("error message should contain \"" + permission + "\". Got: \""
+                    + expected.getMessage() + "\".",
+                    expected.getMessage().contains(permission));
+        }
     }
 }
diff --git a/tests/tests/permission/src/android/permission/cts/TvPermissionTest.java b/tests/tests/permission/src/android/permission/cts/TvPermissionTest.java
new file mode 100644
index 0000000..4139059
--- /dev/null
+++ b/tests/tests/permission/src/android/permission/cts/TvPermissionTest.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+package android.permission.cts;
+
+import android.content.ContentValues;
+import android.content.pm.PackageManager;
+import android.media.tv.TvContract;
+import android.net.Uri;
+import android.test.AndroidTestCase;
+
+/**
+ * Tests for TV API related permissions.
+ */
+public class TvPermissionTest extends AndroidTestCase {
+    private static final String DUMMY_INPUT_ID = "dummy";
+
+    private boolean mHasTvInputFramework;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mHasTvInputFramework = getContext().getPackageManager()
+                .hasSystemFeature(PackageManager.FEATURE_LIVE_TV);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void verifyInsert(Uri uri, String tableName) throws Exception {
+        try {
+            ContentValues values = new ContentValues();
+            getContext().getContentResolver().insert(uri, values);
+            fail("Accessing " + tableName + " table should require WRITE_EPG_DATA permission.");
+        } catch (SecurityException e) {
+            // Expected exception
+        }
+    }
+
+    public void verifyUpdate(Uri uri, String tableName) throws Exception {
+        try {
+            ContentValues values = new ContentValues();
+            getContext().getContentResolver().update(uri, values, null, null);
+            fail("Accessing " + tableName + " table should require WRITE_EPG_DATA permission.");
+        } catch (SecurityException e) {
+            // Expected exception
+        }
+    }
+
+    public void verifyDelete(Uri uri, String tableName) throws Exception {
+        try {
+            getContext().getContentResolver().delete(uri, null, null);
+            fail("Accessing " + tableName + " table should require WRITE_EPG_DATA permission.");
+        } catch (SecurityException e) {
+            // Expected exception
+        }
+    }
+
+    public void testInsertChannels() throws Exception {
+        if (!mHasTvInputFramework) return;
+        verifyInsert(TvContract.Channels.CONTENT_URI, "channels");
+    }
+
+    public void testUpdateChannels() throws Exception {
+        if (!mHasTvInputFramework) return;
+        verifyUpdate(TvContract.Channels.CONTENT_URI, "channels");
+    }
+
+    public void testDeleteChannels() throws Exception {
+        if (!mHasTvInputFramework) return;
+        verifyDelete(TvContract.Channels.CONTENT_URI, "channels");
+    }
+
+    public void testInsertPrograms() throws Exception {
+        if (!mHasTvInputFramework) return;
+        verifyInsert(TvContract.Programs.CONTENT_URI, "programs");
+    }
+
+    public void testUpdatePrograms() throws Exception {
+        if (!mHasTvInputFramework) return;
+        verifyUpdate(TvContract.Programs.CONTENT_URI, "programs");
+    }
+
+    public void testDeletePrograms() throws Exception {
+        if (!mHasTvInputFramework) return;
+        verifyDelete(TvContract.Programs.CONTENT_URI, "programs");
+    }
+}
diff --git a/tests/tests/permission2/src/android/permission2/cts/PermissionPolicyTest.java b/tests/tests/permission2/src/android/permission2/cts/PermissionPolicyTest.java
new file mode 100644
index 0000000..a4d68cb
--- /dev/null
+++ b/tests/tests/permission2/src/android/permission2/cts/PermissionPolicyTest.java
@@ -0,0 +1,64 @@
+/*
+* Copyright (C) 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.
+*/
+
+package android.permission2.cts;
+
+import android.Manifest;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionInfo;
+import android.test.AndroidTestCase;
+import android.text.TextUtils;
+import android.util.ArraySet;
+
+import java.util.Set;
+
+/**
+ * Tests for permission policy on the platform.
+ */
+public class PermissionPolicyTest extends AndroidTestCase {
+    private static final String PLATFORM_PACKAGE_NAME = "android";
+
+    private static final Set<String> PERMISSION_GROUPS = new ArraySet<>();
+    static {
+        PERMISSION_GROUPS.add(Manifest.permission_group.CALENDAR);
+        PERMISSION_GROUPS.add(Manifest.permission_group.CAMERA);
+        PERMISSION_GROUPS.add(Manifest.permission_group.CONTACTS);
+        PERMISSION_GROUPS.add(Manifest.permission_group.LOCATION);
+        PERMISSION_GROUPS.add(Manifest.permission_group.MICROPHONE);
+        PERMISSION_GROUPS.add(Manifest.permission_group.PHONE);
+        PERMISSION_GROUPS.add(Manifest.permission_group.SENSORS);
+        PERMISSION_GROUPS.add(Manifest.permission_group.SMS);
+        PERMISSION_GROUPS.add(Manifest.permission_group.STORAGE);
+    }
+
+    public void testPlatformDefinedRuntimePermissionValid() throws Exception {
+        PackageManager packageManager = getContext().getPackageManager();
+        PackageInfo packageInfo = packageManager.getPackageInfo(PLATFORM_PACKAGE_NAME,
+                PackageManager.GET_PERMISSIONS);
+        for (PermissionInfo permission : packageInfo.permissions) {
+            if ((permission.protectionLevel & PermissionInfo.PROTECTION_DANGEROUS) == 0) {
+                continue;
+            }
+            assertTrue(permission.name + " must be in one of these groups: " + PERMISSION_GROUPS,
+                    PERMISSION_GROUPS.contains(permission.group));
+            assertFalse(permission.name + " must have non-empty label",
+                    TextUtils.isEmpty(permission.loadLabel(packageManager)));
+            assertFalse(permission.name + " must have non-empty description",
+                    TextUtils.isEmpty(permission.loadDescription(packageManager)));
+        }
+    }
+}
diff --git a/tests/tests/print/src/android/print/cts/BasePrintTest.java b/tests/tests/print/src/android/print/cts/BasePrintTest.java
index 31dfb9f..e75ec94 100644
--- a/tests/tests/print/src/android/print/cts/BasePrintTest.java
+++ b/tests/tests/print/src/android/print/cts/BasePrintTest.java
@@ -60,9 +60,13 @@
 import org.mockito.InOrder;
 import org.mockito.stubbing.Answer;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 import java.util.concurrent.TimeoutException;
@@ -80,6 +84,12 @@
 
     private static final String PM_CLEAR_SUCCESS_OUTPUT = "Success";
 
+    private static final String COMMAND_LIST_ENABLED_IME_COMPONENTS = "ime list -s";
+
+    private static final String COMMAND_PREFIX_ENABLE_IME = "ime enable ";
+
+    private static final String COMMAND_PREFIX_DISABLE_IME = "ime disable ";
+
     private PrintDocumentActivity mActivity;
 
     private Locale mOldLocale;
@@ -91,11 +101,49 @@
     private CallCounter mPrintJobQueuedCallCounter;
     private CallCounter mDestroySessionCallCounter;
 
+    private String[] mEnabledImes;
+
+    private String[] getEnabledImes() throws IOException {
+        List<String> imeList = new ArrayList<>();
+
+        ParcelFileDescriptor pfd = getInstrumentation().getUiAutomation()
+                .executeShellCommand(COMMAND_LIST_ENABLED_IME_COMPONENTS);
+        BufferedReader reader = new BufferedReader(
+                new InputStreamReader(new FileInputStream(pfd.getFileDescriptor())));
+
+        String line;
+        while ((line = reader.readLine()) != null) {
+            imeList.add(line);
+        }
+
+        String[] imeArray = new String[imeList.size()];
+        imeList.toArray(imeArray);
+
+        return imeArray;
+    }
+
+    private void disableImes() throws Exception {
+        mEnabledImes = getEnabledImes();
+        for (String ime : mEnabledImes) {
+            String disableImeCommand = COMMAND_PREFIX_DISABLE_IME + ime;
+            SystemUtil.runShellCommand(getInstrumentation(), disableImeCommand);
+        }
+    }
+
+    private void enableImes() throws Exception {
+        for (String ime : mEnabledImes) {
+            String enableImeCommand = COMMAND_PREFIX_ENABLE_IME + ime;
+            SystemUtil.runShellCommand(getInstrumentation(), enableImeCommand);
+        }
+        mEnabledImes = null;
+    }
+
     @Override
     public void setUp() throws Exception {
         // Make sure we start with a clean slate.
         clearPrintSpoolerData();
         enablePrintServices();
+        disableImes();
 
         // Workaround for dexmaker bug: https://code.google.com/p/dexmaker/issues/detail?id=2
         // Dexmaker is used by mockito.
@@ -130,6 +178,7 @@
     public void tearDown() throws Exception {
         // Done with the activity.
         getActivity().finish();
+        enableImes();
 
         // Restore the locale if needed.
         if (mOldLocale != null) {
diff --git a/tests/tests/provider/AndroidManifest.xml b/tests/tests/provider/AndroidManifest.xml
index b1a7130..ed180f6 100644
--- a/tests/tests/provider/AndroidManifest.xml
+++ b/tests/tests/provider/AndroidManifest.xml
@@ -32,8 +32,6 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
-    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
-    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
     <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
     <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
@@ -62,6 +60,15 @@
                        android:resource="@xml/contactprovider_authenticator"/>
         </service>
 
+        <service android:name=".MockInputMethodService"
+                 android:label="UserDictionaryInputMethodTestService"
+                 android:permission="android.permission.BIND_INPUT_METHOD">
+            <intent-filter>
+                <action android:name="android.view.InputMethod" />
+            </intent-filter>
+            <meta-data android:name="android.view.im"
+                       android:resource="@xml/method" />
+        </service>
     </application>
 
     <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
diff --git a/tests/tests/provider/AndroidTest.xml b/tests/tests/provider/AndroidTest.xml
new file mode 100644
index 0000000..ae603a3
--- /dev/null
+++ b/tests/tests/provider/AndroidTest.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 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
+  -->
+<configuration description="Test module config for provider">
+    <include name="common-config" />
+    <option name="cts-apk-installer:test-file-name" value="CtsProviderTestCases.apk" />
+    <option name="run-command:run-command"
+            value="ime enable com.android.cts.provider/.MockInputMethodService" />
+</configuration>
\ No newline at end of file
diff --git a/tests/tests/provider/res/xml/method.xml b/tests/tests/provider/res/xml/method.xml
new file mode 100644
index 0000000..5ac1b80
--- /dev/null
+++ b/tests/tests/provider/res/xml/method.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 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
+  -->
+
+<input-method xmlns:android="http://schemas.android.com/apk/res/android"
+              android:settingsActivity="android.provider.cts.NoSuchActivity"
+/>
diff --git a/tests/tests/provider/src/android/provider/cts/ContactsContract_DataTest.java b/tests/tests/provider/src/android/provider/cts/ContactsContract_DataTest.java
index c695630..33d3a28 100644
--- a/tests/tests/provider/src/android/provider/cts/ContactsContract_DataTest.java
+++ b/tests/tests/provider/src/android/provider/cts/ContactsContract_DataTest.java
@@ -22,7 +22,6 @@
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
 import android.content.ContentValues;
-import android.database.Cursor;
 import android.net.Uri;
 import android.os.SystemClock;
 import android.provider.ContactsContract;
@@ -402,7 +401,7 @@
                         Data.STATUS_ICON,
                         Data.TIMES_USED,
                         Data.LAST_TIME_USED},
-                new long[]{rawContact.getId()}
+                new long[]{contactId}
         );
     }
 
diff --git a/tests/tests/provider/src/android/provider/cts/ContactsContract_PinnedPositionsTest.java b/tests/tests/provider/src/android/provider/cts/ContactsContract_PinnedPositionsTest.java
index 2558c36..e56127b 100644
--- a/tests/tests/provider/src/android/provider/cts/ContactsContract_PinnedPositionsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/ContactsContract_PinnedPositionsTest.java
@@ -203,9 +203,9 @@
         ContactUtil.setAggregationException(mResolver, AggregationExceptions.TYPE_KEEP_SEPARATE,
             i1.mRawContactId, i4.mRawContactId);
 
-        // Raw contacts should be unpinned after being split, but still starred.
+        // Raw contacts should keep the pinned position after re-grouping, and still starred.
         assertValuesForRawContact(i1.mRawContactId,
-                newContentValues(RawContacts.PINNED, PinnedPositions.UNPINNED, RawContacts.STARRED,
+                newContentValues(RawContacts.PINNED, 1, RawContacts.STARRED,
                         1));
         assertValuesForRawContact(i2.mRawContactId,
                 newContentValues(RawContacts.PINNED, 2, RawContacts.STARRED, 1));
@@ -229,7 +229,7 @@
         final long cId1 = RawContactUtil.queryContactIdByRawContactId(mResolver, i1.mRawContactId);
         final long cId4 = RawContactUtil.queryContactIdByRawContactId(mResolver, i4.mRawContactId);
 
-        assertValuesForContact(cId1, newContentValues(Contacts.PINNED, PinnedPositions.UNPINNED));
+        assertValuesForContact(cId1, newContentValues(Contacts.PINNED, 1));
         assertValuesForContact(i2.mContactId, newContentValues(Contacts.PINNED, 2));
         assertValuesForContact(cId4, newContentValues(Contacts.PINNED, PinnedPositions.UNPINNED));
         assertValuesForContact(i5.mContactId,
@@ -241,7 +241,7 @@
                 i5.mRawContactId, i6.mRawContactId);
 
         // The resulting contact should have a pinned value of 6.
-        assertValuesForContact(cId1, newContentValues(Contacts.PINNED, PinnedPositions.UNPINNED));
+        assertValuesForContact(cId1, newContentValues(Contacts.PINNED, 1));
         assertValuesForContact(i2.mContactId, newContentValues(Contacts.PINNED, 2));
         assertValuesForContact(cId4, newContentValues(Contacts.PINNED, PinnedPositions.UNPINNED));
         assertValuesForContact(i5.mContactId, newContentValues(Contacts.PINNED, 6));
diff --git a/tests/tests/provider/src/android/provider/cts/ContactsTest.java b/tests/tests/provider/src/android/provider/cts/ContactsTest.java
index 9febaa2..4d1cb86 100644
--- a/tests/tests/provider/src/android/provider/cts/ContactsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/ContactsTest.java
@@ -40,6 +40,7 @@
 import android.provider.Contacts.Phones;
 import android.provider.Contacts.Photos;
 import android.provider.Contacts.Settings;
+import android.provider.ContactsContract;
 import android.telephony.PhoneNumberUtils;
 import android.test.InstrumentationTestCase;
 
@@ -56,7 +57,7 @@
     protected void setUp() throws Exception {
         super.setUp();
         mContentResolver = getInstrumentation().getTargetContext().getContentResolver();
-        mProvider = mContentResolver.acquireContentProviderClient(Contacts.AUTHORITY);
+        mProvider = mContentResolver.acquireContentProviderClient(ContactsContract.AUTHORITY);
         mCallLogProvider = mContentResolver.acquireContentProviderClient(CallLog.AUTHORITY);
     }
 
diff --git a/tests/tests/provider/src/android/provider/cts/Settings_SystemTest.java b/tests/tests/provider/src/android/provider/cts/Settings_SystemTest.java
index 96ea1d0..b3c545e 100644
--- a/tests/tests/provider/src/android/provider/cts/Settings_SystemTest.java
+++ b/tests/tests/provider/src/android/provider/cts/Settings_SystemTest.java
@@ -21,11 +21,16 @@
 import android.content.res.Configuration;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.ParcelFileDescriptor;
 import android.provider.Settings.SettingNotFoundException;
 import android.provider.Settings.System;
-import android.test.AndroidTestCase;
+import android.test.InstrumentationTestCase;
 
-public class Settings_SystemTest extends AndroidTestCase {
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Scanner;
+
+public class Settings_SystemTest extends InstrumentationTestCase {
     private ContentResolver cr;
 
     private static final String INT_FIELD = "IntField";
@@ -37,7 +42,7 @@
     protected void setUp() throws Exception {
         super.setUp();
 
-        cr = mContext.getContentResolver();
+        cr = getInstrumentation().getContext().getContentResolver();
         assertNotNull(cr);
     }
 
@@ -55,6 +60,34 @@
         cr.delete(System.CONTENT_URI, selection, null);
     }
 
+    private void enableAppOps() {
+        StringBuilder cmd = new StringBuilder();
+        cmd.append("appops set ");
+        cmd.append(getInstrumentation().getContext().getPackageName());
+        cmd.append(" android:write_settings allow");
+        getInstrumentation().getUiAutomation().executeShellCommand(cmd.toString());
+
+        StringBuilder query = new StringBuilder();
+        query.append("appops get ");
+        query.append(getInstrumentation().getContext().getPackageName());
+        query.append(" android:write_settings");
+        String queryStr = query.toString();
+
+        String result = "No operations.";
+        while (result.contains("No operations")) {
+            ParcelFileDescriptor pfd = getInstrumentation().getUiAutomation().executeShellCommand(
+                    queryStr);
+            InputStream inputStream = new FileInputStream(pfd.getFileDescriptor());
+            result = convertStreamToString(inputStream);
+        }
+    }
+
+    private String convertStreamToString(InputStream is) {
+        try (Scanner scanner = new Scanner(is).useDelimiter("\\A")) {
+            return scanner.hasNext() ? scanner.next() : "";
+        }
+    }
+
     public void testSystemSettings() throws SettingNotFoundException {
         /**
          * first query the exist settings in System table, and then insert five
diff --git a/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java b/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
index 0eba9f2..b06ddfa 100644
--- a/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
+++ b/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
@@ -52,32 +52,35 @@
 
     // Test that the TelephonyProvider doesn't allow clients to update _data column data and
     // if they can, that they can't abuse the provider to open an arbitrary file.
-    public void testOpeningAnyFile() {
-        Uri uri = Uri.parse("content://mms/100/part");
-        try {
-            ContentValues values2 = new ContentValues();
-            values2.put("_data", "/dev/urandom");
-            Uri uri2 = mContentResolver.insert(uri, values2);
-            assertEquals("The code was able to insert the _data column", null, uri2);
-            if (uri2 == null) {
-                return;
-            }
-            ContentValues values = new ContentValues();
-            values.put("_data", "/dev/urandom");
-            int rowCnt = mContentResolver.update(uri2, values, null, null);
-            assertEquals("Was able to update the _data column", 0, rowCnt);
-
-            ParcelFileDescriptor pfd = mContentResolver.openFileDescriptor(uri2, "rw");
-            pfd.getFileDescriptor();
-            FileDescriptor fd = pfd.getFileDescriptor();
-            Field fld = fd.getClass().getDeclaredField("descriptor");
-            fld.setAccessible(true);
-            int fint  = fld.getInt(fd);
-            fail("The code was able to abuse the MmsProvider to open any file");
-        } catch(Exception e){
-            e.printStackTrace();
-        }
-    }
+    // --- This test is commented out for now because the test needs to run as if it were
+    // the default SMS app. Until we have a way to do that in the test framework, the test will
+    // fail (i.e. the insert will appear to have succeeded when it really hasn't).
+//    public void testOpeningAnyFile() {
+//        Uri uri = Uri.parse("content://mms/100/part");
+//        try {
+//            ContentValues values2 = new ContentValues();
+//            values2.put("_data", "/dev/urandom");
+//            Uri uri2 = mContentResolver.insert(uri, values2);
+//            assertNull("The code was able to insert the _data column", uri2);
+//            if (uri2 == null) {
+//                return;
+//            }
+//            ContentValues values = new ContentValues();
+//            values.put("_data", "/dev/urandom");
+//            int rowCnt = mContentResolver.update(uri2, values, null, null);
+//            assertEquals("Was able to update the _data column", 0, rowCnt);
+//
+//            ParcelFileDescriptor pfd = mContentResolver.openFileDescriptor(uri2, "rw");
+//            pfd.getFileDescriptor();
+//            FileDescriptor fd = pfd.getFileDescriptor();
+//            Field fld = fd.getClass().getDeclaredField("descriptor");
+//            fld.setAccessible(true);
+//            int fint  = fld.getInt(fd);
+//            fail("The code was able to abuse the MmsProvider to open any file");
+//        } catch(Exception e){
+//            e.printStackTrace();
+//        }
+//    }
 
     // In JB MR1 access to the TelephonyProvider's Carriers table was clamped down and would
     // throw a SecurityException when queried. That was fixed in JB MR2. Verify that 3rd parties
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ForEachTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ForEachTest.java
index b90633e..38831f4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ForEachTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ForEachTest.java
@@ -475,8 +475,8 @@
         s.invoke_verify_foo();
         s.invoke_foreach_test();
         mRS.finish();
-        checkForErrors();
         waitForMessage();
+        checkForErrors();
     }
 
     public void testNoRoot() {
@@ -494,7 +494,7 @@
         s.invoke_verify_foo();
         s.invoke_noroot_test();
         mRS.finish();
-        checkForErrors();
         waitForMessage();
+        checkForErrors();
     }
 }
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/KernelInputTest.java b/tests/tests/renderscript/src/android/renderscript/cts/KernelInputTest.java
new file mode 100644
index 0000000..ecb1b6d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/KernelInputTest.java
@@ -0,0 +1,619 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.renderscript.cts;
+
+import android.renderscript.Allocation;
+
+import android.renderscript.Byte2;
+import android.renderscript.Byte3;
+import android.renderscript.Byte4;
+
+import android.renderscript.Double2;
+import android.renderscript.Double3;
+import android.renderscript.Double4;
+
+import android.renderscript.Element;
+
+import android.renderscript.Float2;
+import android.renderscript.Float3;
+import android.renderscript.Float4;
+
+import android.renderscript.Int2;
+import android.renderscript.Int3;
+import android.renderscript.Int4;
+
+import android.renderscript.Long2;
+import android.renderscript.Long3;
+import android.renderscript.Long4;
+
+import android.renderscript.Short2;
+import android.renderscript.Short3;
+import android.renderscript.Short4;
+
+import android.renderscript.Element;
+
+/*
+ * This checks that modifications to input arguments done by a kernel
+ * are never reflected back to the input Allocation.
+ *
+ * The test works by launching forEach kernels that take different
+ * types of inputs. Each forEach kernel modifies its input in some way.
+ * After running the forEach kernel, the input Allocation is checked
+ * that it remains unmodified.
+ */
+public class KernelInputTest extends RSBaseCompute {
+
+    void checkForErrorsInScript(ScriptC_kernel_input script) {
+        mRS.finish();
+        script.invoke_checkError();
+        waitForMessage();
+        checkForErrors();
+    }
+
+    public void testInputNotModified_char() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I8(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I8(mRS), 1);
+
+        script.set_initial_value_char((byte) 6);
+        ain.copyFrom(new byte[]{ (byte) 6 });
+        script.forEach_clear_input_char(ain, tmp);
+        script.invoke_verify_input_char(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_char2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I8_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I8_2(mRS), 1);
+
+        script.set_initial_value_char2(new Byte2((byte) 127, (byte) 3));
+        ain.copyFrom(new byte[]{ (byte) 127, (byte) 3 });
+        script.forEach_clear_input_char2(ain, tmp);
+        script.invoke_verify_input_char2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_char3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I8_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I8_3(mRS), 1);
+
+        script.set_initial_value_char3(new Byte3((byte) 127, (byte) 3, (byte) 4));
+        ain.copyFrom(new byte[]{ (byte) 127, (byte) 3, (byte) 4, 0 });
+        script.forEach_clear_input_char3(ain, tmp);
+        script.invoke_verify_input_char3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_char4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I8_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I8_4(mRS), 1);
+
+        script.set_initial_value_char4(new Byte4((byte) 127, (byte) 3, (byte) 4, (byte) 7));
+        ain.copyFrom(new byte[]{ (byte) 127, (byte) 3, (byte) 4, (byte) 7 });
+        script.forEach_clear_input_char4(ain, tmp);
+        script.invoke_verify_input_char4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_double() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F64(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F64(mRS), 1);
+
+        script.set_initial_value_double((double) 6);
+        ain.copyFrom(new double[]{ (double) 6 });
+        script.forEach_clear_input_double(ain, tmp);
+        script.invoke_verify_input_double(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_double2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F64_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F64_2(mRS), 1);
+
+        script.set_initial_value_double2(new Double2((double) 127, (double) 3));
+        ain.copyFrom(new double[]{ (double) 127, (double) 3 });
+        script.forEach_clear_input_double2(ain, tmp);
+        script.invoke_verify_input_double2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_double3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F64_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F64_3(mRS), 1);
+
+        script.set_initial_value_double3(new Double3((double) 127, (double) 3, (double) 4));
+        ain.copyFrom(new double[]{ (double) 127, (double) 3, (double) 4, 0 });
+        script.forEach_clear_input_double3(ain, tmp);
+        script.invoke_verify_input_double3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_double4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F64_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F64_4(mRS), 1);
+
+        script.set_initial_value_double4(new Double4((double) 127, (double) 3, (double) 4, (double) 7));
+        ain.copyFrom(new double[]{ (double) 127, (double) 3, (double) 4, (double) 7 });
+        script.forEach_clear_input_double4(ain, tmp);
+        script.invoke_verify_input_double4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_float() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F32(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F32(mRS), 1);
+
+        script.set_initial_value_float((float) 6);
+        ain.copyFrom(new float[]{ (float) 6 });
+        script.forEach_clear_input_float(ain, tmp);
+        script.invoke_verify_input_float(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_float2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F32_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F32_2(mRS), 1);
+
+        script.set_initial_value_float2(new Float2((float) 127, (float) 3));
+        ain.copyFrom(new float[]{ (float) 127, (float) 3 });
+        script.forEach_clear_input_float2(ain, tmp);
+        script.invoke_verify_input_float2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_float3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F32_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F32_3(mRS), 1);
+
+        script.set_initial_value_float3(new Float3((float) 127, (float) 3, (float) 4));
+        ain.copyFrom(new float[]{ (float) 127, (float) 3, (float) 4, 0 });
+        script.forEach_clear_input_float3(ain, tmp);
+        script.invoke_verify_input_float3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_float4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.F32_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.F32_4(mRS), 1);
+
+        script.set_initial_value_float4(new Float4((float) 127, (float) 3, (float) 4, (float) 7));
+        ain.copyFrom(new float[]{ (float) 127, (float) 3, (float) 4, (float) 7 });
+        script.forEach_clear_input_float4(ain, tmp);
+        script.invoke_verify_input_float4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_int() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I32(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I32(mRS), 1);
+
+        script.set_initial_value_int(6);
+        ain.copyFrom(new int[]{ 6 });
+        script.forEach_clear_input_int(ain, tmp);
+        script.invoke_verify_input_int(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_int2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I32_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I32_2(mRS), 1);
+
+        script.set_initial_value_int2(new Int2(127, 3));
+        ain.copyFrom(new int[]{ 127, 3 });
+        script.forEach_clear_input_int2(ain, tmp);
+        script.invoke_verify_input_int2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_int3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I32_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I32_3(mRS), 1);
+
+        script.set_initial_value_int3(new Int3(127, 3, 4));
+        ain.copyFrom(new int[]{ 127, 3, 4, 0 });
+        script.forEach_clear_input_int3(ain, tmp);
+        script.invoke_verify_input_int3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_int4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I32_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I32_4(mRS), 1);
+
+        script.set_initial_value_int4(new Int4(127, 3, 4, 7));
+        ain.copyFrom(new int[]{ 127, 3, 4, 7 });
+        script.forEach_clear_input_int4(ain, tmp);
+        script.invoke_verify_input_int4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_long() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I64(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I64(mRS), 1);
+
+        script.set_initial_value_long((long) 6);
+        ain.copyFrom(new long[]{ (long) 6 });
+        script.forEach_clear_input_long(ain, tmp);
+        script.invoke_verify_input_long(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_long2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I64_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I64_2(mRS), 1);
+
+        script.set_initial_value_long2(new Long2((long) 127, (long) 3));
+        ain.copyFrom(new long[]{ (long) 127, (long) 3 });
+        script.forEach_clear_input_long2(ain, tmp);
+        script.invoke_verify_input_long2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_long3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I64_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I64_3(mRS), 1);
+
+        script.set_initial_value_long3(new Long3((long) 127, (long) 3, (long) 4));
+        ain.copyFrom(new long[]{ (long) 127, (long) 3, (long) 4, 0 });
+        script.forEach_clear_input_long3(ain, tmp);
+        script.invoke_verify_input_long3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_long4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I64_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I64_4(mRS), 1);
+
+        script.set_initial_value_long4(new Long4((long) 127, (long) 3, (long) 4, (long) 7));
+        ain.copyFrom(new long[]{ (long) 127, (long) 3, (long) 4, (long) 7 });
+        script.forEach_clear_input_long4(ain, tmp);
+        script.invoke_verify_input_long4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_short() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I16(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I16(mRS), 1);
+
+        script.set_initial_value_short((short) 6);
+        ain.copyFrom(new short[]{ (short) 6 });
+        script.forEach_clear_input_short(ain, tmp);
+        script.invoke_verify_input_short(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_short2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I16_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I16_2(mRS), 1);
+
+        script.set_initial_value_short2(new Short2((short) 127, (short) 3));
+        ain.copyFrom(new short[]{ (short) 127, (short) 3 });
+        script.forEach_clear_input_short2(ain, tmp);
+        script.invoke_verify_input_short2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_short3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I16_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I16_3(mRS), 1);
+
+        script.set_initial_value_short3(new Short3((short) 127, (short) 3, (short) 4));
+        ain.copyFrom(new short[]{ (short) 127, (short) 3, (short) 4, 0 });
+        script.forEach_clear_input_short3(ain, tmp);
+        script.invoke_verify_input_short3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_short4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.I16_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.I16_4(mRS), 1);
+
+        script.set_initial_value_short4(new Short4((short) 127, (short) 3, (short) 4, (short) 7));
+        ain.copyFrom(new short[]{ (short) 127, (short) 3, (short) 4, (short) 7 });
+        script.forEach_clear_input_short4(ain, tmp);
+        script.invoke_verify_input_short4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uchar() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U8(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U8(mRS), 1);
+
+        script.set_initial_value_uchar((short) 6);
+        ain.copyFrom(new byte[]{ (byte) 6 });
+        script.forEach_clear_input_uchar(ain, tmp);
+        script.invoke_verify_input_uchar(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uchar2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U8_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U8_2(mRS), 1);
+
+        script.set_initial_value_uchar2(new Short2((short) 127, (short) 3));
+        ain.copyFrom(new byte[]{ (byte) 127, (byte) 3 });
+        script.forEach_clear_input_uchar2(ain, tmp);
+        script.invoke_verify_input_uchar2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uchar3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U8_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U8_3(mRS), 1);
+
+        script.set_initial_value_uchar3(new Short3((short) 127, (short) 3, (short) 4));
+        ain.copyFrom(new byte[]{ (byte) 127, (byte) 3, (byte) 4, 0 });
+        script.forEach_clear_input_uchar3(ain, tmp);
+        script.invoke_verify_input_uchar3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uchar4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U8_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U8_4(mRS), 1);
+
+        script.set_initial_value_uchar4(new Short4((short) 127, (short) 3, (short) 4, (short) 7));
+        ain.copyFrom(new byte[]{ (byte) 127, (byte) 3, (byte) 4, (byte) 7 });
+        script.forEach_clear_input_uchar4(ain, tmp);
+        script.invoke_verify_input_uchar4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uint() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U32(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U32(mRS), 1);
+
+        script.set_initial_value_uint((long) 6);
+        ain.copyFrom(new int[]{ 6 });
+        script.forEach_clear_input_uint(ain, tmp);
+        script.invoke_verify_input_uint(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uint2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U32_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U32_2(mRS), 1);
+
+        script.set_initial_value_uint2(new Long2((long) 127, (long) 3));
+        ain.copyFrom(new int[]{ 127, 3 });
+        script.forEach_clear_input_uint2(ain, tmp);
+        script.invoke_verify_input_uint2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uint3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U32_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U32_3(mRS), 1);
+
+        script.set_initial_value_uint3(new Long3((long) 127, (long) 3, (long) 4));
+        ain.copyFrom(new int[]{ 127, 3, 4, 0 });
+        script.forEach_clear_input_uint3(ain, tmp);
+        script.invoke_verify_input_uint3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_uint4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U32_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U32_4(mRS), 1);
+
+        script.set_initial_value_uint4(new Long4((long) 127, (long) 3, (long) 4, (long) 7));
+        ain.copyFrom(new int[]{ 127, 3, 4, 7 });
+        script.forEach_clear_input_uint4(ain, tmp);
+        script.invoke_verify_input_uint4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ulong() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U64(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U64(mRS), 1);
+
+        script.set_initial_value_ulong((long) 6);
+        ain.copyFrom(new long[]{ (long) 6 });
+        script.forEach_clear_input_ulong(ain, tmp);
+        script.invoke_verify_input_ulong(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ulong2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U64_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U64_2(mRS), 1);
+
+        script.set_initial_value_ulong2(new Long2((long) 127, (long) 3));
+        ain.copyFrom(new long[]{ (long) 127, (long) 3 });
+        script.forEach_clear_input_ulong2(ain, tmp);
+        script.invoke_verify_input_ulong2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ulong3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U64_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U64_3(mRS), 1);
+
+        script.set_initial_value_ulong3(new Long3((long) 127, (long) 3, (long) 4));
+        ain.copyFrom(new long[]{ (long) 127, (long) 3, (long) 4, 0 });
+        script.forEach_clear_input_ulong3(ain, tmp);
+        script.invoke_verify_input_ulong3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ulong4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U64_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U64_4(mRS), 1);
+
+        script.set_initial_value_ulong4(new Long4((long) 127, (long) 3, (long) 4, (long) 7));
+        ain.copyFrom(new long[]{ (long) 127, (long) 3, (long) 4, (long) 7 });
+        script.forEach_clear_input_ulong4(ain, tmp);
+        script.invoke_verify_input_ulong4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ushort() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U16(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U16(mRS), 1);
+
+        script.set_initial_value_ushort(6);
+        ain.copyFrom(new short[]{ (short) 6 });
+        script.forEach_clear_input_ushort(ain, tmp);
+        script.invoke_verify_input_ushort(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ushort2() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U16_2(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U16_2(mRS), 1);
+
+        script.set_initial_value_ushort2(new Int2(127, 3));
+        ain.copyFrom(new short[]{ (short) 127, (short) 3 });
+        script.forEach_clear_input_ushort2(ain, tmp);
+        script.invoke_verify_input_ushort2(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ushort3() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U16_3(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U16_3(mRS), 1);
+
+        script.set_initial_value_ushort3(new Int3(127, 3, 4));
+        ain.copyFrom(new short[]{ (short) 127, (short) 3, (short) 4, 0 });
+        script.forEach_clear_input_ushort3(ain, tmp);
+        script.invoke_verify_input_ushort3(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputNotModified_ushort4() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+        Allocation ain = Allocation.createSized(mRS, Element.U16_4(mRS), 1);
+        Allocation tmp = Allocation.createSized(mRS, Element.U16_4(mRS), 1);
+
+        script.set_initial_value_ushort4(new Int4(127, 3, 4, 7));
+        ain.copyFrom(new short[]{ (short) 127, (short) 3, (short) 4, (short) 7 });
+        script.forEach_clear_input_ushort4(ain, tmp);
+        script.invoke_verify_input_ushort4(ain);
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputsNotModified_small() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+
+        Allocation tmp = Allocation.createSized(mRS, ScriptField_small.createElement(mRS), 1);
+        ScriptField_small item = new ScriptField_small(mRS, 1);
+
+        item.set_x(0, new int[]{6}, true);
+        script.set_initial_value_small(item.get(0));
+        script.forEach_clear_input_small(item.getAllocation(), tmp);
+        script.invoke_verify_input_small(item.getAllocation());
+
+        checkForErrorsInScript(script);
+    }
+
+    public void testInputsNotModified_big() {
+        ScriptC_kernel_input script = new ScriptC_kernel_input(mRS);
+
+        Allocation tmp = Allocation.createSized(mRS, ScriptField_big.createElement(mRS), 1);
+        ScriptField_big item = new ScriptField_big(mRS, 1);
+
+        for (int i = 0; i < 100; i++) {
+            int[] input = new int[100];
+
+            input[i] = 6;
+            item.set_x(0, input, true);
+            script.set_initial_value_big(item.get(0));
+            script.forEach_clear_input_big(item.getAllocation(), tmp);
+            script.invoke_verify_input_big(item.getAllocation());
+       }
+
+      checkForErrorsInScript(script);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/KernelTest.java b/tests/tests/renderscript/src/android/renderscript/cts/KernelTest.java
index 64368b6..90d4fe9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/KernelTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/KernelTest.java
@@ -475,8 +475,8 @@
         s.invoke_verify_foo();
         s.invoke_foreach_test();
         mRS.finish();
-        checkForErrors();
         waitForMessage();
+        checkForErrors();
     }
 
     public void testNoRoot() {
@@ -494,7 +494,7 @@
         s.invoke_verify_foo();
         s.invoke_noroot_test();
         mRS.finish();
-        checkForErrors();
         waitForMessage();
+        checkForErrors();
     }
 }
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java b/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java
index 0175c38..2ca4f13 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java
@@ -34,7 +34,9 @@
     Resources mRes;
 
     private int result;
-    private boolean msgHandled;
+    // msgHandled is used to synchronize between waitForMessage() and the
+    // RSMessageHandler thread.
+    private volatile boolean msgHandled;
 
     protected static final int RS_MSG_TEST_PASSED = 100;
     protected static final int RS_MSG_TEST_FAILED = 101;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SampleTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SampleTest.java
index bc69b0e..a468b9f 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/SampleTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SampleTest.java
@@ -92,8 +92,8 @@
     public void testNearest() {
         mScript.invoke_test_RGBA(mAlloc_RGBA_1D, mAlloc_RGBA_2D);
         mRS.finish();
-        checkForErrors();
         waitForMessage();
+        checkForErrors();
     }
 }
 
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rs b/tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rs
index a3bbf3e..3530f1c 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rs
+++ b/tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rs
@@ -22,12 +22,12 @@
 int gDimX, gDimY, gDimZ;
 static bool failed = false;
 
-void __attribute__((kernel)) check_kernel(int32_t in /* dummy */, rs_kernel_context ctxt) {
-    uint32_t dimX = rsGetDimX(ctxt);
+void __attribute__((kernel)) check_kernel(int32_t in /* dummy */, rs_kernel_context context) {
+    uint32_t dimX = rsGetDimX(context);
     _RS_ASSERT(gDimX == dimX);
-    uint32_t dimY = rsGetDimY(ctxt);
+    uint32_t dimY = rsGetDimY(context);
     _RS_ASSERT(gDimY == dimY);
-    uint32_t dimZ = rsGetDimZ(ctxt);
+    uint32_t dimZ = rsGetDimZ(context);
     _RS_ASSERT(gDimZ == dimZ);
 }
 
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.java
index 91fe3c8..78bdfe8 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAbs extends RSBaseCompute {
 
     private ScriptC_TestAbs script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAbsCharUchar() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x79257810f7393ea6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xf7393ea6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 1), INPUTSIZE);
             script.forEach_testAbsCharUchar(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAbsCharUchar(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -75,28 +81,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsCharUchar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsCharUchar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsChar2Uchar2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xff611dd40e5e407cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xe5e407cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testAbsChar2Uchar2(inV, out);
@@ -115,9 +129,13 @@
 
     private void verifyResultsAbsChar2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -131,28 +149,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsChar2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsChar2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsChar3Uchar3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xff62e6ef0479615al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x479615al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testAbsChar3Uchar3(inV, out);
@@ -171,9 +197,13 @@
 
     private void verifyResultsAbsChar3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -187,28 +217,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsChar3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsChar3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsChar4Uchar4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xff64b009fa948238l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xfa948238l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testAbsChar4Uchar4(inV, out);
@@ -227,9 +265,13 @@
 
     private void verifyResultsAbsChar4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -243,24 +285,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsChar4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsChar4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortUshort {
@@ -269,7 +319,7 @@
     }
 
     private void checkAbsShortUshort() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xfab837da064819cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xa064819cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 1), INPUTSIZE);
             script.forEach_testAbsShortUshort(inV, out);
@@ -288,9 +338,13 @@
 
     private void verifyResultsAbsShortUshort(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -304,28 +358,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsShortUshort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsShortUshort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsShort2Ushort2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x231450e16856b93el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x6856b93el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testAbsShort2Ushort2(inV, out);
@@ -344,9 +406,13 @@
 
     private void verifyResultsAbsShort2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -360,28 +426,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsShort2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsShort2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsShort3Ushort3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x23611868beb24a6al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xbeb24a6al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testAbsShort3Ushort3(inV, out);
@@ -400,9 +474,13 @@
 
     private void verifyResultsAbsShort3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -416,28 +494,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsShort3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsShort3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsShort4Ushort4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x23addff0150ddb96l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x150ddb96l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testAbsShort4Ushort4(inV, out);
@@ -456,9 +542,13 @@
 
     private void verifyResultsAbsShort4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -472,24 +562,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsShort4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsShort4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntUint {
@@ -498,7 +596,7 @@
     }
 
     private void checkAbsIntUint() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x6adb1880ac5b83e6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xac5b83e6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 1), INPUTSIZE);
             script.forEach_testAbsIntUint(inV, out);
@@ -517,9 +615,13 @@
 
     private void verifyResultsAbsIntUint(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -533,28 +635,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsIntUint" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsIntUint" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsInt2Uint2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xc8728053938616fal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x938616fal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testAbsInt2Uint2(inV, out);
@@ -573,9 +683,13 @@
 
     private void verifyResultsAbsInt2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -589,28 +703,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsInt2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsInt2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsInt3Uint3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xc8728af4f28ddbeel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xf28ddbeel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testAbsInt3Uint3(inV, out);
@@ -629,9 +751,13 @@
 
     private void verifyResultsAbsInt3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -645,28 +771,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsInt3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsInt3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAbsInt4Uint4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xc87295965195a0e2l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x5195a0e2l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testAbsInt4Uint4(inV, out);
@@ -685,9 +819,13 @@
 
     private void verifyResultsAbsInt4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -701,24 +839,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAbsInt4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAbsInt4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAbs() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.java
index e94111f..8ea35f7 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAcos extends RSBaseCompute {
 
     private ScriptC_TestAcos script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAcosFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf6e893f6d1cc3bdfl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd1cc3bdfl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAcosFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAcosFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcosFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcosFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcosFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x55af66f81096ae8bl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1096ae8bl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAcosFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAcosFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcosFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcosFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcosFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x55b1301306b1cf69l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6b1cf69l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAcosFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAcosFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcosFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcosFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcosFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x55b2f92dfcccf047l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfcccf047l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAcosFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAcosFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcosFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcosFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAcos() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.java
index a6b4df3..6a4e844 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAcosh extends RSBaseCompute {
 
     private ScriptC_TestAcosh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAcoshFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x777ec00cf303663l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xcf303663l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAcoshFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAcoshFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcoshFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcoshFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcoshFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf102471f37b311efl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x37b311efl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAcoshFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAcoshFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcoshFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcoshFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcoshFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf104103a2dce32cdl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2dce32cdl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAcoshFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAcoshFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcoshFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcoshFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcoshFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf105d95523e953abl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x23e953abl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAcoshFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAcoshFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcoshFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcoshFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAcosh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.java
index a61a0cb..877f06b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAcospi extends RSBaseCompute {
 
     private ScriptC_TestAcospi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAcospiFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9fbdc3b5d1e084b2l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd1e084b2l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAcospiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAcospiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcospiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcospiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcospiFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc175417fa318aa86l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xa318aa86l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAcospiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAcospiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcospiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcospiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcospiFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc1770a9a9933cb64l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9933cb64l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAcospiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAcospiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcospiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcospiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAcospiFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc178d3b58f4eec42l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8f4eec42l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAcospiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAcospiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAcospiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAcospiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAcospi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.java
index c79a480..4f354fe 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAsin extends RSBaseCompute {
 
     private ScriptC_TestAsin script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAsinFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x80b5674ff98b5a12l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf98b5a12l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAsinFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAsinFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x9e11e5e823f7cce6l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x23f7cce6l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAsinFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAsinFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9e13af031a12edc4l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1a12edc4l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAsinFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAsinFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x9e15781e102e0ea2l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x102e0ea2l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAsinFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAsinFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAsin() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.java
index f646da0..c22e658 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAsinh extends RSBaseCompute {
 
     private ScriptC_TestAsinh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAsinhFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2cdf6bfa7c4a48f4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7c4a48f4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAsinhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAsinhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinhFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x198d997279032b38l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x79032b38l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAsinhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAsinhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinhFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x198f628d6f1e4c16l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6f1e4c16l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAsinhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAsinhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinhFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x19912ba865396cf4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x65396cf4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAsinhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAsinhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAsinh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.java
index e2cebbf..5cd7a0e 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAsinpi extends RSBaseCompute {
 
     private ScriptC_TestAsinpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAsinpiFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe82042a5e541a30dl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe541a30dl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAsinpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAsinpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinpiFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x90dc157b9b8ce9c9l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x9b8ce9c9l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAsinpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAsinpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinpiFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x90ddde9691a80aa7l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x91a80aa7l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAsinpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAsinpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAsinpiFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x90dfa7b187c32b85l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x87c32b85l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAsinpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAsinpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAsinpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAsinpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAsinpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.java
index f7e6642..331227a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAtan extends RSBaseCompute {
 
     private ScriptC_TestAtan script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAtanFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2a9ae39592004c8dl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x92004c8dl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAtanFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAtanFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb890789248a32749l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x48a32749l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAtanFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAtanFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xb89241ad3ebe4827l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3ebe4827l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAtanFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAtanFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb8940ac834d96905l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x34d96905l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAtanFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAtanFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAtan() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.java
index b817e34..b8894cd 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAtan2 extends RSBaseCompute {
 
     private ScriptC_TestAtan2 script;
@@ -41,8 +43,8 @@
     }
 
     private void checkAtan2FloatFloatFloat() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x717c0d8e261d332l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x37738e957bd90d5bl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe261d332l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7bd90d5bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -63,11 +65,16 @@
 
     private void verifyResultsAtan2FloatFloatFloat(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2FloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2FloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtan2Float2Float2Float2() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8658ecfeefb30700l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x552b6d6bab583839l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xefb30700l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xab583839l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -129,11 +144,16 @@
 
     private void verifyResultsAtan2Float2Float2Float2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2Float2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2Float2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtan2Float3Float3Float3() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x61e79638927ef301l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1e8faeb47e33cb72l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x927ef301l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7e33cb72l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -195,11 +223,16 @@
 
     private void verifyResultsAtan2Float3Float3Float3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2Float3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2Float3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtan2Float4Float4Float4() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3d763f72354adf02l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe7f3effd510f5eabl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x354adf02l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x510f5eabl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -261,11 +302,16 @@
 
     private void verifyResultsAtan2Float4Float4Float4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2Float4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2Float4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAtan2() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.java
index a1cb7e7..f22b020 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAtan2pi extends RSBaseCompute {
 
     private ScriptC_TestAtan2pi script;
@@ -41,8 +43,8 @@
     }
 
     private void checkAtan2piFloatFloatFloat() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3276ace81dcb793l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc4961da25a748df4l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x81dcb793l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x5a748df4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -63,11 +65,16 @@
 
     private void verifyResultsAtan2piFloatFloatFloat(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2piFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2piFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtan2piFloat2Float2Float2() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3b26f42853d1a0b3l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x393d275fcc5c5614l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x53d1a0b3l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xcc5c5614l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -129,11 +144,16 @@
 
     private void verifyResultsAtan2piFloat2Float2Float2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2piFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2piFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtan2piFloat3Float3Float3() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x16b59d61f69d8cb4l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2a168a89f37e94dl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf69d8cb4l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9f37e94dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -195,11 +223,16 @@
 
     private void verifyResultsAtan2piFloat3Float3Float3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2piFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2piFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtan2piFloat4Float4Float4() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf244469b996978b5l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xcc05a9f172137c86l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x996978b5l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x72137c86l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -261,11 +302,16 @@
 
     private void verifyResultsAtan2piFloat4Float4Float4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtan2piFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtan2piFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAtan2pi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.java
index fb4867c..f292c1a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAtanh extends RSBaseCompute {
 
     private ScriptC_TestAtanh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAtanhFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb66b4bab17ef039dl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x17ef039dl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAtanhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAtanhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanhFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8cd03c06a1cb59d9l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xa1cb59d9l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAtanhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAtanhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanhFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8cd2052197e67ab7l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x97e67ab7l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAtanhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAtanhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanhFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8cd3ce3c8e019b95l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8e019b95l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAtanhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAtanhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAtanh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.java
index 12c3faf..ed33df6 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestAtanpi extends RSBaseCompute {
 
     private ScriptC_TestAtanpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkAtanpiFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x29ed55009ecfd70l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9ecfd70l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testAtanpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsAtanpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanpiFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xed0d645e752cbed4l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x752cbed4l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testAtanpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsAtanpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanpiFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xed0f2d796b47dfb2l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6b47dfb2l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testAtanpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsAtanpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkAtanpiFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xed10f69461630090l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x61630090l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testAtanpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsAtanpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkAtanpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkAtanpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testAtanpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.java
index d9028c8..206b9bb 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestCbrt extends RSBaseCompute {
 
     private ScriptC_TestCbrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkCbrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x21721d33845561d4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x845561d4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testCbrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsCbrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCbrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCbrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCbrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x910f9e5d9129d518l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x9129d518l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testCbrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsCbrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCbrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCbrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCbrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x911167788744f5f6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8744f5f6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testCbrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsCbrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCbrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCbrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCbrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x911330937d6016d4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7d6016d4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testCbrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsCbrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCbrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCbrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testCbrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.java
index 4edd811..ea77e11 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestCeil extends RSBaseCompute {
 
     private ScriptC_TestCeil script;
@@ -40,7 +42,7 @@
     }
 
     private void checkCeilFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf12a662b492bf934l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x492bf934l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testCeilFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsCeilFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCeilFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCeilFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCeilFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdb16a3ea43152978l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x43152978l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testCeilFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsCeilFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCeilFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCeilFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCeilFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdb186d0539304a56l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x39304a56l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testCeilFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsCeilFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCeilFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCeilFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCeilFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdb1a36202f4b6b34l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2f4b6b34l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testCeilFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsCeilFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCeilFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCeilFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testCeil() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.java
index 7ac17a9..8b0160c 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestClamp extends RSBaseCompute {
 
     private ScriptC_TestClamp script;
@@ -42,9 +44,9 @@
     }
 
     private void checkClampFloatFloatFloatFloat() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7e886d7cc83c447dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdcebf6f230234027l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdcebf6e6c180322dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc83c447dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x30234027l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc180322dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -68,13 +70,19 @@
 
     private void verifyResultsClampFloatFloatFloatFloat(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         float[] arrayInValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (float) 42);
         inValue.copyTo(arrayInValue);
         float[] arrayInMinValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (float) 42);
         inMinValue.copyTo(arrayInMinValue);
         float[] arrayInMaxValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (float) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -91,36 +99,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampFloatFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampFloatFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampFloat2Float2Float2Float2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xa0d28bf142b07a5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb4e5c5f6ea8fc01fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb4e5c5eb7becb225l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x142b07a5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xea8fc01fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7becb225l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -144,13 +160,19 @@
 
     private void verifyResultsClampFloat2Float2Float2Float2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         float[] arrayInValue = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (float) 42);
         inValue.copyTo(arrayInValue);
         float[] arrayInMinValue = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (float) 42);
         inMinValue.copyTo(arrayInMinValue);
         float[] arrayInMaxValue = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (float) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -167,36 +189,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampFloat2Float2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampFloat2Float2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampFloat3Float3Float3Float3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd3716a4730ad7481l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc0d239a53946aa73l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc0d23999caa39c79l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x30ad7481l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3946aa73l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xcaa39c79l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -220,13 +250,19 @@
 
     private void verifyResultsClampFloat3Float3Float3Float3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         float[] arrayInValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (float) 42);
         inValue.copyTo(arrayInValue);
         float[] arrayInMinValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (float) 42);
         inMinValue.copyTo(arrayInMinValue);
         float[] arrayInMaxValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (float) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -243,36 +279,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampFloat3Float3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampFloat3Float3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampFloat4Float4Float4Float4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x9cd5abcf4d2fe15dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xccbead5387fd94c7l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xccbead48195a86cdl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4d2fe15dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x87fd94c7l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x195a86cdl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -296,13 +340,19 @@
 
     private void verifyResultsClampFloat4Float4Float4Float4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         float[] arrayInValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (float) 42);
         inValue.copyTo(arrayInValue);
         float[] arrayInMinValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (float) 42);
         inMinValue.copyTo(arrayInMinValue);
         float[] arrayInMaxValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (float) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -319,36 +369,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampFloat4Float4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampFloat4Float4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampFloat2FloatFloatFloat2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x71623fb3f1fca1a1l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x148e792e1a6253d3l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x148e7922abbf45d9l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf1fca1a1l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x1a6253d3l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xabbf45d9l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -372,13 +430,19 @@
 
     private void verifyResultsClampFloat2FloatFloatFloat2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         float[] arrayInValue = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (float) 42);
         inValue.copyTo(arrayInValue);
         float[] arrayInMinValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (float) 42);
         inMinValue.copyTo(arrayInMinValue);
         float[] arrayInMaxValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (float) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -395,36 +459,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampFloat2FloatFloatFloat2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampFloat2FloatFloatFloat2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampFloat3FloatFloatFloat3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc06893ff6ab8cf27l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x1f4444b84d90bbc5l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x1f4444acdeedadcbl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6ab8cf27l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4d90bbc5l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdeedadcbl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -448,13 +520,19 @@
 
     private void verifyResultsClampFloat3FloatFloatFloat3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         float[] arrayInValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (float) 42);
         inValue.copyTo(arrayInValue);
         float[] arrayInMinValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (float) 42);
         inMinValue.copyTo(arrayInMinValue);
         float[] arrayInMaxValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (float) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -471,36 +549,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampFloat3FloatFloatFloat3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampFloat3FloatFloatFloat3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampFloat4FloatFloatFloat4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf6ee84ae374fcadl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x29fa104280bf23b7l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x29fa1037121c15bdl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe374fcadl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x80bf23b7l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x121c15bdl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -524,13 +610,19 @@
 
     private void verifyResultsClampFloat4FloatFloatFloat4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         float[] arrayInValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (float) 42);
         inValue.copyTo(arrayInValue);
         float[] arrayInMinValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (float) 42);
         inMinValue.copyTo(arrayInMinValue);
         float[] arrayInMaxValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (float) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -547,30 +639,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampFloat4FloatFloatFloat4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampFloat4FloatFloatFloat4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharCharCharChar {
@@ -581,9 +681,9 @@
     }
 
     private void checkClampCharCharCharChar() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xaec8640bb673cf75l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x6379f7c3c505c8fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x6379f70cdad4e95l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xb673cf75l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x3c505c8fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xcdad4e95l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 1), INPUTSIZE);
@@ -607,13 +707,19 @@
 
     private void verifyResultsClampCharCharCharChar(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -629,36 +735,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampCharCharCharChar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampCharCharCharChar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampChar2Char2Char2Char2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xa209cfe6c3feb45dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xed63d0ab3442bdc7l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xed63d09fc59fafcdl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xc3feb45dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x3442bdc7l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xc59fafcdl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
@@ -682,13 +796,19 @@
 
     private void verifyResultsClampChar2Char2Char2Char2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -704,36 +824,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampChar2Char2Char2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampChar2Char2Char2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampChar3Char3Char3Char3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xfab6edb7b9d3b0a5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x7ae6f958470ecb1fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x7ae6f94cd86bbd25l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xb9d3b0a5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x470ecb1fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xd86bbd25l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
@@ -757,13 +885,19 @@
 
     private void verifyResultsClampChar3Char3Char3Char3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -779,36 +913,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampChar3Char3Char3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampChar3Char3Char3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampChar4Char4Char4Char4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x53640b88afa8acedl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x86a220559dad877l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x86a21f9eb37ca7dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xafa8acedl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x59dad877l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xeb37ca7dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
@@ -832,13 +974,19 @@
 
     private void verifyResultsClampChar4Char4Char4Char4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -854,30 +1002,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampChar4Char4Char4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampChar4Char4Char4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUcharUcharUchar {
@@ -888,9 +1044,9 @@
     }
 
     private void checkClampUcharUcharUcharUchar() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x680c818a4447655l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0xae40bae375336f2fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0xae40bad806906135l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0xa4447655l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x75336f2fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x6906135l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 1), INPUTSIZE);
@@ -914,13 +1070,19 @@
 
     private void verifyResultsClampUcharUcharUcharUchar(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -936,36 +1098,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUcharUcharUcharUchar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUcharUcharUcharUchar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUchar2Uchar2Uchar2Uchar2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xd69df43245dae301l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x82681747662c1df3l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x8268173bf7890ff9l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x45dae301l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x662c1df3l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xf7890ff9l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
@@ -989,13 +1159,19 @@
 
     private void verifyResultsClampUchar2Uchar2Uchar2Uchar2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1011,36 +1187,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUchar2Uchar2Uchar2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUchar2Uchar2Uchar2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUchar3Uchar3Uchar3Uchar3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xa00235ba625d4fddl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x8e548af5b4e30847l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x8e548aea463ffa4dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x625d4fddl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xb4e30847l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x463ffa4dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
@@ -1064,13 +1248,19 @@
 
     private void verifyResultsClampUchar3Uchar3Uchar3Uchar3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1086,36 +1276,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUchar3Uchar3Uchar3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUchar3Uchar3Uchar3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUchar4Uchar4Uchar4Uchar4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x696677427edfbcb9l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x9a40fea40399f29bl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x9a40fe9894f6e4a1l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7edfbcb9l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x399f29bl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x94f6e4a1l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
@@ -1139,13 +1337,19 @@
 
     private void verifyResultsClampUchar4Uchar4Uchar4Uchar4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1161,30 +1365,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUchar4Uchar4Uchar4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUchar4Uchar4Uchar4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortShortShortShort {
@@ -1195,9 +1407,9 @@
     }
 
     private void checkClampShortShortShortShort() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x8035c0627fc993ddl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xb5d4bd1fb4661447l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xb5d4bd1445c3064dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x7fc993ddl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xb4661447l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x45c3064dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 1), INPUTSIZE);
@@ -1221,13 +1433,19 @@
 
     private void verifyResultsClampShortShortShortShort(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1243,36 +1461,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampShortShortShortShort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampShortShortShortShort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampShort2Short2Short2Short2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x7eab8e9b984e0915l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x7b334b992e67336fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x7b334b8dbfc42575l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x984e0915l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x2e67336fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xbfc42575l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
@@ -1296,13 +1522,19 @@
 
     private void verifyResultsClampShort2Short2Short2Short2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1318,36 +1550,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampShort2Short2Short2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampShort2Short2Short2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampShort3Short3Short3Short3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x480fd023b4d075f1l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x871fbf477d1e1dc3l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x871fbf3c0e7b0fc9l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xb4d075f1l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x7d1e1dc3l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xe7b0fc9l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
@@ -1371,13 +1611,19 @@
 
     private void verifyResultsClampShort3Short3Short3Short3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1393,36 +1639,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampShort3Short3Short3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampShort3Short3Short3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampShort4Short4Short4Short4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x117411abd152e2cdl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x930c32f5cbd50817l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x930c32ea5d31fa1dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xd152e2cdl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xcbd50817l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x5d31fa1dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
@@ -1446,13 +1700,19 @@
 
     private void verifyResultsClampShort4Short4Short4Short4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1468,30 +1728,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampShort4Short4Short4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampShort4Short4Short4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUshortUshortUshort {
@@ -1502,9 +1770,9 @@
     }
 
     private void checkClampUshortUshortUshortUshort() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xf5881eeff74c4341l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xd2a0571394d3e2b3l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xd2a057082630d4b9l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xf74c4341l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x94d3e2b3l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x2630d4b9l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 1), INPUTSIZE);
@@ -1528,13 +1796,19 @@
 
     private void verifyResultsClampUshortUshortUshortUshort(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1550,36 +1824,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUshortUshortUshortUshort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUshortUshortUshortUshort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUshort2Ushort2Ushort2Ushort2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x6441dbe2fc36b705l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x52161e934fa3b43fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x52161e87e100a645l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xfc36b705l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x4fa3b43fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xe100a645l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
@@ -1603,13 +1885,19 @@
 
     private void verifyResultsClampUshort2Ushort2Ushort2Ushort2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1625,36 +1913,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUshort2Ushort2Ushort2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUshort2Ushort2Ushort2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUshort3Ushort3Ushort3Ushort3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x6b244d61fc64ee3dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x7b8d14b8610b3967l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x7b8d14acf2682b6dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xfc64ee3dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x610b3967l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xf2682b6dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
@@ -1678,13 +1974,19 @@
 
     private void verifyResultsClampUshort3Ushort3Ushort3Ushort3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1700,36 +2002,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUshort3Ushort3Ushort3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUshort3Ushort3Ushort3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUshort4Ushort4Ushort4Ushort4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x7206bee0fc932575l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xa5040add7272be8fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xa5040ad203cfb095l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xfc932575l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x7272be8fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x3cfb095l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
@@ -1753,13 +2063,19 @@
 
     private void verifyResultsClampUshort4Ushort4Ushort4Ushort4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1775,30 +2091,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUshort4Ushort4Ushort4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUshort4Ushort4Ushort4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntIntIntInt {
@@ -1809,9 +2133,9 @@
     }
 
     private void checkClampIntIntIntInt() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xfeb3aa11be6164c5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xd11c228c7c8bf97fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xd11c22810de8eb85l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xbe6164c5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x7c8bf97fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xde8eb85l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
@@ -1835,13 +2159,19 @@
 
     private void verifyResultsClampIntIntIntInt(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1857,36 +2187,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampIntIntIntInt" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampIntIntIntInt" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampInt2Int2Int2Int2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x56252903bd307c01l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x770112109398f8f3l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x7701120524f5eaf9l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xbd307c01l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x9398f8f3l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x24f5eaf9l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
@@ -1910,13 +2248,19 @@
 
     private void verifyResultsClampInt2Int2Int2Int2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1932,36 +2276,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampInt2Int2Int2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampInt2Int2Int2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampInt3Int3Int3Int3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x966882045600d2edl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xeb73e6749c7caa77l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xeb73e6692dd99c7dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x5600d2edl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x9c7caa77l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x2dd99c7dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
@@ -1985,13 +2337,19 @@
 
     private void verifyResultsClampInt3Int3Int3Int3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2007,36 +2365,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampInt3Int3Int3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampInt3Int3Int3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampInt4Int4Int4Int4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xd6abdb04eed129d9l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x5fe6bad8a5605bfbl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x5fe6bacd36bd4e01l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xeed129d9l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xa5605bfbl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x36bd4e01l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
@@ -2060,13 +2426,19 @@
 
     private void verifyResultsClampInt4Int4Int4Int4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2082,30 +2454,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampInt4Int4Int4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampInt4Int4Int4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUintUintUint {
@@ -2116,9 +2496,9 @@
     }
 
     private void checkClampUintUintUintUint() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xd8df32b2efc89475l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xcf8ec8eece8b7b8fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xcf8ec8e35fe86d95l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xefc89475l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xce8b7b8fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x5fe86d95l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 1), INPUTSIZE);
@@ -2142,13 +2522,19 @@
 
     private void verifyResultsClampUintUintUintUint(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -2164,36 +2550,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUintUintUintUint" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUintUintUintUint" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUint2Uint2Uint2Uint2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xaf28d478873ae5dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x5bbd21aa2a4bc7l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x5bbd163b873dcdl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x8873ae5dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xaa2a4bc7l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x3b873dcdl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
@@ -2217,13 +2611,19 @@
 
     private void verifyResultsClampUint2Uint2Uint2Uint2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2239,36 +2639,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUint2Uint2Uint2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUint2Uint2Uint2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUint3Uint3Uint3Uint3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x639fab187e48aaa5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x8ddee5cebcf6591fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x8ddee5c34e534b25l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x7e48aaa5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xbcf6591fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x4e534b25l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
@@ -2292,13 +2700,19 @@
 
     private void verifyResultsClampUint3Uint3Uint3Uint3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2314,36 +2728,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUint3Uint3Uint3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUint3Uint3Uint3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUint4Uint4Uint4Uint4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xbc4cc8e9741da6edl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x1b620e7bcfc26677l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x1b620e70611f587dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x741da6edl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xcfc26677l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x611f587dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
@@ -2367,13 +2789,19 @@
 
     private void verifyResultsClampUint4Uint4Uint4Uint4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2389,30 +2817,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUint4Uint4Uint4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUint4Uint4Uint4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongLongLongLong {
@@ -2423,9 +2859,9 @@
     }
 
     private void checkClampLongLongLongLong() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x63fd360531c9c41dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x9d04d1824ef4907l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x9d04d0cb64c3b0dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x31c9c41dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x24ef4907l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0xb64c3b0dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 1), INPUTSIZE);
@@ -2449,13 +2885,19 @@
 
     private void verifyResultsClampLongLongLongLong(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -2471,36 +2913,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampLongLongLongLong" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampLongLongLongLong" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampLong2Long2Long2Long2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xccbae869c2b0f12dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xe4c3844f4a3f8937l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xe4c38443db9c7b3dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xc2b0f12dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x4a3f8937l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xdb9c7b3dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
@@ -2524,13 +2974,19 @@
 
     private void verifyResultsClampLong2Long2Long2Long2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2546,36 +3002,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampLong2Long2Long2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampLong2Long2Long2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampLong3Long3Long3Long3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x2568063ab885ed75l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x7246acfc5d0b968fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x7246acf0ee688895l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xb885ed75l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x5d0b968fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xee688895l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
@@ -2599,13 +3063,19 @@
 
     private void verifyResultsClampLong3Long3Long3Long3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2621,36 +3091,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampLong3Long3Long3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampLong3Long3Long3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampLong4Long4Long4Long4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x7e15240bae5ae9bdl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xffc9d5a96fd7a3e7l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xffc9d59e013495edl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xae5ae9bdl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x6fd7a3e7l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x13495edl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
@@ -2674,13 +3152,19 @@
 
     private void verifyResultsClampLong4Long4Long4Long4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2696,30 +3180,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampLong4Long4Long4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampLong4Long4Long4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongUlongUlongUlong {
@@ -2730,9 +3222,9 @@
     }
 
     private void checkClampUlongUlongUlongUlong() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x2b378139749bf4c5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x75ac5050a8ca97fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x75ac4f99be99b85l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x749bf4c5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0xa8ca97fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x9be99b85l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 1), INPUTSIZE);
@@ -2756,13 +3248,19 @@
 
     private void verifyResultsClampUlongUlongUlongUlong(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -2778,36 +3276,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUlongUlongUlongUlong" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUlongUlongUlongUlong" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUlong2Ulong2Ulong2Ulong2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xa8c7fb17a09bb299l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x14e3c8dffe45623bl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x14e3c8d48fa25441l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xa09bb299l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xfe45623bl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x8fa25441l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
@@ -2831,13 +3337,19 @@
 
     private void verifyResultsClampUlong2Ulong2Ulong2Ulong2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2853,36 +3365,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUlong2Ulong2Ulong2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUlong2Ulong2Ulong2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUlong3Ulong3Ulong3Ulong3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x722c3c9fbd1e1f75l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x20d03c8e4cfc4c8fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x20d03c82de593e95l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xbd1e1f75l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x4cfc4c8fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xde593e95l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
@@ -2906,13 +3426,19 @@
 
     private void verifyResultsClampUlong3Ulong3Ulong3Ulong3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2928,36 +3454,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUlong3Ulong3Ulong3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUlong3Ulong3Ulong3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUlong4Ulong4Ulong4Ulong4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x3b907e27d9a08c51l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x2cbcb03c9bb336e3l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x2cbcb0312d1028e9l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xd9a08c51l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x9bb336e3l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x2d1028e9l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
@@ -2981,13 +3515,19 @@
 
     private void verifyResultsClampUlong4Ulong4Ulong4Ulong4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3003,36 +3543,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUlong4Ulong4Ulong4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUlong4Ulong4Ulong4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampChar2CharCharChar2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd6884bbb7c57a5d1l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x3bf8830cc3b7db63l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x3bf883015514cd69l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x7c57a5d1l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xc3b7db63l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x5514cd69l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
@@ -3056,13 +3604,19 @@
 
     private void verifyResultsClampChar2CharCharChar2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3078,36 +3632,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampChar2CharCharChar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampChar2CharCharChar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampChar3CharCharChar3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x4aa68c1b65a26ee5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x8b4b9ea0492789dfl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x8b4b9e94da847be5l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x65a26ee5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x492789dfl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xda847be5l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
@@ -3131,13 +3693,19 @@
 
     private void verifyResultsClampChar3CharCharChar3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3153,36 +3721,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampChar3CharCharChar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampChar3CharCharChar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampChar4CharCharChar4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xbec4cc7b4eed37f9l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xda9eba33ce97385bl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xda9eba285ff42a61l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x4eed37f9l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xce97385bl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x5ff42a61l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
@@ -3206,13 +3782,19 @@
 
     private void verifyResultsClampChar4CharCharChar4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3228,36 +3810,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampChar4CharCharChar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampChar4CharCharChar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUchar2UcharUcharUchar2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xafd4a680f02e0d63l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x78bbbcb3e9402039l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x78bbbca87a9d123fl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xf02e0d63l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0xe9402039l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x7a9d123fl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
@@ -3281,13 +3871,19 @@
 
     private void verifyResultsClampUchar2UcharUcharUchar2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3303,36 +3899,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUchar2UcharUcharUchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUchar2UcharUcharUchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUchar3UcharUcharUchar3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xfedafacc68ea3ae9l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x8371883e1c6e882bl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x83718832adcb7a31l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x68ea3ae9l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x1c6e882bl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0xadcb7a31l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
@@ -3356,13 +3960,19 @@
 
     private void verifyResultsClampUchar3UcharUcharUchar3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3378,36 +3988,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUchar3UcharUcharUchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUchar3UcharUcharUchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUchar4UcharUcharUchar4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x4de14f17e1a6686fl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x8e2753c84f9cf01dl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x8e2753bce0f9e223l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xe1a6686fl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x4f9cf01dl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0xe0f9e223l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
@@ -3431,13 +4049,19 @@
 
     private void verifyResultsClampUchar4UcharUcharUchar4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayInMinValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (byte) 42);
         inMinValue.copyTo(arrayInMinValue);
         byte[] arrayInMaxValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (byte) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3453,36 +4077,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUchar4UcharUcharUchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUchar4UcharUcharUchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampShort2ShortShortShort2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x89e3627eae2d6a9l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x886d6d2ccaca776bl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x886d6d215c276971l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xeae2d6a9l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xcaca776bl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x5c276971l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
@@ -3506,13 +4138,19 @@
 
     private void verifyResultsClampShort2ShortShortShort2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3528,36 +4166,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampShort2ShortShortShort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampShort2ShortShortShort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampShort3ShortShortShort3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x57a48a73639f042fl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x932338b6fdf8df5dl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x932338ab8f55d163l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x639f042fl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xfdf8df5dl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x8f55d163l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
@@ -3581,13 +4227,19 @@
 
     private void verifyResultsClampShort3ShortShortShort3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3603,36 +4255,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampShort3ShortShortShort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampShort3ShortShortShort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampShort4ShortShortShort4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xa6aadebedc5b31b5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x9dd904413127474fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x9dd90435c2843955l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xdc5b31b5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x3127474fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xc2843955l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
@@ -3656,13 +4316,19 @@
 
     private void verifyResultsClampShort4ShortShortShort4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3678,36 +4344,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampShort4ShortShortShort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampShort4ShortShortShort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUshort2UshortUshortUshort2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x2ece6d045621ef07l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xd88bd79cc7874965l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xd88bd79158e43b6bl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x5621ef07l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xc7874965l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x58e43b6bl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
@@ -3731,13 +4405,19 @@
 
     private void verifyResultsClampUshort2UshortUshortUshort2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3753,36 +4433,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUshort2UshortUshortUshort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUshort2UshortUshortUshort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUshort3UshortUshortUshort3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x393771467c9cd603l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xfe016431b3cf1419l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xfe016426452c061fl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x7c9cd603l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xb3cf1419l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x452c061fl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
@@ -3806,13 +4494,19 @@
 
     private void verifyResultsClampUshort3UshortUshortUshort3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3828,36 +4522,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUshort3UshortUshortUshort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUshort3UshortUshortUshort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUshort4UshortUshortUshort4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x43a07588a317bcffl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x2376f0c6a016decdl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x2376f0bb3173d0d3l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xa317bcffl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xa016decdl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x3173d0d3l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
@@ -3881,13 +4583,19 @@
 
     private void verifyResultsClampUshort4UshortUshortUshort4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayInMinValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (short) 42);
         inMinValue.copyTo(arrayInMinValue);
         short[] arrayInMaxValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (short) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3903,36 +4611,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUshort4UshortUshortUshort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUshort4UshortUshortUshort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampInt2IntIntInt2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xbb55c0997906d1dbl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x69776e80fba24121l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x69776e758cff3327l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x7906d1dbl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xfba24121l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x8cff3327l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
@@ -3956,13 +4672,19 @@
 
     private void verifyResultsClampInt2IntIntInt2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3978,36 +4700,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampInt2IntIntInt2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampInt2IntIntInt2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampInt3IntIntInt3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x3af8924ab5370be9l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xdde27628f1a08b2bl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xdde2761d82fd7d31l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xb5370be9l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xf1a08b2bl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x82fd7d31l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
@@ -4031,13 +4761,19 @@
 
     private void verifyResultsClampInt3IntIntInt3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4053,36 +4789,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampInt3IntIntInt3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampInt3IntIntInt3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampInt4IntIntInt4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xba9b63fbf16745f7l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x524d7dd0e79ed535l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x524d7dc578fbc73bl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xf16745f7l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xe79ed535l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x78fbc73bl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
@@ -4106,13 +4850,19 @@
 
     private void verifyResultsClampInt4IntIntInt4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4128,36 +4878,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampInt4IntIntInt4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampInt4IntIntInt4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUint2UintUintUint2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x4fd098dd770d5a51l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x6de3f327c2a180e3l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x6de3f31c53fe72e9l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x770d5a51l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xc2a180e3l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x53fe72e9l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
@@ -4181,13 +4939,19 @@
 
     private void verifyResultsClampUint2UintUintUint2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4203,36 +4967,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUint2UintUintUint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUint2UintUintUint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUint3UintUintUint3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xc3eed93d60582365l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xbd370ebb48112f5fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xbd370eafd96e2165l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x60582365l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x48112f5fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xd96e2165l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
@@ -4256,13 +5028,19 @@
 
     private void verifyResultsClampUint3UintUintUint3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4278,36 +5056,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUint3UintUintUint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUint3UintUintUint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUint4UintUintUint4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x380d199d49a2ec79l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xc8a2a4ecd80dddbl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xc8a2a435eddcfe1l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x49a2ec79l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xcd80dddbl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x5eddcfe1l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
@@ -4331,13 +5117,19 @@
 
     private void verifyResultsClampUint4UintUintUint4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayInMinValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (int) 42);
         inMinValue.copyTo(arrayInMinValue);
         int[] arrayInMaxValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (int) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4353,36 +5145,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUint4UintUintUint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUint4UintUintUint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampLong2LongLongLong2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x19353a9f7c535bb5l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0xee8dc7f38f83654fl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0xee8dc7e820e05755l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x7c535bb5l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x8f83654fl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x20e05755l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
@@ -4406,13 +5206,19 @@
 
     private void verifyResultsClampLong2LongLongLong2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4428,36 +5234,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampLong2LongLongLong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampLong2LongLongLong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampLong3LongLongLong3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x8d537aff659e24c9l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x3de0e38714f313cbl, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x3de0e37ba65005d1l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x659e24c9l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x14f313cbl, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0xa65005d1l, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
@@ -4481,13 +5295,19 @@
 
     private void verifyResultsClampLong3LongLongLong3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4503,36 +5323,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampLong3LongLongLong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampLong3LongLongLong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampLong4LongLongLong4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x171bb5f4ee8edddl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x8d33ff1a9a62c247l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x8d33ff0f2bbfb44dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x4ee8edddl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x9a62c247l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x2bbfb44dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
@@ -4556,13 +5384,19 @@
 
     private void verifyResultsClampLong4LongLongLong4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4578,36 +5412,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampLong4LongLongLong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampLong4LongLongLong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUlong2UlongUlongUlong2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xf275dabaa7fa1bf7l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0xf08a9e698d13b735l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0xf08a9e5e1e70a93bl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xa7fa1bf7l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x8d13b735l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x1e70a93bl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
@@ -4631,13 +5473,19 @@
 
     private void verifyResultsClampUlong2UlongUlongUlong2(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4653,36 +5501,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUlong2UlongUlongUlong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUlong2UlongUlongUlong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUlong3UlongUlongUlong3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x417c2f0620b6497dl, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0xfb4069f3c0421f27l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0xfb4069e8519f112dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x20b6497dl, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0xc0421f27l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x519f112dl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
@@ -4706,13 +5562,19 @@
 
     private void verifyResultsClampUlong3UlongUlongUlong3(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4728,36 +5590,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUlong3UlongUlongUlong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUlong3UlongUlongUlong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClampUlong4UlongUlongUlong4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x9082835199727703l, false);
-        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x5f6357df3708719l, false);
-        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x5f6357284cd791fl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x99727703l, false);
+        Allocation inMinValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0xf3708719l, false);
+        Allocation inMaxValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x84cd791fl, false);
         enforceOrdering(inMinValue, inMaxValue);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
@@ -4781,13 +5651,19 @@
 
     private void verifyResultsClampUlong4UlongUlongUlong4(Allocation inValue, Allocation inMinValue, Allocation inMaxValue, Allocation out, boolean relaxed) {
         long[] arrayInValue = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (long) 42);
         inValue.copyTo(arrayInValue);
         long[] arrayInMinValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMinValue, (long) 42);
         inMinValue.copyTo(arrayInMinValue);
         long[] arrayInMaxValue = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInMaxValue, (long) 42);
         inMaxValue.copyTo(arrayInMaxValue);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4803,30 +5679,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Input inMinValue: ");
-                    appendVariableToMessage(message, args.inMinValue);
-                    message.append("\n");
-                    message.append("Input inMaxValue: ");
-                    appendVariableToMessage(message, args.inMaxValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Input inMinValue: ");
+                        appendVariableToMessage(message, args.inMinValue);
+                        message.append("\n");
+                        message.append("Input inMaxValue: ");
+                        appendVariableToMessage(message, args.inMaxValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClampUlong4UlongUlongUlong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClampUlong4UlongUlongUlong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testClamp() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.java
index d9e7022..d2fe5df 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestClz extends RSBaseCompute {
 
     private ScriptC_TestClz script;
@@ -40,7 +42,7 @@
     }
 
     private void checkClzCharChar() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xf6f3a15e2f7765afl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x2f7765afl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 1), INPUTSIZE);
             script.forEach_testClzCharChar(inValue, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsClzCharChar(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -75,28 +81,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzCharChar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzCharChar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzChar2Char2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xf718b99dcaca5e93l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xcaca5e93l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testClzChar2Char2(inValue, out);
@@ -115,9 +129,13 @@
 
     private void verifyResultsClzChar2Char2(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -131,28 +149,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzChar2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzChar2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzChar3Char3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x21a5da5bc7099347l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xc7099347l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testClzChar3Char3(inValue, out);
@@ -171,9 +197,13 @@
 
     private void verifyResultsClzChar3Char3(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -187,28 +217,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzChar3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzChar3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzChar4Char4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x4c32fb19c348c7fbl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xc348c7fbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testClzChar4Char4(inValue, out);
@@ -227,9 +265,13 @@
 
     private void verifyResultsClzChar4Char4(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -243,24 +285,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzChar4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzChar4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUchar {
@@ -269,7 +319,7 @@
     }
 
     private void checkClzUcharUchar() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0xd2e451b48b84f57fl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x8b84f57fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 1), INPUTSIZE);
             script.forEach_testClzUcharUchar(inValue, out);
@@ -288,9 +338,13 @@
 
     private void verifyResultsClzUcharUchar(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -304,28 +358,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUcharUchar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUcharUchar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUchar2Uchar2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x792e2970f47ebc85l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xf47ebc85l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testClzUchar2Uchar2(inValue, out);
@@ -344,9 +406,13 @@
 
     private void verifyResultsClzUchar2Uchar2(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -360,28 +426,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUchar2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUchar2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUchar3Uchar3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x9ee29ef83dbce203l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x3dbce203l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testClzUchar3Uchar3(inValue, out);
@@ -400,9 +474,13 @@
 
     private void verifyResultsClzUchar3Uchar3(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -416,28 +494,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUchar3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUchar3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUchar4Uchar4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xc497147f86fb0781l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x86fb0781l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testClzUchar4Uchar4(inValue, out);
@@ -456,9 +542,13 @@
 
     private void verifyResultsClzUchar4Uchar4(Allocation inValue, Allocation out, boolean relaxed) {
         byte[] arrayInValue = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (byte) 42);
         inValue.copyTo(arrayInValue);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -472,24 +562,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUchar4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUchar4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortShort {
@@ -498,7 +596,7 @@
     }
 
     private void checkClzShortShort() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x3290aea900d8ad53l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xd8ad53l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 1), INPUTSIZE);
             script.forEach_testClzShortShort(inValue, out);
@@ -517,9 +615,13 @@
 
     private void verifyResultsClzShortShort(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -533,28 +635,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzShortShort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzShortShort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzShort2Short2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x81f69d4442dd6ebfl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x42dd6ebfl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testClzShort2Short2(inValue, out);
@@ -573,9 +683,13 @@
 
     private void verifyResultsClzShort2Short2(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -589,28 +703,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzShort2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzShort2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzShort3Short3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xa7ab12cb8c1b943dl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x8c1b943dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testClzShort3Short3(inValue, out);
@@ -629,9 +751,13 @@
 
     private void verifyResultsClzShort3Short3(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -645,28 +771,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzShort3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzShort3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzShort4Short4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xcd5f8852d559b9bbl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xd559b9bbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testClzShort4Short4(inValue, out);
@@ -685,9 +819,13 @@
 
     private void verifyResultsClzShort4Short4(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -701,24 +839,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzShort4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzShort4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUshort {
@@ -727,7 +873,7 @@
     }
 
     private void checkClzUshortUshort() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x97bdeee92c0103a5l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x2c0103a5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 1), INPUTSIZE);
             script.forEach_testClzUshortUshort(inValue, out);
@@ -746,9 +892,13 @@
 
     private void verifyResultsClzUshortUshort(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -762,28 +912,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUshortUshort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUshortUshort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUshort2Ushort2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x5ea7a024b2913837l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xb2913837l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testClzUshort2Ushort2(inValue, out);
@@ -802,9 +960,13 @@
 
     private void verifyResultsClzUshort2Ushort2(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -818,28 +980,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUshort2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUshort2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUshort3Ushort3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xb3f7537beaa1cfa3l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xeaa1cfa3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testClzUshort3Ushort3(inValue, out);
@@ -858,9 +1028,13 @@
 
     private void verifyResultsClzUshort3Ushort3(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -874,28 +1048,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUshort3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUshort3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUshort4Ushort4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x94706d322b2670fl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x22b2670fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testClzUshort4Ushort4(inValue, out);
@@ -914,9 +1096,13 @@
 
     private void verifyResultsClzUshort4Ushort4(Allocation inValue, Allocation out, boolean relaxed) {
         short[] arrayInValue = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (short) 42);
         inValue.copyTo(arrayInValue);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -930,24 +1116,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUshort4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUshort4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntInt {
@@ -956,7 +1150,7 @@
     }
 
     private void checkClzIntInt() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xb13809da3142eb97l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x3142eb97l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
             script.forEach_testClzIntInt(inValue, out);
@@ -975,9 +1169,13 @@
 
     private void verifyResultsClzIntInt(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -991,28 +1189,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzIntInt" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzIntInt" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzInt2Int2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xc9fd2c1a27fe3ad5l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x27fe3ad5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testClzInt2Int2(inValue, out);
@@ -1031,9 +1237,13 @@
 
     private void verifyResultsClzInt2Int2(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1047,28 +1257,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzInt2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzInt2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzInt3Int3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xd6e2b014f2d24c2bl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xf2d24c2bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testClzInt3Int3(inValue, out);
@@ -1087,9 +1305,13 @@
 
     private void verifyResultsClzInt3Int3(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1103,28 +1325,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzInt3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzInt3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzInt4Int4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xe3c8340fbda65d81l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xbda65d81l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testClzInt4Int4(inValue, out);
@@ -1143,9 +1373,13 @@
 
     private void verifyResultsClzInt4Int4(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1159,24 +1393,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzInt4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzInt4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUint {
@@ -1185,7 +1427,7 @@
     }
 
     private void checkClzUintUint() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x64a0b78a75ac502fl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x75ac502fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 1), INPUTSIZE);
             script.forEach_testClzUintUint(inValue, out);
@@ -1204,9 +1446,13 @@
 
     private void verifyResultsClzUintUint(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1220,28 +1466,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUintUint" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUintUint" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUint2Uint2() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xf809b50329344f93l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x29344f93l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testClzUint2Uint2(inValue, out);
@@ -1260,9 +1514,13 @@
 
     private void verifyResultsClzUint2Uint2(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1276,28 +1534,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUint2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUint2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUint3Uint3() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x2296d5c125738447l, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x25738447l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testClzUint3Uint3(inValue, out);
@@ -1316,9 +1582,13 @@
 
     private void verifyResultsClzUint3Uint3(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1332,28 +1602,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUint3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUint3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkClzUint4Uint4() {
-        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x4d23f67f21b2b8fbl, false);
+        Allocation inValue = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x21b2b8fbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testClzUint4Uint4(inValue, out);
@@ -1372,9 +1650,13 @@
 
     private void verifyResultsClzUint4Uint4(Allocation inValue, Allocation out, boolean relaxed) {
         int[] arrayInValue = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInValue, (int) 42);
         inValue.copyTo(arrayInValue);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1388,24 +1670,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inValue: ");
-                    appendVariableToMessage(message, args.inValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inValue: ");
+                        appendVariableToMessage(message, args.inValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkClzUint4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkClzUint4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testClz() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.java
index 8d09dd4..0db6576 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestConvert extends RSBaseCompute {
 
     private ScriptC_TestConvert script;
@@ -40,7 +42,7 @@
     }
 
     private void checkConvertFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xfb5215c44e1f6ac6l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4e1f6ac6l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Float2Float2(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsConvertFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfb53dedf443a8ba4l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x443a8ba4l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Float3Float3(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsConvertFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfb55a7fa3a55ac82l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3a55ac82l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Float4Float4(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsConvertFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -190,24 +220,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharFloat {
@@ -216,7 +254,7 @@
     }
 
     private void checkConvertChar2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x5861e2161f489286l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x1f489286l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Char2Float2(inV, out);
@@ -235,9 +273,13 @@
 
     private void verifyResultsConvertChar2Float2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -252,28 +294,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x5863ab311563b364l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x1563b364l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Char3Float3(inV, out);
@@ -292,9 +342,13 @@
 
     private void verifyResultsConvertChar3Float3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -309,28 +363,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x5865744c0b7ed442l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xb7ed442l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Char4Float4(inV, out);
@@ -349,9 +411,13 @@
 
     private void verifyResultsConvertChar4Float4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -366,24 +432,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharFloat {
@@ -392,7 +466,7 @@
     }
 
     private void checkConvertUchar2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x7d30021dbb20ac31l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xbb20ac31l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Uchar2Float2(inV, out);
@@ -411,9 +485,13 @@
 
     private void verifyResultsConvertUchar2Float2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -428,28 +506,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x7d31cb38b13bcd0fl, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xb13bcd0fl, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Uchar3Float3(inV, out);
@@ -468,9 +554,13 @@
 
     private void verifyResultsConvertUchar3Float3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -485,28 +575,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7d339453a756ededl, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xa756ededl, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Uchar4Float4(inV, out);
@@ -525,9 +623,13 @@
 
     private void verifyResultsConvertUchar4Float4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -542,24 +644,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortFloat {
@@ -568,7 +678,7 @@
     }
 
     private void checkConvertShort2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x94ca184eff219172l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xff219172l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Short2Float2(inV, out);
@@ -587,9 +697,13 @@
 
     private void verifyResultsConvertShort2Float2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -604,28 +718,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x94cbe169f53cb250l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xf53cb250l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Short3Float3(inV, out);
@@ -644,9 +766,13 @@
 
     private void verifyResultsConvertShort3Float3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -661,28 +787,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x94cdaa84eb57d32el, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xeb57d32el, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Short4Float4(inV, out);
@@ -701,9 +835,13 @@
 
     private void verifyResultsConvertShort4Float4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -718,24 +856,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortFloat {
@@ -744,7 +890,7 @@
     }
 
     private void checkConvertUshort2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xc36979962c6de12bl, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x2c6de12bl, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Ushort2Float2(inV, out);
@@ -763,9 +909,13 @@
 
     private void verifyResultsConvertUshort2Float2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -780,28 +930,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xc36b42b122890209l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x22890209l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Ushort3Float3(inV, out);
@@ -820,9 +978,13 @@
 
     private void verifyResultsConvertUshort3Float3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -837,28 +999,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xc36d0bcc18a422e7l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x18a422e7l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Ushort4Float4(inV, out);
@@ -877,9 +1047,13 @@
 
     private void verifyResultsConvertUshort4Float4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -894,24 +1068,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntFloat {
@@ -920,7 +1102,7 @@
     }
 
     private void checkConvertInt2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x2a52c7eb7402bfc5l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x7402bfc5l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Int2Float2(inV, out);
@@ -939,9 +1121,13 @@
 
     private void verifyResultsConvertInt2Float2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -956,28 +1142,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x2a5491066a1de0a3l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x6a1de0a3l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Int3Float3(inV, out);
@@ -996,9 +1190,13 @@
 
     private void verifyResultsConvertInt3Float3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1013,28 +1211,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x2a565a2160390181l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x60390181l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Int4Float4(inV, out);
@@ -1053,9 +1259,13 @@
 
     private void verifyResultsConvertInt4Float4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1070,24 +1280,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintFloat {
@@ -1096,7 +1314,7 @@
     }
 
     private void checkConvertUint2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xd1e081390684cc46l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x684cc46l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Uint2Float2(inV, out);
@@ -1115,9 +1333,13 @@
 
     private void verifyResultsConvertUint2Float2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1132,28 +1354,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xd1e24a53fc9fed24l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xfc9fed24l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Uint3Float3(inV, out);
@@ -1172,9 +1402,13 @@
 
     private void verifyResultsConvertUint3Float3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1189,28 +1423,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xd1e4136ef2bb0e02l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xf2bb0e02l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Uint4Float4(inV, out);
@@ -1229,9 +1471,13 @@
 
     private void verifyResultsConvertUint4Float4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1246,24 +1492,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatChar {
@@ -1272,7 +1526,7 @@
     }
 
     private void checkConvertFloat2Char2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x239cb25829789662l, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x29789662l, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Float2Char2(inV, out);
@@ -1291,9 +1545,13 @@
 
     private void verifyResultsConvertFloat2Char2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1307,28 +1565,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Char3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x239cbcf988805b56l, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x88805b56l, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Float3Char3(inV, out);
@@ -1347,9 +1613,13 @@
 
     private void verifyResultsConvertFloat3Char3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1363,28 +1633,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Char4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x239cc79ae788204al, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe788204al, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Float4Char4(inV, out);
@@ -1403,9 +1681,13 @@
 
     private void verifyResultsConvertFloat4Char4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1419,24 +1701,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharChar {
@@ -1445,7 +1735,7 @@
     }
 
     private void checkConvertChar2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd8618777d5086da2l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd5086da2l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Char2Char2(inV, out);
@@ -1464,9 +1754,13 @@
 
     private void verifyResultsConvertChar2Char2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1480,28 +1774,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xd861921934103296l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x34103296l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Char3Char3(inV, out);
@@ -1520,9 +1822,13 @@
 
     private void verifyResultsConvertChar3Char3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1536,28 +1842,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xd8619cba9317f78al, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x9317f78al, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Char4Char4(inV, out);
@@ -1576,9 +1890,13 @@
 
     private void verifyResultsConvertChar4Char4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1592,24 +1910,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharChar {
@@ -1618,7 +1944,7 @@
     }
 
     private void checkConvertUchar2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x7fef40c5678a7a23l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x678a7a23l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Uchar2Char2(inV, out);
@@ -1637,9 +1963,13 @@
 
     private void verifyResultsConvertUchar2Char2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1653,28 +1983,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x7fef4b66c6923f17l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xc6923f17l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Uchar3Char3(inV, out);
@@ -1693,9 +2031,13 @@
 
     private void verifyResultsConvertUchar3Char3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1709,28 +2051,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7fef5608259a040bl, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x259a040bl, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Uchar4Char4(inV, out);
@@ -1749,9 +2099,13 @@
 
     private void verifyResultsConvertUchar4Char4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1765,24 +2119,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortChar {
@@ -1791,7 +2153,7 @@
     }
 
     private void checkConvertShort2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x68ab650215c60866l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x15c60866l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Short2Char2(inV, out);
@@ -1810,9 +2172,13 @@
 
     private void verifyResultsConvertShort2Char2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1826,28 +2192,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x68ab6fa374cdcd5al, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x74cdcd5al, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Short3Char3(inV, out);
@@ -1866,9 +2240,13 @@
 
     private void verifyResultsConvertShort3Char3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1882,28 +2260,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x68ab7a44d3d5924el, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xd3d5924el, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Short4Char4(inV, out);
@@ -1922,9 +2308,13 @@
 
     private void verifyResultsConvertShort4Char4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1938,24 +2328,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortChar {
@@ -1964,7 +2362,7 @@
     }
 
     private void checkConvertUshort2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x8d798509b19e2211l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xb19e2211l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Ushort2Char2(inV, out);
@@ -1983,9 +2381,13 @@
 
     private void verifyResultsConvertUshort2Char2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1999,28 +2401,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x8d798fab10a5e705l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x10a5e705l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Ushort3Char3(inV, out);
@@ -2039,9 +2449,13 @@
 
     private void verifyResultsConvertUshort3Char3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2055,28 +2469,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x8d799a4c6fadabf9l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x6fadabf9l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Ushort4Char4(inV, out);
@@ -2095,9 +2517,13 @@
 
     private void verifyResultsConvertUshort4Char4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2111,24 +2537,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntChar {
@@ -2137,7 +2571,7 @@
     }
 
     private void checkConvertInt2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xd74f5147364256dfl, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x364256dfl, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Int2Char2(inV, out);
@@ -2156,9 +2590,13 @@
 
     private void verifyResultsConvertInt2Char2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2172,28 +2610,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xd74f5be8954a1bd3l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x954a1bd3l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Int3Char3(inV, out);
@@ -2212,9 +2658,13 @@
 
     private void verifyResultsConvertInt3Char3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2228,28 +2678,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xd74f6689f451e0c7l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xf451e0c7l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Int4Char4(inV, out);
@@ -2268,9 +2726,13 @@
 
     private void verifyResultsConvertInt4Char4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2284,24 +2746,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintChar {
@@ -2310,7 +2780,7 @@
     }
 
     private void checkConvertUint2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xe71d083133b67ae2l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x33b67ae2l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Uint2Char2(inV, out);
@@ -2329,9 +2799,13 @@
 
     private void verifyResultsConvertUint2Char2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2345,28 +2819,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xe71d12d292be3fd6l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x92be3fd6l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Uint3Char3(inV, out);
@@ -2385,9 +2867,13 @@
 
     private void verifyResultsConvertUint3Char3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2401,28 +2887,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xe71d1d73f1c604cal, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xf1c604cal, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Uint4Char4(inV, out);
@@ -2441,9 +2935,13 @@
 
     private void verifyResultsConvertUint4Char4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2457,24 +2955,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatUchar {
@@ -2483,7 +2989,7 @@
     }
 
     private void checkConvertFloat2Uchar2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xfb52b2f4fac15b79l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xfac15b79l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Float2Uchar2(inV, out);
@@ -2502,9 +3008,13 @@
 
     private void verifyResultsConvertFloat2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2518,28 +3028,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Uchar3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfb547c0ff0dc7c57l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf0dc7c57l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Float3Uchar3(inV, out);
@@ -2558,9 +3076,13 @@
 
     private void verifyResultsConvertFloat3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2574,28 +3096,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Uchar4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfb56452ae6f79d35l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe6f79d35l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Float4Uchar4(inV, out);
@@ -2614,9 +3144,13 @@
 
     private void verifyResultsConvertFloat4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2630,24 +3164,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharUchar {
@@ -2656,7 +3198,7 @@
     }
 
     private void checkConvertChar2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x58627f46cbea8339l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xcbea8339l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Char2Uchar2(inV, out);
@@ -2675,9 +3217,13 @@
 
     private void verifyResultsConvertChar2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2691,28 +3237,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x58644861c205a417l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xc205a417l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Char3Uchar3(inV, out);
@@ -2731,9 +3285,13 @@
 
     private void verifyResultsConvertChar3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2747,28 +3305,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x5866117cb820c4f5l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xb820c4f5l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Char4Uchar4(inV, out);
@@ -2787,9 +3353,13 @@
 
     private void verifyResultsConvertChar4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2803,24 +3373,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUchar {
@@ -2829,7 +3407,7 @@
     }
 
     private void checkConvertUchar2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x7d309f4e67c29ce4l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x67c29ce4l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Uchar2Uchar2(inV, out);
@@ -2848,9 +3426,13 @@
 
     private void verifyResultsConvertUchar2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2864,28 +3446,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x7d3268695dddbdc2l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x5dddbdc2l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Uchar3Uchar3(inV, out);
@@ -2904,9 +3494,13 @@
 
     private void verifyResultsConvertUchar3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2920,28 +3514,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7d34318453f8dea0l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x53f8dea0l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Uchar4Uchar4(inV, out);
@@ -2960,9 +3562,13 @@
 
     private void verifyResultsConvertUchar4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2976,24 +3582,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortUchar {
@@ -3002,7 +3616,7 @@
     }
 
     private void checkConvertShort2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x94cab57fabc38225l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xabc38225l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Short2Uchar2(inV, out);
@@ -3021,9 +3635,13 @@
 
     private void verifyResultsConvertShort2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3037,28 +3655,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x94cc7e9aa1dea303l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xa1dea303l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Short3Uchar3(inV, out);
@@ -3077,9 +3703,13 @@
 
     private void verifyResultsConvertShort3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3093,28 +3723,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x94ce47b597f9c3e1l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x97f9c3e1l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Short4Uchar4(inV, out);
@@ -3133,9 +3771,13 @@
 
     private void verifyResultsConvertShort4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3149,24 +3791,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUchar {
@@ -3175,7 +3825,7 @@
     }
 
     private void checkConvertUshort2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xc36a16c6d90fd1del, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xd90fd1del, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Ushort2Uchar2(inV, out);
@@ -3194,9 +3844,13 @@
 
     private void verifyResultsConvertUshort2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3210,28 +3864,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xc36bdfe1cf2af2bcl, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xcf2af2bcl, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Ushort3Uchar3(inV, out);
@@ -3250,9 +3912,13 @@
 
     private void verifyResultsConvertUshort3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3266,28 +3932,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xc36da8fcc546139al, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xc546139al, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Ushort4Uchar4(inV, out);
@@ -3306,9 +3980,13 @@
 
     private void verifyResultsConvertUshort4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3322,24 +4000,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntUchar {
@@ -3348,7 +4034,7 @@
     }
 
     private void checkConvertInt2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x2a53651c20a4b078l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x20a4b078l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Int2Uchar2(inV, out);
@@ -3367,9 +4053,13 @@
 
     private void verifyResultsConvertInt2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3383,28 +4073,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x2a552e3716bfd156l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x16bfd156l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Int3Uchar3(inV, out);
@@ -3423,9 +4121,13 @@
 
     private void verifyResultsConvertInt3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3439,28 +4141,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x2a56f7520cdaf234l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xcdaf234l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Int4Uchar4(inV, out);
@@ -3479,9 +4189,13 @@
 
     private void verifyResultsConvertInt4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3495,24 +4209,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUchar {
@@ -3521,7 +4243,7 @@
     }
 
     private void checkConvertUint2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xd1e11e69b326bcf9l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xb326bcf9l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Uint2Uchar2(inV, out);
@@ -3540,9 +4262,13 @@
 
     private void verifyResultsConvertUint2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3556,28 +4282,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xd1e2e784a941ddd7l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xa941ddd7l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Uint3Uchar3(inV, out);
@@ -3596,9 +4330,13 @@
 
     private void verifyResultsConvertUint3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3612,28 +4350,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xd1e4b09f9f5cfeb5l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x9f5cfeb5l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Uint4Uchar4(inV, out);
@@ -3652,9 +4398,13 @@
 
     private void verifyResultsConvertUint4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3668,24 +4418,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatShort {
@@ -3694,7 +4452,7 @@
     }
 
     private void checkConvertFloat2Short2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xfb529ef98fcf2692l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8fcf2692l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Float2Short2(inV, out);
@@ -3713,9 +4471,13 @@
 
     private void verifyResultsConvertFloat2Short2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3729,28 +4491,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Short3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfb54681485ea4770l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x85ea4770l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Float3Short3(inV, out);
@@ -3769,9 +4539,13 @@
 
     private void verifyResultsConvertFloat3Short3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3785,28 +4559,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Short4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfb56312f7c05684el, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7c05684el, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Float4Short4(inV, out);
@@ -3825,9 +4607,13 @@
 
     private void verifyResultsConvertFloat4Short4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -3841,24 +4627,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharShort {
@@ -3867,7 +4661,7 @@
     }
 
     private void checkConvertChar2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x58626b4b60f84e52l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x60f84e52l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Char2Short2(inV, out);
@@ -3886,9 +4680,13 @@
 
     private void verifyResultsConvertChar2Short2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -3902,28 +4700,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x5864346657136f30l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x57136f30l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Char3Short3(inV, out);
@@ -3942,9 +4748,13 @@
 
     private void verifyResultsConvertChar3Short3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -3958,28 +4768,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x5865fd814d2e900el, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x4d2e900el, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Char4Short4(inV, out);
@@ -3998,9 +4816,13 @@
 
     private void verifyResultsConvertChar4Short4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4014,24 +4836,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharShort {
@@ -4040,7 +4870,7 @@
     }
 
     private void checkConvertUchar2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x7d308b52fcd067fdl, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xfcd067fdl, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Uchar2Short2(inV, out);
@@ -4059,9 +4889,13 @@
 
     private void verifyResultsConvertUchar2Short2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4075,28 +4909,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x7d32546df2eb88dbl, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xf2eb88dbl, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Uchar3Short3(inV, out);
@@ -4115,9 +4957,13 @@
 
     private void verifyResultsConvertUchar3Short3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4131,28 +4977,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7d341d88e906a9b9l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xe906a9b9l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Uchar4Short4(inV, out);
@@ -4171,9 +5025,13 @@
 
     private void verifyResultsConvertUchar4Short4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4187,24 +5045,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortShort {
@@ -4213,7 +5079,7 @@
     }
 
     private void checkConvertShort2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x94caa18440d14d3el, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x40d14d3el, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Short2Short2(inV, out);
@@ -4232,9 +5098,13 @@
 
     private void verifyResultsConvertShort2Short2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4248,28 +5118,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x94cc6a9f36ec6e1cl, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x36ec6e1cl, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Short3Short3(inV, out);
@@ -4288,9 +5166,13 @@
 
     private void verifyResultsConvertShort3Short3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4304,28 +5186,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x94ce33ba2d078efal, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x2d078efal, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Short4Short4(inV, out);
@@ -4344,9 +5234,13 @@
 
     private void verifyResultsConvertShort4Short4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4360,24 +5254,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortShort {
@@ -4386,7 +5288,7 @@
     }
 
     private void checkConvertUshort2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xc36a02cb6e1d9cf7l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x6e1d9cf7l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Ushort2Short2(inV, out);
@@ -4405,9 +5307,13 @@
 
     private void verifyResultsConvertUshort2Short2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4421,28 +5327,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xc36bcbe66438bdd5l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x6438bdd5l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Ushort3Short3(inV, out);
@@ -4461,9 +5375,13 @@
 
     private void verifyResultsConvertUshort3Short3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4477,28 +5395,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xc36d95015a53deb3l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x5a53deb3l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Ushort4Short4(inV, out);
@@ -4517,9 +5443,13 @@
 
     private void verifyResultsConvertUshort4Short4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4533,24 +5463,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntShort {
@@ -4559,7 +5497,7 @@
     }
 
     private void checkConvertInt2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x2a535120b5b27b91l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xb5b27b91l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Int2Short2(inV, out);
@@ -4578,9 +5516,13 @@
 
     private void verifyResultsConvertInt2Short2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4594,28 +5536,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x2a551a3babcd9c6fl, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xabcd9c6fl, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Int3Short3(inV, out);
@@ -4634,9 +5584,13 @@
 
     private void verifyResultsConvertInt3Short3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4650,28 +5604,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x2a56e356a1e8bd4dl, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xa1e8bd4dl, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Int4Short4(inV, out);
@@ -4690,9 +5652,13 @@
 
     private void verifyResultsConvertInt4Short4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4706,24 +5672,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintShort {
@@ -4732,7 +5706,7 @@
     }
 
     private void checkConvertUint2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xd1e10a6e48348812l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x48348812l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Uint2Short2(inV, out);
@@ -4751,9 +5725,13 @@
 
     private void verifyResultsConvertUint2Short2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4767,28 +5745,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xd1e2d3893e4fa8f0l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x3e4fa8f0l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Uint3Short3(inV, out);
@@ -4807,9 +5793,13 @@
 
     private void verifyResultsConvertUint3Short3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4823,28 +5813,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xd1e49ca4346ac9cel, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x346ac9cel, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Uint4Short4(inV, out);
@@ -4863,9 +5861,13 @@
 
     private void verifyResultsConvertUint4Short4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -4879,24 +5881,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatUshort {
@@ -4905,7 +5915,7 @@
     }
 
     private void checkConvertFloat2Ushort2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x36e4b950b708416fl, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb708416fl, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Float2Ushort2(inV, out);
@@ -4924,9 +5934,13 @@
 
     private void verifyResultsConvertFloat2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -4940,28 +5954,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Ushort3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x373180d80d63d29bl, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd63d29bl, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Float3Ushort3(inV, out);
@@ -4980,9 +6002,13 @@
 
     private void verifyResultsConvertFloat3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -4996,28 +6022,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Ushort4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x377e485f63bf63c7l, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x63bf63c7l, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Float4Ushort4(inV, out);
@@ -5036,9 +6070,13 @@
 
     private void verifyResultsConvertFloat4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -5052,24 +6090,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharUshort {
@@ -5078,7 +6124,7 @@
     }
 
     private void checkConvertChar2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd88c0b0ed8f1eeafl, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd8f1eeafl, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Char2Ushort2(inV, out);
@@ -5097,9 +6143,13 @@
 
     private void verifyResultsConvertChar2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -5113,28 +6163,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xd8d8d2962f4d7fdbl, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x2f4d7fdbl, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Char3Ushort3(inV, out);
@@ -5153,9 +6211,13 @@
 
     private void verifyResultsConvertChar3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -5169,28 +6231,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xd9259a1d85a91107l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x85a91107l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Char4Ushort4(inV, out);
@@ -5209,9 +6279,13 @@
 
     private void verifyResultsConvertChar4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -5225,24 +6299,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUshort {
@@ -5251,7 +6333,7 @@
     }
 
     private void checkConvertUchar2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x72b6c56063e3e68l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x63e3e68l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Uchar2Ushort2(inV, out);
@@ -5270,9 +6352,13 @@
 
     private void verifyResultsConvertUchar2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -5286,28 +6372,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x77833dd5c99cf94l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x5c99cf94l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Uchar3Ushort3(inV, out);
@@ -5326,9 +6420,13 @@
 
     private void verifyResultsConvertUchar3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -5342,28 +6440,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7c4fb64b2f560c0l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xb2f560c0l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Uchar4Ushort4(inV, out);
@@ -5382,9 +6488,13 @@
 
     private void verifyResultsConvertUchar4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -5398,24 +6508,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortUshort {
@@ -5424,7 +6542,7 @@
     }
 
     private void checkConvertShort2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xfe0d269c7264c053l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x7264c053l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Short2Ushort2(inV, out);
@@ -5443,9 +6561,13 @@
 
     private void verifyResultsConvertShort2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -5459,28 +6581,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xfe59ee23c8c0517fl, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xc8c0517fl, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Short3Ushort3(inV, out);
@@ -5499,9 +6629,13 @@
 
     private void verifyResultsConvertShort3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -5515,28 +6649,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xfea6b5ab1f1be2abl, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x1f1be2abl, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Short4Ushort4(inV, out);
@@ -5555,9 +6697,13 @@
 
     private void verifyResultsConvertShort4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -5571,24 +6717,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUshort {
@@ -5597,7 +6751,7 @@
     }
 
     private void checkConvertUshort2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xd2d27d910e362466l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xe362466l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Ushort2Ushort2(inV, out);
@@ -5616,9 +6770,13 @@
 
     private void verifyResultsConvertUshort2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -5632,28 +6790,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xd31f45186491b592l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x6491b592l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Ushort3Ushort3(inV, out);
@@ -5672,9 +6838,13 @@
 
     private void verifyResultsConvertUshort3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -5688,28 +6858,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xd36c0c9fbaed46bel, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xbaed46bel, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Ushort4Ushort4(inV, out);
@@ -5728,9 +6906,13 @@
 
     private void verifyResultsConvertUshort4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -5744,24 +6926,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntUshort {
@@ -5770,7 +6960,7 @@
     }
 
     private void checkConvertInt2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x1c02a5e414378844l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x14378844l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Int2Ushort2(inV, out);
@@ -5789,9 +6979,13 @@
 
     private void verifyResultsConvertInt2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -5805,28 +6999,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x1c4f6d6b6a931970l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x6a931970l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Int3Ushort3(inV, out);
@@ -5845,9 +7047,13 @@
 
     private void verifyResultsConvertInt3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -5861,28 +7067,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x1c9c34f2c0eeaa9cl, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xc0eeaa9cl, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Int4Ushort4(inV, out);
@@ -5901,9 +7115,13 @@
 
     private void verifyResultsConvertInt4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -5917,24 +7135,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUshort {
@@ -5943,7 +7169,7 @@
     }
 
     private void checkConvertUint2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x40d0c5ebb00fa1efl, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xb00fa1efl, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Uint2Ushort2(inV, out);
@@ -5962,9 +7188,13 @@
 
     private void verifyResultsConvertUint2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -5978,28 +7208,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x411d8d73066b331bl, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x66b331bl, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Uint3Ushort3(inV, out);
@@ -6018,9 +7256,13 @@
 
     private void verifyResultsConvertUint3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -6034,28 +7276,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x416a54fa5cc6c447l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x5cc6c447l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Uint4Ushort4(inV, out);
@@ -6074,9 +7324,13 @@
 
     private void verifyResultsConvertUint4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -6090,24 +7344,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatInt {
@@ -6116,7 +7378,7 @@
     }
 
     private void checkConvertFloat2Int2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8fb63fb7c069dd5dl, -2.1474835210000000000e+09, 2.1474835200000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc069dd5dl, -2.1474835210000000000e+09, 2.1474835200000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Float2Int2(inV, out);
@@ -6135,9 +7397,13 @@
 
     private void verifyResultsConvertFloat2Int2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -6151,28 +7417,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Int3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8fb63ff70a11ed93l, -2.1474835210000000000e+09, 2.1474835200000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xa11ed93l, -2.1474835210000000000e+09, 2.1474835200000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Float3Int3(inV, out);
@@ -6191,9 +7465,13 @@
 
     private void verifyResultsConvertFloat3Int3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -6207,28 +7485,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Int4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8fb6403653b9fdc9l, -2.1474835210000000000e+09, 2.1474835200000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x53b9fdc9l, -2.1474835210000000000e+09, 2.1474835200000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Float4Int4(inV, out);
@@ -6247,9 +7533,13 @@
 
     private void verifyResultsConvertFloat4Int4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -6263,24 +7553,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharInt {
@@ -6289,7 +7587,7 @@
     }
 
     private void checkConvertChar2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x880244ac94c6831dl, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x94c6831dl, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Char2Int2(inV, out);
@@ -6308,9 +7606,13 @@
 
     private void verifyResultsConvertChar2Int2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -6324,28 +7626,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x880244ebde6e9353l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xde6e9353l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Char3Int3(inV, out);
@@ -6364,9 +7674,13 @@
 
     private void verifyResultsConvertChar3Int3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -6380,28 +7694,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x8802452b2816a389l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x2816a389l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Char4Int4(inV, out);
@@ -6420,9 +7742,13 @@
 
     private void verifyResultsConvertChar4Int4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -6436,24 +7762,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharInt {
@@ -6462,7 +7796,7 @@
     }
 
     private void checkConvertUchar2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x97cffb96923aa720l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x923aa720l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Uchar2Int2(inV, out);
@@ -6481,9 +7815,13 @@
 
     private void verifyResultsConvertUchar2Int2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -6497,28 +7835,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x97cffbd5dbe2b756l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xdbe2b756l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Uchar3Int3(inV, out);
@@ -6537,9 +7883,13 @@
 
     private void verifyResultsConvertUchar3Int3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -6553,28 +7903,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x97cffc15258ac78cl, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x258ac78cl, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Uchar4Int4(inV, out);
@@ -6593,9 +7951,13 @@
 
     private void verifyResultsConvertUchar4Int4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -6609,24 +7971,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortInt {
@@ -6635,7 +8005,7 @@
     }
 
     private void checkConvertShort2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x85693203252a2d69l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x252a2d69l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Short2Int2(inV, out);
@@ -6654,9 +8024,13 @@
 
     private void verifyResultsConvertShort2Int2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -6670,28 +8044,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x856932426ed23d9fl, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x6ed23d9fl, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Short3Int3(inV, out);
@@ -6710,9 +8092,13 @@
 
     private void verifyResultsConvertShort3Int3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -6726,28 +8112,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x85693281b87a4dd5l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xb87a4dd5l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Short4Int4(inV, out);
@@ -6766,9 +8160,13 @@
 
     private void verifyResultsConvertShort4Int4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -6782,24 +8180,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortInt {
@@ -6808,7 +8214,7 @@
     }
 
     private void checkConvertUshort2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x2cf6eb50b7ac39eal, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xb7ac39eal, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Ushort2Int2(inV, out);
@@ -6827,9 +8233,13 @@
 
     private void verifyResultsConvertUshort2Int2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -6843,28 +8253,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x2cf6eb9001544a20l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x1544a20l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Ushort3Int3(inV, out);
@@ -6883,9 +8301,13 @@
 
     private void verifyResultsConvertUshort3Int3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -6899,28 +8321,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x2cf6ebcf4afc5a56l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x4afc5a56l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Ushort4Int4(inV, out);
@@ -6939,9 +8369,13 @@
 
     private void verifyResultsConvertUshort4Int4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -6955,24 +8389,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntInt {
@@ -6981,7 +8423,7 @@
     }
 
     private void checkConvertInt2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x501d84049a42354l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x49a42354l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Int2Int2(inV, out);
@@ -7000,9 +8442,13 @@
 
     private void verifyResultsConvertInt2Int2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -7016,28 +8462,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x501d87f934c338al, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x934c338al, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Int3Int3(inV, out);
@@ -7056,9 +8510,13 @@
 
     private void verifyResultsConvertInt3Int3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -7072,28 +8530,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x501d8bedcf443c0l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xdcf443c0l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Int4Int4(inV, out);
@@ -7112,9 +8578,13 @@
 
     private void verifyResultsConvertInt4Int4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -7128,24 +8598,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintInt {
@@ -7154,7 +8632,7 @@
     }
 
     private void checkConvertUint2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x70899b043daccaddl, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x3daccaddl, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Uint2Int2(inV, out);
@@ -7173,9 +8651,13 @@
 
     private void verifyResultsConvertUint2Int2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -7189,28 +8671,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x70899b438754db13l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x8754db13l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Uint3Int3(inV, out);
@@ -7229,9 +8719,13 @@
 
     private void verifyResultsConvertUint3Int3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -7245,28 +8739,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x70899b82d0fceb49l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xd0fceb49l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Uint4Int4(inV, out);
@@ -7285,9 +8787,13 @@
 
     private void verifyResultsConvertUint4Int4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -7301,24 +8807,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatUint {
@@ -7327,7 +8841,7 @@
     }
 
     private void checkConvertFloat2Uint2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x239cb6cd424dca22l, 0.0000000000000000000e+00, 4.2949670400000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x424dca22l, 0.0000000000000000000e+00, 4.2949670400000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Float2Uint2(inV, out);
@@ -7346,9 +8860,13 @@
 
     private void verifyResultsConvertFloat2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -7362,28 +8880,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Uint3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x239cc16ea1558f16l, 0.0000000000000000000e+00, 4.2949670400000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xa1558f16l, 0.0000000000000000000e+00, 4.2949670400000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Float3Uint3(inV, out);
@@ -7402,9 +8928,13 @@
 
     private void verifyResultsConvertFloat3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -7418,28 +8948,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Uint4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x239ccc10005d540al, 0.0000000000000000000e+00, 4.2949670400000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5d540al, 0.0000000000000000000e+00, 4.2949670400000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Float4Uint4(inV, out);
@@ -7458,9 +8996,13 @@
 
     private void verifyResultsConvertFloat4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -7474,24 +9016,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharUint {
@@ -7500,7 +9050,7 @@
     }
 
     private void checkConvertChar2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd8618beceddda162l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xeddda162l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Char2Uint2(inV, out);
@@ -7519,9 +9069,13 @@
 
     private void verifyResultsConvertChar2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -7535,28 +9089,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xd861968e4ce56656l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x4ce56656l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Char3Uint3(inV, out);
@@ -7575,9 +9137,13 @@
 
     private void verifyResultsConvertChar3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -7591,28 +9157,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xd861a12fabed2b4al, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xabed2b4al, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Char4Uint4(inV, out);
@@ -7631,9 +9205,13 @@
 
     private void verifyResultsConvertChar4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -7647,24 +9225,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUint {
@@ -7673,7 +9259,7 @@
     }
 
     private void checkConvertUchar2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x7fef453a805fade3l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x805fade3l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Uchar2Uint2(inV, out);
@@ -7692,9 +9278,13 @@
 
     private void verifyResultsConvertUchar2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -7708,28 +9298,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x7fef4fdbdf6772d7l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xdf6772d7l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Uchar3Uint3(inV, out);
@@ -7748,9 +9346,13 @@
 
     private void verifyResultsConvertUchar3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -7764,28 +9366,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7fef5a7d3e6f37cbl, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x3e6f37cbl, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Uchar4Uint4(inV, out);
@@ -7804,9 +9414,13 @@
 
     private void verifyResultsConvertUchar4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -7820,24 +9434,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortUint {
@@ -7846,7 +9468,7 @@
     }
 
     private void checkConvertShort2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x68ab69772e9b3c26l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x2e9b3c26l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Short2Uint2(inV, out);
@@ -7865,9 +9487,13 @@
 
     private void verifyResultsConvertShort2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -7881,28 +9507,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x68ab74188da3011al, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x8da3011al, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Short3Uint3(inV, out);
@@ -7921,9 +9555,13 @@
 
     private void verifyResultsConvertShort3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -7937,28 +9575,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x68ab7eb9ecaac60el, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xecaac60el, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Short4Uint4(inV, out);
@@ -7977,9 +9623,13 @@
 
     private void verifyResultsConvertShort4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -7993,24 +9643,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUint {
@@ -8019,7 +9677,7 @@
     }
 
     private void checkConvertUshort2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x8d79897eca7355d1l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xca7355d1l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Ushort2Uint2(inV, out);
@@ -8038,9 +9696,13 @@
 
     private void verifyResultsConvertUshort2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -8054,28 +9716,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x8d799420297b1ac5l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x297b1ac5l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Ushort3Uint3(inV, out);
@@ -8094,9 +9764,13 @@
 
     private void verifyResultsConvertUshort3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -8110,28 +9784,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x8d799ec18882dfb9l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x8882dfb9l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Ushort4Uint4(inV, out);
@@ -8150,9 +9832,13 @@
 
     private void verifyResultsConvertUshort4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -8166,24 +9852,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntUint {
@@ -8192,7 +9886,7 @@
     }
 
     private void checkConvertInt2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xd74f55bc4f178a9fl, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x4f178a9fl, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Int2Uint2(inV, out);
@@ -8211,9 +9905,13 @@
 
     private void verifyResultsConvertInt2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -8227,28 +9925,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xd74f605dae1f4f93l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xae1f4f93l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Int3Uint3(inV, out);
@@ -8267,9 +9973,13 @@
 
     private void verifyResultsConvertInt3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -8283,28 +9993,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xd74f6aff0d271487l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xd271487l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Int4Uint4(inV, out);
@@ -8323,9 +10041,13 @@
 
     private void verifyResultsConvertInt4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -8339,24 +10061,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUint {
@@ -8365,7 +10095,7 @@
     }
 
     private void checkConvertUint2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xe71d0ca64c8baea2l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x4c8baea2l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Uint2Uint2(inV, out);
@@ -8384,9 +10114,13 @@
 
     private void verifyResultsConvertUint2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -8400,28 +10134,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xe71d1747ab937396l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xab937396l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Uint3Uint3(inV, out);
@@ -8440,9 +10182,13 @@
 
     private void verifyResultsConvertUint3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -8456,28 +10202,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xe71d21e90a9b388al, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xa9b388al, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Uint4Uint4(inV, out);
@@ -8496,9 +10250,13 @@
 
     private void verifyResultsConvertUint4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -8512,24 +10270,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleDouble {
@@ -8538,7 +10304,7 @@
     }
 
     private void checkConvertDouble2Double2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x345b4a823902786el, -8.5390423905960001625e+307, 8.5390423905960001625e+307);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x3902786el, -8.5390423905960001625e+307, 8.5390423905960001625e+307);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Double2Double2(inV, out);
@@ -8557,9 +10323,13 @@
 
     private void verifyResultsConvertDouble2Double2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -8574,28 +10344,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Double3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x34a812098f5e099al, -8.5390423905960001625e+307, 8.5390423905960001625e+307);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x8f5e099al, -8.5390423905960001625e+307, 8.5390423905960001625e+307);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Double3Double3(inV, out);
@@ -8614,9 +10392,13 @@
 
     private void verifyResultsConvertDouble3Double3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -8631,28 +10413,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Double4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x34f4d990e5b99ac6l, -8.5390423905960001625e+307, 8.5390423905960001625e+307);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xe5b99ac6l, -8.5390423905960001625e+307, 8.5390423905960001625e+307);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Double4Double4(inV, out);
@@ -8671,9 +10461,13 @@
 
     private void verifyResultsConvertDouble4Double4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -8688,24 +10482,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongDouble {
@@ -8714,7 +10516,7 @@
     }
 
     private void checkConvertLong2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x7b7807124c70299bl, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x4c70299bl, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Long2Double2(inV, out);
@@ -8733,9 +10535,13 @@
 
     private void verifyResultsConvertLong2Double2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -8750,28 +10556,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x7bc4ce99a2cbbac7l, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xa2cbbac7l, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Long3Double3(inV, out);
@@ -8790,9 +10604,13 @@
 
     private void verifyResultsConvertLong3Double3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -8807,28 +10625,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x7c119620f9274bf3l, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xf9274bf3l, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Long4Double4(inV, out);
@@ -8847,9 +10673,13 @@
 
     private void verifyResultsConvertLong4Double4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -8864,24 +10694,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongDouble {
@@ -8890,7 +10728,7 @@
     }
 
     private void checkConvertUlong2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xaa17685979bc7954l, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x79bc7954l, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Ulong2Double2(inV, out);
@@ -8909,9 +10747,13 @@
 
     private void verifyResultsConvertUlong2Double2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -8926,28 +10768,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xaa642fe0d0180a80l, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xd0180a80l, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Ulong3Double3(inV, out);
@@ -8966,9 +10816,13 @@
 
     private void verifyResultsConvertUlong3Double3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -8983,28 +10837,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xaab0f76826739bacl, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x26739bacl, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Ulong4Double4(inV, out);
@@ -9023,9 +10885,13 @@
 
     private void verifyResultsConvertUlong4Double4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -9040,24 +10906,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleLong {
@@ -9066,7 +10940,7 @@
     }
 
     private void checkConvertDouble2Long2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xcbf84dc0430cbe95l, -9.2233720368547747840e+18, 9.2233720368547747840e+18);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x430cbe95l, -4.2949662730000000000e+09, 4.2949662720000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Double2Long2(inV, out);
@@ -9085,9 +10959,13 @@
 
     private void verifyResultsConvertDouble2Long2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -9101,28 +10979,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Long3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0xcbf85861a2148389l, -9.2233720368547747840e+18, 9.2233720368547747840e+18);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0xa2148389l, -4.2949662730000000000e+09, 4.2949662720000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Double3Long3(inV, out);
@@ -9141,9 +11027,13 @@
 
     private void verifyResultsConvertDouble3Long3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -9157,28 +11047,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Long4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xcbf86303011c487dl, -9.2233720368547747840e+18, 9.2233720368547747840e+18);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x11c487dl, -4.2949662730000000000e+09, 4.2949662720000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Double4Long4(inV, out);
@@ -9197,9 +11095,13 @@
 
     private void verifyResultsConvertDouble4Long4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -9213,24 +11115,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongLong {
@@ -9239,7 +11149,7 @@
     }
 
     private void checkConvertLong2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xb570c607c81d242al, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xc81d242al, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Long2Long2(inV, out);
@@ -9258,9 +11168,13 @@
 
     private void verifyResultsConvertLong2Long2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -9274,28 +11188,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xb570d0a92724e91el, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x2724e91el, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Long3Long3(inV, out);
@@ -9314,9 +11236,13 @@
 
     private void verifyResultsConvertLong3Long3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -9330,28 +11256,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xb570db4a862cae12l, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x862cae12l, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Long4Long4(inV, out);
@@ -9370,9 +11304,13 @@
 
     private void verifyResultsConvertLong4Long4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -9386,24 +11324,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongLong {
@@ -9412,7 +11358,7 @@
     }
 
     private void checkConvertUlong2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x5cfe7f555a9f30abl, false, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x5a9f30abl, false, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Ulong2Long2(inV, out);
@@ -9431,9 +11377,13 @@
 
     private void verifyResultsConvertUlong2Long2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -9447,28 +11397,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x5cfe89f6b9a6f59fl, false, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xb9a6f59fl, false, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Ulong3Long3(inV, out);
@@ -9487,9 +11445,13 @@
 
     private void verifyResultsConvertUlong3Long3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -9503,28 +11465,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x5cfe949818aeba93l, false, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x18aeba93l, false, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Ulong4Long4(inV, out);
@@ -9543,9 +11513,13 @@
 
     private void verifyResultsConvertUlong4Long4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -9559,24 +11533,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleUlong {
@@ -9585,7 +11567,7 @@
     }
 
     private void checkConvertDouble2Ulong2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x42b56e3b7e12ff5el, 0.0000000000000000000e+00, 1.8446744073709549568e+19);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x7e12ff5el, 0.0000000000000000000e+00, 4.2949652480000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Double2Ulong2(inV, out);
@@ -9604,9 +11586,13 @@
 
     private void verifyResultsConvertDouble2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -9620,28 +11606,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Ulong3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x42b73756742e203cl, 0.0000000000000000000e+00, 1.8446744073709549568e+19);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x742e203cl, 0.0000000000000000000e+00, 4.2949652480000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Double3Ulong3(inV, out);
@@ -9660,9 +11654,13 @@
 
     private void verifyResultsConvertDouble3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -9676,28 +11674,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Ulong4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x42b900716a49411al, 0.0000000000000000000e+00, 1.8446744073709549568e+19);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x6a49411al, 0.0000000000000000000e+00, 4.2949652480000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Double4Ulong4(inV, out);
@@ -9716,9 +11722,13 @@
 
     private void verifyResultsConvertDouble4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -9732,24 +11742,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongUlong {
@@ -9758,7 +11776,7 @@
     }
 
     private void checkConvertLong2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x79f1a23ed7d40f65l, false, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xd7d40f65l, false, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Long2Ulong2(inV, out);
@@ -9777,9 +11795,13 @@
 
     private void verifyResultsConvertLong2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -9793,28 +11815,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x79f36b59cdef3043l, false, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xcdef3043l, false, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Long3Ulong3(inV, out);
@@ -9833,9 +11863,13 @@
 
     private void verifyResultsConvertLong3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -9849,28 +11883,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x79f53474c40a5121l, false, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xc40a5121l, false, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Long4Ulong4(inV, out);
@@ -9889,9 +11931,13 @@
 
     private void verifyResultsConvertLong4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -9905,24 +11951,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongUlong {
@@ -9931,7 +11985,7 @@
     }
 
     private void checkConvertUlong2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x9ebfc24673ac2910l, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x73ac2910l, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Ulong2Ulong2(inV, out);
@@ -9950,9 +12004,13 @@
 
     private void verifyResultsConvertUlong2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -9966,28 +12024,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x9ec18b6169c749eel, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x69c749eel, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Ulong3Ulong3(inV, out);
@@ -10006,9 +12072,13 @@
 
     private void verifyResultsConvertUlong3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -10022,28 +12092,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x9ec3547c5fe26accl, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x5fe26accl, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Ulong4Ulong4(inV, out);
@@ -10062,9 +12140,13 @@
 
     private void verifyResultsConvertUlong4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -10078,24 +12160,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleFloat {
@@ -10104,7 +12194,7 @@
     }
 
     private void checkConvertDouble2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x42b4cec67d6d9a2dl, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x7d6d9a2dl, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Double2Float2(inV, out);
@@ -10123,9 +12213,13 @@
 
     private void verifyResultsConvertDouble2Float2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -10140,28 +12234,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x42b697e17388bb0bl, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x7388bb0bl, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Double3Float3(inV, out);
@@ -10180,9 +12282,13 @@
 
     private void verifyResultsConvertDouble3Float3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -10197,28 +12303,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x42b860fc69a3dbe9l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x69a3dbe9l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Double4Float4(inV, out);
@@ -10237,9 +12351,13 @@
 
     private void verifyResultsConvertDouble4Float4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -10254,24 +12372,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongFloat {
@@ -10280,7 +12406,7 @@
     }
 
     private void checkConvertLong2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x79f102c9d72eaa34l, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xd72eaa34l, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Long2Float2(inV, out);
@@ -10299,9 +12425,13 @@
 
     private void verifyResultsConvertLong2Float2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -10316,28 +12446,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x79f2cbe4cd49cb12l, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xcd49cb12l, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Long3Float3(inV, out);
@@ -10356,9 +12494,13 @@
 
     private void verifyResultsConvertLong3Float3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -10373,28 +12515,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x79f494ffc364ebf0l, true, 63);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xc364ebf0l, true, 63);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Long4Float4(inV, out);
@@ -10413,9 +12563,13 @@
 
     private void verifyResultsConvertLong4Float4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -10430,24 +12584,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongFloat {
@@ -10456,7 +12618,7 @@
     }
 
     private void checkConvertUlong2Float2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x9ebf22d17306c3dfl, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x7306c3dfl, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testConvertFloat2Ulong2Float2(inV, out);
@@ -10475,9 +12637,13 @@
 
     private void verifyResultsConvertUlong2Float2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -10492,28 +12658,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Float3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x9ec0ebec6921e4bdl, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x6921e4bdl, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testConvertFloat3Ulong3Float3(inV, out);
@@ -10532,9 +12706,13 @@
 
     private void verifyResultsConvertUlong3Float3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -10549,28 +12727,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Float4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x9ec2b5075f3d059bl, false, 64);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x5f3d059bl, false, 64);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testConvertFloat4Ulong4Float4(inV, out);
@@ -10589,9 +12775,13 @@
 
     private void verifyResultsConvertUlong4Float4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -10606,24 +12796,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleChar {
@@ -10632,7 +12830,7 @@
     }
 
     private void checkConvertDouble2Char2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xcbf84b7bef094a17l, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xef094a17l, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Double2Char2(inV, out);
@@ -10651,9 +12849,13 @@
 
     private void verifyResultsConvertDouble2Char2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -10667,28 +12869,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Char3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0xcbf8561d4e110f0bl, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x4e110f0bl, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Double3Char3(inV, out);
@@ -10707,9 +12917,13 @@
 
     private void verifyResultsConvertDouble3Char3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -10723,28 +12937,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Char4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xcbf860bead18d3ffl, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xad18d3ffl, -1.2800000000000000000e+02, 1.2700000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Double4Char4(inV, out);
@@ -10763,9 +12985,13 @@
 
     private void verifyResultsConvertDouble4Char4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -10779,24 +13005,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongChar {
@@ -10805,7 +13039,7 @@
     }
 
     private void checkConvertLong2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xb570c3c37419afacl, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x7419afacl, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Long2Char2(inV, out);
@@ -10824,9 +13058,13 @@
 
     private void verifyResultsConvertLong2Char2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -10840,28 +13078,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xb570ce64d32174a0l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xd32174a0l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Long3Char3(inV, out);
@@ -10880,9 +13126,13 @@
 
     private void verifyResultsConvertLong3Char3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -10896,28 +13146,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xb570d90632293994l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x32293994l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Long4Char4(inV, out);
@@ -10936,9 +13194,13 @@
 
     private void verifyResultsConvertLong4Char4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -10952,24 +13214,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongChar {
@@ -10978,7 +13248,7 @@
     }
 
     private void checkConvertUlong2Char2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x5cfe7d11069bbc2dl, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x69bbc2dl, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertChar2Ulong2Char2(inV, out);
@@ -10997,9 +13267,13 @@
 
     private void verifyResultsConvertUlong2Char2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -11013,28 +13287,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Char3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x5cfe87b265a38121l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x65a38121l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertChar3Ulong3Char3(inV, out);
@@ -11053,9 +13335,13 @@
 
     private void verifyResultsConvertUlong3Char3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -11069,28 +13355,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Char4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x5cfe9253c4ab4615l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xc4ab4615l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertChar4Ulong4Char4(inV, out);
@@ -11109,9 +13403,13 @@
 
     private void verifyResultsConvertUlong4Char4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -11125,24 +13423,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleUchar {
@@ -11151,7 +13457,7 @@
     }
 
     private void checkConvertDouble2Uchar2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x42b56bf72a0f8ae0l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x2a0f8ae0l, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Double2Uchar2(inV, out);
@@ -11170,9 +13476,13 @@
 
     private void verifyResultsConvertDouble2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -11186,28 +13496,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Uchar3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x42b73512202aabbel, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x202aabbel, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Double3Uchar3(inV, out);
@@ -11226,9 +13544,13 @@
 
     private void verifyResultsConvertDouble3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -11242,28 +13564,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Uchar4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x42b8fe2d1645cc9cl, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x1645cc9cl, 0.0000000000000000000e+00, 2.5500000000000000000e+02);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Double4Uchar4(inV, out);
@@ -11282,9 +13612,13 @@
 
     private void verifyResultsConvertDouble4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -11298,24 +13632,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongUchar {
@@ -11324,7 +13666,7 @@
     }
 
     private void checkConvertLong2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x79f19ffa83d09ae7l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x83d09ae7l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Long2Uchar2(inV, out);
@@ -11343,9 +13685,13 @@
 
     private void verifyResultsConvertLong2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -11359,28 +13705,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x79f3691579ebbbc5l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x79ebbbc5l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Long3Uchar3(inV, out);
@@ -11399,9 +13753,13 @@
 
     private void verifyResultsConvertLong3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -11415,28 +13773,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x79f532307006dca3l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x7006dca3l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Long4Uchar4(inV, out);
@@ -11455,9 +13821,13 @@
 
     private void verifyResultsConvertLong4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -11471,24 +13841,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongUchar {
@@ -11497,7 +13875,7 @@
     }
 
     private void checkConvertUlong2Uchar2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x9ebfc0021fa8b492l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x1fa8b492l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.forEach_testConvertUchar2Ulong2Uchar2(inV, out);
@@ -11516,9 +13894,13 @@
 
     private void verifyResultsConvertUlong2Uchar2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -11532,28 +13914,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Uchar3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x9ec1891d15c3d570l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x15c3d570l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.forEach_testConvertUchar3Ulong3Uchar3(inV, out);
@@ -11572,9 +13962,13 @@
 
     private void verifyResultsConvertUlong3Uchar3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -11588,28 +13982,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Uchar4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x9ec352380bdef64el, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xbdef64el, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.forEach_testConvertUchar4Ulong4Uchar4(inV, out);
@@ -11628,9 +14030,13 @@
 
     private void verifyResultsConvertUlong4Uchar4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -11644,24 +14050,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleShort {
@@ -11670,7 +14084,7 @@
     }
 
     private void checkConvertDouble2Short2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x42b557fbbf1d55f9l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xbf1d55f9l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Double2Short2(inV, out);
@@ -11689,9 +14103,13 @@
 
     private void verifyResultsConvertDouble2Short2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -11705,28 +14123,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Short3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x42b72116b53876d7l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0xb53876d7l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Double3Short3(inV, out);
@@ -11745,9 +14171,13 @@
 
     private void verifyResultsConvertDouble3Short3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -11761,28 +14191,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Short4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x42b8ea31ab5397b5l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xab5397b5l, -3.2768000000000000000e+04, 3.2767000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Double4Short4(inV, out);
@@ -11801,9 +14239,13 @@
 
     private void verifyResultsConvertDouble4Short4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -11817,24 +14259,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongShort {
@@ -11843,7 +14293,7 @@
     }
 
     private void checkConvertLong2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x79f18bff18de6600l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x18de6600l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Long2Short2(inV, out);
@@ -11862,9 +14312,13 @@
 
     private void verifyResultsConvertLong2Short2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -11878,28 +14332,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x79f3551a0ef986del, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xef986del, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Long3Short3(inV, out);
@@ -11918,9 +14380,13 @@
 
     private void verifyResultsConvertLong3Short3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -11934,28 +14400,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x79f51e350514a7bcl, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x514a7bcl, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Long4Short4(inV, out);
@@ -11974,9 +14448,13 @@
 
     private void verifyResultsConvertLong4Short4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -11990,24 +14468,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongShort {
@@ -12016,7 +14502,7 @@
     }
 
     private void checkConvertUlong2Short2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x9ebfac06b4b67fabl, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xb4b67fabl, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertShort2Ulong2Short2(inV, out);
@@ -12035,9 +14521,13 @@
 
     private void verifyResultsConvertUlong2Short2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -12051,28 +14541,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Short3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x9ec17521aad1a089l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xaad1a089l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertShort3Ulong3Short3(inV, out);
@@ -12091,9 +14589,13 @@
 
     private void verifyResultsConvertUlong3Short3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -12107,28 +14609,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Short4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x9ec33e3ca0ecc167l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xa0ecc167l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertShort4Ulong4Short4(inV, out);
@@ -12147,9 +14657,13 @@
 
     private void verifyResultsConvertUlong4Short4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -12163,24 +14677,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleUshort {
@@ -12189,7 +14711,7 @@
     }
 
     private void checkConvertDouble2Ushort2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x3479ccaea92a37bcl, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xa92a37bcl, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Double2Ushort2(inV, out);
@@ -12208,9 +14730,13 @@
 
     private void verifyResultsConvertDouble2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -12224,28 +14750,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Ushort3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x34c69435ff85c8e8l, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0xff85c8e8l, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Double3Ushort3(inV, out);
@@ -12264,9 +14798,13 @@
 
     private void verifyResultsConvertDouble3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -12280,28 +14818,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Ushort4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x35135bbd55e15a14l, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x55e15a14l, 0.0000000000000000000e+00, 6.5535000000000000000e+04);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Double4Ushort4(inV, out);
@@ -12320,9 +14866,13 @@
 
     private void verifyResultsConvertDouble4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -12336,24 +14886,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongUshort {
@@ -12362,7 +14920,7 @@
     }
 
     private void checkConvertLong2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x7b96893ebc97e8e9l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xbc97e8e9l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Long2Ushort2(inV, out);
@@ -12381,9 +14939,13 @@
 
     private void verifyResultsConvertLong2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -12397,28 +14959,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x7be350c612f37a15l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x12f37a15l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Long3Ushort3(inV, out);
@@ -12437,9 +15007,13 @@
 
     private void verifyResultsConvertLong3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -12453,28 +15027,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x7c30184d694f0b41l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x694f0b41l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Long4Ushort4(inV, out);
@@ -12493,9 +15075,13 @@
 
     private void verifyResultsConvertLong4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -12509,24 +15095,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongUshort {
@@ -12535,7 +15129,7 @@
     }
 
     private void checkConvertUlong2Ushort2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xaa35ea85e9e438a2l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xe9e438a2l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.forEach_testConvertUshort2Ulong2Ushort2(inV, out);
@@ -12554,9 +15148,13 @@
 
     private void verifyResultsConvertUlong2Ushort2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -12570,28 +15168,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Ushort3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xaa82b20d403fc9cel, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x403fc9cel, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.forEach_testConvertUshort3Ulong3Ushort3(inV, out);
@@ -12610,9 +15216,13 @@
 
     private void verifyResultsConvertUlong3Ushort3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -12626,28 +15236,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Ushort4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xaacf7994969b5afal, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x969b5afal, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.forEach_testConvertUshort4Ulong4Ushort4(inV, out);
@@ -12666,9 +15284,13 @@
 
     private void verifyResultsConvertUlong4Ushort4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -12682,24 +15304,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleInt {
@@ -12708,7 +15338,7 @@
     }
 
     private void checkConvertDouble2Int2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xa57cd81dcaf628fcl, -2.1474836480000000000e+09, 2.1474836470000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xcaf628fcl, -2.1474836480000000000e+09, 2.1474836470000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Double2Int2(inV, out);
@@ -12727,9 +15357,13 @@
 
     private void verifyResultsConvertDouble2Int2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -12743,28 +15377,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Int3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0xa57cd85d149e3932l, -2.1474836480000000000e+09, 2.1474836470000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x149e3932l, -2.1474836480000000000e+09, 2.1474836470000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Double3Int3(inV, out);
@@ -12783,9 +15425,13 @@
 
     private void verifyResultsConvertDouble3Int3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -12799,28 +15445,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Int4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xa57cd89c5e464968l, -2.1474836480000000000e+09, 2.1474836470000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0x5e464968l, -2.1474836480000000000e+09, 2.1474836470000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Double4Int4(inV, out);
@@ -12839,9 +15493,13 @@
 
     private void verifyResultsConvertDouble4Int4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -12855,24 +15513,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongInt {
@@ -12881,7 +15547,7 @@
     }
 
     private void checkConvertLong2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xfe441c66e5deba3bl, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xe5deba3bl, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Long2Int2(inV, out);
@@ -12900,9 +15566,13 @@
 
     private void verifyResultsConvertLong2Int2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -12916,28 +15586,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xfe441ca62f86ca71l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x2f86ca71l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Long3Int3(inV, out);
@@ -12956,9 +15634,13 @@
 
     private void verifyResultsConvertLong3Int3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -12972,28 +15654,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xfe441ce5792edaa7l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x792edaa7l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Long4Int4(inV, out);
@@ -13012,9 +15702,13 @@
 
     private void verifyResultsConvertLong4Int4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -13028,24 +15722,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongInt {
@@ -13054,7 +15756,7 @@
     }
 
     private void checkConvertUlong2Int2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xe11d350e352de3el, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xe352de3el, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertInt2Ulong2Int2(inV, out);
@@ -13073,9 +15775,13 @@
 
     private void verifyResultsConvertUlong2Int2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -13089,28 +15795,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Int3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xe11d3902cfaee74l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x2cfaee74l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertInt3Ulong3Int3(inV, out);
@@ -13129,9 +15843,13 @@
 
     private void verifyResultsConvertUlong3Int3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -13145,28 +15863,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Int4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xe11d3cf76a2feaal, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x76a2feaal, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertInt4Ulong4Int4(inV, out);
@@ -13185,9 +15911,13 @@
 
     private void verifyResultsConvertUlong4Int4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -13201,24 +15931,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsDoubleUint {
@@ -13227,7 +15965,7 @@
     }
 
     private void checkConvertDouble2Uint2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0xcbf84ff107de7dd7l, 0.0000000000000000000e+00, 4.2949672950000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 2, 0x7de7dd7l, 0.0000000000000000000e+00, 4.2949672950000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Double2Uint2(inV, out);
@@ -13246,9 +15984,13 @@
 
     private void verifyResultsConvertDouble2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -13262,28 +16004,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble3Uint3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0xcbf85a9266e642cbl, 0.0000000000000000000e+00, 4.2949672950000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 3, 0x66e642cbl, 0.0000000000000000000e+00, 4.2949672950000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Double3Uint3(inV, out);
@@ -13302,9 +16052,13 @@
 
     private void verifyResultsConvertDouble3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -13318,28 +16072,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertDouble4Uint4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xcbf86533c5ee07bfl, 0.0000000000000000000e+00, 4.2949672950000000000e+09);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_64, 4, 0xc5ee07bfl, 0.0000000000000000000e+00, 4.2949672950000000000e+09);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Double4Uint4(inV, out);
@@ -13358,9 +16120,13 @@
 
     private void verifyResultsConvertDouble4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         double[] arrayInV = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (double) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -13374,24 +16140,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertDouble4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertDouble4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongUint {
@@ -13400,7 +16174,7 @@
     }
 
     private void checkConvertLong2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xb570c8388ceee36cl, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x8ceee36cl, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Long2Uint2(inV, out);
@@ -13419,9 +16193,13 @@
 
     private void verifyResultsConvertLong2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -13435,28 +16213,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xb570d2d9ebf6a860l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xebf6a860l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Long3Uint3(inV, out);
@@ -13475,9 +16261,13 @@
 
     private void verifyResultsConvertLong3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -13491,28 +16281,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertLong4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xb570dd7b4afe6d54l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x4afe6d54l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Long4Uint4(inV, out);
@@ -13531,9 +16329,13 @@
 
     private void verifyResultsConvertLong4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -13547,24 +16349,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertLong4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertLong4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongUint {
@@ -13573,7 +16383,7 @@
     }
 
     private void checkConvertUlong2Uint2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x5cfe81861f70efedl, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x1f70efedl, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.forEach_testConvertUint2Ulong2Uint2(inV, out);
@@ -13592,9 +16402,13 @@
 
     private void verifyResultsConvertUlong2Uint2(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -13608,28 +16422,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong3Uint3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x5cfe8c277e78b4e1l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x7e78b4e1l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.forEach_testConvertUint3Ulong3Uint3(inV, out);
@@ -13648,9 +16470,13 @@
 
     private void verifyResultsConvertUlong3Uint3(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -13664,28 +16490,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUlong4Uint4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x5cfe96c8dd8079d5l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0xdd8079d5l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.forEach_testConvertUint4Ulong4Uint4(inV, out);
@@ -13704,9 +16538,13 @@
 
     private void verifyResultsConvertUlong4Uint4(Allocation inV, Allocation out, boolean relaxed) {
         long[] arrayInV = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (long) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -13720,24 +16558,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUlong4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUlong4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatDouble {
@@ -13746,7 +16592,7 @@
     }
 
     private void checkConvertFloat2Double2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x36c6372446e08221l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x46e08221l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Float2Double2(inV, out);
@@ -13765,9 +16611,13 @@
 
     private void verifyResultsConvertFloat2Double2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -13782,28 +16632,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Double3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3712feab9d3c134dl, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9d3c134dl, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Float3Double3(inV, out);
@@ -13822,9 +16680,13 @@
 
     private void verifyResultsConvertFloat3Double3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -13839,28 +16701,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Double4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x375fc632f397a479l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf397a479l, -1.6163412428744576259e+38, 1.6163412428744576259e+38);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Float4Double4(inV, out);
@@ -13879,9 +16749,13 @@
 
     private void verifyResultsConvertFloat4Double4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -13896,24 +16770,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharDouble {
@@ -13922,7 +16804,7 @@
     }
 
     private void checkConvertChar2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd86d88e268ca2f61l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x68ca2f61l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Char2Double2(inV, out);
@@ -13941,9 +16823,13 @@
 
     private void verifyResultsConvertChar2Double2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -13958,28 +16844,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xd8ba5069bf25c08dl, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xbf25c08dl, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Char3Double3(inV, out);
@@ -13998,9 +16892,13 @@
 
     private void verifyResultsConvertChar3Double3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -14015,28 +16913,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xd90717f1158151b9l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x158151b9l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Char4Double4(inV, out);
@@ -14055,9 +16961,13 @@
 
     private void verifyResultsConvertChar4Double4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -14072,24 +16982,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharDouble {
@@ -14098,7 +17016,7 @@
     }
 
     private void checkConvertUchar2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x70cea2996167f1al, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x96167f1al, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Uchar2Double2(inV, out);
@@ -14117,9 +17035,13 @@
 
     private void verifyResultsConvertUchar2Double2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -14134,28 +17056,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x759b1b0ec721046l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xec721046l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Uchar3Double3(inV, out);
@@ -14174,9 +17104,13 @@
 
     private void verifyResultsConvertUchar3Double3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -14191,28 +17125,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7a6793842cda172l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x42cda172l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Uchar4Double4(inV, out);
@@ -14231,9 +17173,13 @@
 
     private void verifyResultsConvertUchar4Double4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -14248,24 +17194,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortDouble {
@@ -14274,7 +17228,7 @@
     }
 
     private void checkConvertShort2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xfdeea470023d0105l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x23d0105l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Short2Double2(inV, out);
@@ -14293,9 +17247,13 @@
 
     private void verifyResultsConvertShort2Double2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -14310,28 +17268,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xfe3b6bf758989231l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x58989231l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Short3Double3(inV, out);
@@ -14350,9 +17316,13 @@
 
     private void verifyResultsConvertShort3Double3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -14367,28 +17337,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xfe88337eaef4235dl, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xaef4235dl, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Short4Double4(inV, out);
@@ -14407,9 +17385,13 @@
 
     private void verifyResultsConvertShort4Double4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -14424,24 +17406,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortDouble {
@@ -14450,7 +17440,7 @@
     }
 
     private void checkConvertUshort2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xd2b3fb649e0e6518l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x9e0e6518l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Ushort2Double2(inV, out);
@@ -14469,9 +17459,13 @@
 
     private void verifyResultsConvertUshort2Double2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -14486,28 +17480,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xd300c2ebf469f644l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xf469f644l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Ushort3Double3(inV, out);
@@ -14526,9 +17528,13 @@
 
     private void verifyResultsConvertUshort3Double3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -14543,28 +17549,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xd34d8a734ac58770l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x4ac58770l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Ushort4Double4(inV, out);
@@ -14583,9 +17597,13 @@
 
     private void verifyResultsConvertUshort4Double4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -14600,24 +17618,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntDouble {
@@ -14626,7 +17652,7 @@
     }
 
     private void checkConvertInt2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x1be423b7a40fc8f6l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xa40fc8f6l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Int2Double2(inV, out);
@@ -14645,9 +17671,13 @@
 
     private void verifyResultsConvertInt2Double2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -14662,28 +17692,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x1c30eb3efa6b5a22l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xfa6b5a22l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Int3Double3(inV, out);
@@ -14702,9 +17740,13 @@
 
     private void verifyResultsConvertInt3Double3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -14719,28 +17761,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x1c7db2c650c6eb4el, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x50c6eb4el, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Int4Double4(inV, out);
@@ -14759,9 +17809,13 @@
 
     private void verifyResultsConvertInt4Double4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -14776,24 +17830,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintDouble {
@@ -14802,7 +17864,7 @@
     }
 
     private void checkConvertUint2Double2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x40b243bf3fe7e2a1l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x3fe7e2a1l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 2), INPUTSIZE);
             script.forEach_testConvertDouble2Uint2Double2(inV, out);
@@ -14821,9 +17883,13 @@
 
     private void verifyResultsConvertUint2Double2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -14838,28 +17904,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Double2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Double2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Double3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x40ff0b46964373cdl, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x964373cdl, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 3), INPUTSIZE);
             script.forEach_testConvertDouble3Uint3Double3(inV, out);
@@ -14878,9 +17952,13 @@
 
     private void verifyResultsConvertUint3Double3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -14895,28 +17973,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Double3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Double3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Double4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x414bd2cdec9f04f9l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xec9f04f9l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_64, 4), INPUTSIZE);
             script.forEach_testConvertDouble4Uint4Double4(inV, out);
@@ -14935,9 +18021,13 @@
 
     private void verifyResultsConvertUint4Double4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         double[] arrayOut = new double[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (double) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -14952,24 +18042,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Double4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Double4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatLong {
@@ -14978,7 +18076,7 @@
     }
 
     private void checkConvertFloat2Long2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x239cb49c7d7c0ae0l, -9.2233714870989619200e+18, 9.2233714870989619200e+18);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7d7c0ae0l, -1.0000000000000000000e+00, 0.0000000000000000000e+00);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Float2Long2(inV, out);
@@ -14997,9 +18095,13 @@
 
     private void verifyResultsConvertFloat2Long2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -15013,28 +18115,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Long3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x239cbf3ddc83cfd4l, -9.2233714870989619200e+18, 9.2233714870989619200e+18);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdc83cfd4l, -1.0000000000000000000e+00, 0.0000000000000000000e+00);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Float3Long3(inV, out);
@@ -15053,9 +18163,13 @@
 
     private void verifyResultsConvertFloat3Long3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -15069,28 +18183,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Long4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x239cc9df3b8b94c8l, -9.2233714870989619200e+18, 9.2233714870989619200e+18);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3b8b94c8l, -1.0000000000000000000e+00, 0.0000000000000000000e+00);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Float4Long4(inV, out);
@@ -15109,9 +18231,13 @@
 
     private void verifyResultsConvertFloat4Long4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -15125,24 +18251,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharLong {
@@ -15151,7 +18285,7 @@
     }
 
     private void checkConvertChar2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xd86189bc290be220l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x290be220l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Char2Long2(inV, out);
@@ -15170,9 +18304,13 @@
 
     private void verifyResultsConvertChar2Long2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -15186,28 +18324,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xd861945d8813a714l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x8813a714l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Char3Long3(inV, out);
@@ -15226,9 +18372,13 @@
 
     private void verifyResultsConvertChar3Long3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -15242,28 +18392,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xd8619efee71b6c08l, true, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xe71b6c08l, true, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Char4Long4(inV, out);
@@ -15282,9 +18440,13 @@
 
     private void verifyResultsConvertChar4Long4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -15298,24 +18460,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharLong {
@@ -15324,7 +18494,7 @@
     }
 
     private void checkConvertUchar2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x7fef4309bb8deea1l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xbb8deea1l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Uchar2Long2(inV, out);
@@ -15343,9 +18513,13 @@
 
     private void verifyResultsConvertUchar2Long2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -15359,28 +18533,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x7fef4dab1a95b395l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x1a95b395l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Uchar3Long3(inV, out);
@@ -15399,9 +18581,13 @@
 
     private void verifyResultsConvertUchar3Long3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -15415,28 +18601,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7fef584c799d7889l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x799d7889l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Uchar4Long4(inV, out);
@@ -15455,9 +18649,13 @@
 
     private void verifyResultsConvertUchar4Long4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -15471,24 +18669,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortLong {
@@ -15497,7 +18703,7 @@
     }
 
     private void checkConvertShort2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x68ab674669c97ce4l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x69c97ce4l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Short2Long2(inV, out);
@@ -15516,9 +18722,13 @@
 
     private void verifyResultsConvertShort2Long2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -15532,28 +18742,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x68ab71e7c8d141d8l, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xc8d141d8l, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Short3Long3(inV, out);
@@ -15572,9 +18790,13 @@
 
     private void verifyResultsConvertShort3Long3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -15588,28 +18810,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x68ab7c8927d906ccl, true, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x27d906ccl, true, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Short4Long4(inV, out);
@@ -15628,9 +18858,13 @@
 
     private void verifyResultsConvertShort4Long4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -15644,24 +18878,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortLong {
@@ -15670,7 +18912,7 @@
     }
 
     private void checkConvertUshort2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x8d79874e05a1968fl, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x5a1968fl, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Ushort2Long2(inV, out);
@@ -15689,9 +18931,13 @@
 
     private void verifyResultsConvertUshort2Long2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -15705,28 +18951,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x8d7991ef64a95b83l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x64a95b83l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Ushort3Long3(inV, out);
@@ -15745,9 +18999,13 @@
 
     private void verifyResultsConvertUshort3Long3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -15761,28 +19019,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x8d799c90c3b12077l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xc3b12077l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Ushort4Long4(inV, out);
@@ -15801,9 +19067,13 @@
 
     private void verifyResultsConvertUshort4Long4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -15817,24 +19087,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntLong {
@@ -15843,7 +19121,7 @@
     }
 
     private void checkConvertInt2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xd74f538b8a45cb5dl, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x8a45cb5dl, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Int2Long2(inV, out);
@@ -15862,9 +19140,13 @@
 
     private void verifyResultsConvertInt2Long2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -15878,28 +19160,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xd74f5e2ce94d9051l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xe94d9051l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Int3Long3(inV, out);
@@ -15918,9 +19208,13 @@
 
     private void verifyResultsConvertInt3Long3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -15934,28 +19228,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xd74f68ce48555545l, true, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x48555545l, true, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Int4Long4(inV, out);
@@ -15974,9 +19276,13 @@
 
     private void verifyResultsConvertInt4Long4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -15990,24 +19296,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintLong {
@@ -16016,7 +19330,7 @@
     }
 
     private void checkConvertUint2Long2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xe71d0a7587b9ef60l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x87b9ef60l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertLong2Uint2Long2(inV, out);
@@ -16035,9 +19349,13 @@
 
     private void verifyResultsConvertUint2Long2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -16051,28 +19369,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Long3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xe71d1516e6c1b454l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xe6c1b454l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertLong3Uint3Long3(inV, out);
@@ -16091,9 +19417,13 @@
 
     private void verifyResultsConvertUint3Long3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -16107,28 +19437,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Long4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xe71d1fb845c97948l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x45c97948l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertLong4Uint4Long4(inV, out);
@@ -16147,9 +19485,13 @@
 
     private void verifyResultsConvertUint4Long4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -16163,24 +19505,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatUlong {
@@ -16189,7 +19539,7 @@
     }
 
     private void checkConvertFloat2Ulong2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xfb52b5394ec4cff7l, 0.0000000000000000000e+00, 1.8446742974197923840e+19);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4ec4cff7l, 0.0000000000000000000e+00, 0.0000000000000000000e+00);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Float2Ulong2(inV, out);
@@ -16208,9 +19558,13 @@
 
     private void verifyResultsConvertFloat2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -16224,28 +19578,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat3Ulong3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfb547e5444dff0d5l, 0.0000000000000000000e+00, 1.8446742974197923840e+19);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x44dff0d5l, 0.0000000000000000000e+00, 0.0000000000000000000e+00);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Float3Ulong3(inV, out);
@@ -16264,9 +19626,13 @@
 
     private void verifyResultsConvertFloat3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -16280,28 +19646,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertFloat4Ulong4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfb56476f3afb11b3l, 0.0000000000000000000e+00, 1.8446742974197923840e+19);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3afb11b3l, 0.0000000000000000000e+00, 0.0000000000000000000e+00);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Float4Ulong4(inV, out);
@@ -16320,9 +19694,13 @@
 
     private void verifyResultsConvertFloat4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -16336,24 +19714,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertFloat4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertFloat4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharUlong {
@@ -16362,7 +19748,7 @@
     }
 
     private void checkConvertChar2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x5862818b1fedf7b7l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x1fedf7b7l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Char2Ulong2(inV, out);
@@ -16381,9 +19767,13 @@
 
     private void verifyResultsConvertChar2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -16397,28 +19787,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x58644aa616091895l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x16091895l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Char3Ulong3(inV, out);
@@ -16437,9 +19835,13 @@
 
     private void verifyResultsConvertChar3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -16453,28 +19855,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertChar4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x586613c10c243973l, false, 7);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xc243973l, false, 7);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Char4Ulong4(inV, out);
@@ -16493,9 +19903,13 @@
 
     private void verifyResultsConvertChar4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -16509,24 +19923,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertChar4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertChar4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUlong {
@@ -16535,7 +19957,7 @@
     }
 
     private void checkConvertUchar2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x7d30a192bbc61162l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xbbc61162l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Uchar2Ulong2(inV, out);
@@ -16554,9 +19976,13 @@
 
     private void verifyResultsConvertUchar2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -16570,28 +19996,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x7d326aadb1e13240l, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xb1e13240l, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Uchar3Ulong3(inV, out);
@@ -16610,9 +20044,13 @@
 
     private void verifyResultsConvertUchar3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -16626,28 +20064,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUchar4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7d3433c8a7fc531el, false, 8);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xa7fc531el, false, 8);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Uchar4Ulong4(inV, out);
@@ -16666,9 +20112,13 @@
 
     private void verifyResultsConvertUchar4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         byte[] arrayInV = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (byte) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -16682,24 +20132,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUchar4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUchar4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortUlong {
@@ -16708,7 +20166,7 @@
     }
 
     private void checkConvertShort2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x94cab7c3ffc6f6a3l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xffc6f6a3l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Short2Ulong2(inV, out);
@@ -16727,9 +20185,13 @@
 
     private void verifyResultsConvertShort2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -16743,28 +20205,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x94cc80def5e21781l, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 3, 0xf5e21781l, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Short3Ulong3(inV, out);
@@ -16783,9 +20253,13 @@
 
     private void verifyResultsConvertShort3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -16799,28 +20273,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertShort4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x94ce49f9ebfd385fl, false, 15);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xebfd385fl, false, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Short4Ulong4(inV, out);
@@ -16839,9 +20321,13 @@
 
     private void verifyResultsConvertShort4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -16855,24 +20341,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertShort4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertShort4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUlong {
@@ -16881,7 +20375,7 @@
     }
 
     private void checkConvertUshort2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xc36a190b2d13465cl, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x2d13465cl, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Ushort2Ulong2(inV, out);
@@ -16900,9 +20394,13 @@
 
     private void verifyResultsConvertUshort2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -16916,28 +20414,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xc36be226232e673al, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x232e673al, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Ushort3Ulong3(inV, out);
@@ -16956,9 +20462,13 @@
 
     private void verifyResultsConvertUshort3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -16972,28 +20482,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUshort4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xc36dab4119498818l, false, 16);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x19498818l, false, 16);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Ushort4Ulong4(inV, out);
@@ -17012,9 +20530,13 @@
 
     private void verifyResultsConvertUshort4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         short[] arrayInV = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (short) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -17028,24 +20550,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUshort4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUshort4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntUlong {
@@ -17054,7 +20584,7 @@
     }
 
     private void checkConvertInt2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x2a53676074a824f6l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x74a824f6l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Int2Ulong2(inV, out);
@@ -17073,9 +20603,13 @@
 
     private void verifyResultsConvertInt2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -17089,28 +20623,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x2a55307b6ac345d4l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x6ac345d4l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Int3Ulong3(inV, out);
@@ -17129,9 +20671,13 @@
 
     private void verifyResultsConvertInt3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -17145,28 +20691,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertInt4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x2a56f99660de66b2l, false, 31);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x60de66b2l, false, 31);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Int4Ulong4(inV, out);
@@ -17185,9 +20739,13 @@
 
     private void verifyResultsConvertInt4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -17201,24 +20759,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertInt4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertInt4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUlong {
@@ -17227,7 +20793,7 @@
     }
 
     private void checkConvertUint2Ulong2() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xd1e120ae072a3177l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x72a3177l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.forEach_testConvertUlong2Uint2Ulong2(inV, out);
@@ -17246,9 +20812,13 @@
 
     private void verifyResultsConvertUint2Ulong2(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -17262,28 +20832,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint3Ulong3() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xd1e2e9c8fd455255l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xfd455255l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.forEach_testConvertUlong3Uint3Ulong3(inV, out);
@@ -17302,9 +20880,13 @@
 
     private void verifyResultsConvertUint3Ulong3(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -17318,28 +20900,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkConvertUint4Ulong4() {
-        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xd1e4b2e3f3607333l, false, 32);
+        Allocation inV = createRandomIntegerAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xf3607333l, false, 32);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.forEach_testConvertUlong4Uint4Ulong4(inV, out);
@@ -17358,9 +20948,13 @@
 
     private void verifyResultsConvertUint4Ulong4(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -17374,24 +20968,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkConvertUint4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkConvertUint4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testConvert() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.java
index 739b280e..24b71ec 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestCopysign extends RSBaseCompute {
 
     private ScriptC_TestCopysign script;
@@ -41,8 +43,8 @@
     }
 
     private void checkCopysignFloatFloatFloat() {
-        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4218ae4ccf086614l, false);
-        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd95dacad9d8d3ef5l, false);
+        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xcf086614l, false);
+        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9d8d3ef5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInSignValue(inSignValue);
@@ -63,11 +65,16 @@
 
     private void verifyResultsCopysignFloatFloatFloat(Allocation inMagnitudeValue, Allocation inSignValue, Allocation out, boolean relaxed) {
         float[] arrayInMagnitudeValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMagnitudeValue, (float) 42);
         inMagnitudeValue.copyTo(arrayInMagnitudeValue);
         float[] arrayInSignValue = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInSignValue, (float) 42);
         inSignValue.copyTo(arrayInSignValue);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMagnitudeValue: ");
-                    appendVariableToMessage(message, args.inMagnitudeValue);
-                    message.append("\n");
-                    message.append("Input inSignValue: ");
-                    appendVariableToMessage(message, args.inSignValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMagnitudeValue: ");
+                        appendVariableToMessage(message, args.inMagnitudeValue);
+                        message.append("\n");
+                        message.append("Input inSignValue: ");
+                        appendVariableToMessage(message, args.inSignValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCopysignFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCopysignFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCopysignFloat2Float2Float2() {
-        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8efe093722e9f786l, false);
-        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb33b4a8420cec72bl, false);
+        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x22e9f786l, false);
+        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x20cec72bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInSignValue(inSignValue);
@@ -129,11 +144,16 @@
 
     private void verifyResultsCopysignFloat2Float2Float2(Allocation inMagnitudeValue, Allocation inSignValue, Allocation out, boolean relaxed) {
         float[] arrayInMagnitudeValue = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMagnitudeValue, (float) 42);
         inMagnitudeValue.copyTo(arrayInMagnitudeValue);
         float[] arrayInSignValue = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInSignValue, (float) 42);
         inSignValue.copyTo(arrayInSignValue);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMagnitudeValue: ");
-                    appendVariableToMessage(message, args.inMagnitudeValue);
-                    message.append("\n");
-                    message.append("Input inSignValue: ");
-                    appendVariableToMessage(message, args.inSignValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMagnitudeValue: ");
+                        appendVariableToMessage(message, args.inMagnitudeValue);
+                        message.append("\n");
+                        message.append("Input inSignValue: ");
+                        appendVariableToMessage(message, args.inSignValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCopysignFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCopysignFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCopysignFloat3Float3Float3() {
-        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9a9db55e1b468741l, false);
-        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8ec9f3bdc39ab32cl, false);
+        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1b468741l, false);
+        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc39ab32cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInSignValue(inSignValue);
@@ -195,11 +223,16 @@
 
     private void verifyResultsCopysignFloat3Float3Float3(Allocation inMagnitudeValue, Allocation inSignValue, Allocation out, boolean relaxed) {
         float[] arrayInMagnitudeValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMagnitudeValue, (float) 42);
         inMagnitudeValue.copyTo(arrayInMagnitudeValue);
         float[] arrayInSignValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInSignValue, (float) 42);
         inSignValue.copyTo(arrayInSignValue);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMagnitudeValue: ");
-                    appendVariableToMessage(message, args.inMagnitudeValue);
-                    message.append("\n");
-                    message.append("Input inSignValue: ");
-                    appendVariableToMessage(message, args.inSignValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMagnitudeValue: ");
+                        appendVariableToMessage(message, args.inMagnitudeValue);
+                        message.append("\n");
+                        message.append("Input inSignValue: ");
+                        appendVariableToMessage(message, args.inSignValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCopysignFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCopysignFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCopysignFloat4Float4Float4() {
-        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xa63d618513a316fcl, false);
-        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6a589cf766669f2dl, false);
+        Allocation inMagnitudeValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x13a316fcl, false);
+        Allocation inSignValue = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x66669f2dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInSignValue(inSignValue);
@@ -261,11 +302,16 @@
 
     private void verifyResultsCopysignFloat4Float4Float4(Allocation inMagnitudeValue, Allocation inSignValue, Allocation out, boolean relaxed) {
         float[] arrayInMagnitudeValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMagnitudeValue, (float) 42);
         inMagnitudeValue.copyTo(arrayInMagnitudeValue);
         float[] arrayInSignValue = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInSignValue, (float) 42);
         inSignValue.copyTo(arrayInSignValue);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMagnitudeValue: ");
-                    appendVariableToMessage(message, args.inMagnitudeValue);
-                    message.append("\n");
-                    message.append("Input inSignValue: ");
-                    appendVariableToMessage(message, args.inSignValue);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMagnitudeValue: ");
+                        appendVariableToMessage(message, args.inMagnitudeValue);
+                        message.append("\n");
+                        message.append("Input inSignValue: ");
+                        appendVariableToMessage(message, args.inSignValue);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCopysignFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCopysignFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testCopysign() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.java
index 4a184e2..9c321da 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestCos extends RSBaseCompute {
 
     private ScriptC_TestCos script;
@@ -40,7 +42,7 @@
     }
 
     private void checkCosFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe70ae86bb80fef6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbb80fef6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testCosFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsCosFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCosFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCosFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCosFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4bb740670b2bbfaal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb2bbfaal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testCosFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsCosFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCosFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCosFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCosFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4bb909820146e088l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x146e088l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testCosFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsCosFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCosFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCosFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCosFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4bbad29cf7620166l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf7620166l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testCosFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsCosFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCosFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCosFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testCos() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.java
index c2ea5af..f089c5f 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestCosh extends RSBaseCompute {
 
     private ScriptC_TestCosh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkCoshFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xfb54622d108cfb40l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x108cfb40l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testCoshFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsCoshFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCoshFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCoshFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCoshFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4453ccc34ebcf224l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4ebcf224l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testCoshFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsCoshFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCoshFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCoshFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCoshFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x445595de44d81302l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x44d81302l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testCoshFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsCoshFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCoshFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCoshFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCoshFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x44575ef93af333e0l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3af333e0l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testCoshFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsCoshFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCoshFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCoshFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testCosh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.java
index 546f69d..11325c5 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestCospi extends RSBaseCompute {
 
     private ScriptC_TestCospi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkCospiFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x95c59d24cc7595d1l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xcc7595d1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testCospiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsCospiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCospiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCospiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCospiFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc026b40f81c1536dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x81c1536dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testCospiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsCospiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCospiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCospiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCospiFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc0287d2a77dc744bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x77dc744bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testCospiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsCospiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCospiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCospiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCospiFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc02a46456df79529l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6df79529l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testCospiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsCospiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkCospiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkCospiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testCospi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.java
index e1a86d6..61d0021 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestCross extends RSBaseCompute {
 
     private ScriptC_TestCross script;
@@ -41,8 +43,8 @@
     }
 
     private void checkCrossFloat3Float3Float3() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3505ebf7382f1ad4l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe9d27bf3de024b21l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x382f1ad4l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xde024b21l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -63,11 +65,16 @@
 
     private void verifyResultsCrossFloat3Float3Float3(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloatN args = new ArgumentsFloatNFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -92,37 +99,43 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkCrossFloat3Float3Float3" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkCrossFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkCrossFloat4Float4Float4() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x15fc58a5906fbeffl, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb336bd3cb0ddde5al, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x906fbeffl, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb0ddde5al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -143,11 +156,16 @@
 
     private void verifyResultsCrossFloat4Float4Float4(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloatN args = new ArgumentsFloatNFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -172,32 +190,38 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkCrossFloat4Float4Float4" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkCrossFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testCross() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.java
index 7957795..03eee53 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestDegrees extends RSBaseCompute {
 
     private ScriptC_TestDegrees script;
@@ -40,7 +42,7 @@
     }
 
     private void checkDegreesFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x606ed077c5dde30al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc5dde30al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testDegreesFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsDegreesFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkDegreesFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkDegreesFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkDegreesFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x803a665ae417141el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe417141el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testDegreesFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsDegreesFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkDegreesFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkDegreesFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkDegreesFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x803c2f75da3234fcl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xda3234fcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testDegreesFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsDegreesFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkDegreesFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkDegreesFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkDegreesFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x803df890d04d55dal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd04d55dal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testDegreesFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsDegreesFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkDegreesFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkDegreesFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testDegrees() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.java
index 5d8dde9..6051525 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestDistance extends RSBaseCompute {
 
     private ScriptC_TestDistance script;
@@ -41,8 +43,8 @@
     }
 
     private void checkDistanceFloatFloatFloat() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa481527082ced52al, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa38cb25366d69793l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x82ced52al, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x66d69793l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -63,11 +65,16 @@
 
     private void verifyResultsDistanceFloatFloatFloat(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
             // Create the appropriate sized arrays in args
@@ -83,26 +90,32 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inLeftVector: ");
-                appendVariableToMessage(message, arrayInLeftVector[i]);
-                message.append("\n");
-                message.append("Input inRightVector: ");
-                appendVariableToMessage(message, arrayInRightVector[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inLeftVector: ");
+                    appendVariableToMessage(message, arrayInLeftVector[i]);
+                    message.append("\n");
+                    message.append("Input inRightVector: ");
+                    appendVariableToMessage(message, arrayInRightVector[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDistanceFloatFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDistanceFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloatNFloat {
@@ -112,8 +125,8 @@
     }
 
     private void checkDistanceFloat2Float2Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xbf71d23b554dab2el, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x29f22964c2248a3fl, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x554dab2el, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc2248a3fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -134,11 +147,16 @@
 
     private void verifyResultsDistanceFloat2Float2Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -160,35 +178,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDistanceFloat2Float2Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDistanceFloat2Float2Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkDistanceFloat3Float3Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8e1af7b976ec5f7cl, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe05b759467ccd359l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x76ec5f7cl, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x67ccd359l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -209,11 +233,16 @@
 
     private void verifyResultsDistanceFloat3Float3Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -235,35 +264,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDistanceFloat3Float3Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDistanceFloat3Float3Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkDistanceFloat4Float4Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5cc41d37988b13cal, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x96c4c1c40d751c73l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x988b13cal, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd751c73l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -284,11 +319,16 @@
 
     private void verifyResultsDistanceFloat4Float4Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -310,30 +350,36 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDistanceFloat4Float4Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDistanceFloat4Float4Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testDistance() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.java
index ff0cd13..3898003 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestDot extends RSBaseCompute {
 
     private ScriptC_TestDot script;
@@ -41,8 +43,8 @@
     }
 
     private void checkDotFloatFloatFloat() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x38fe5ebdf7ff2d3el, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x948dc35615f562efl, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf7ff2d3el, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x15f562efl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -63,11 +65,16 @@
 
     private void verifyResultsDotFloatFloatFloat(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
             // Create the appropriate sized arrays in args
@@ -83,26 +90,32 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inLeftVector: ");
-                appendVariableToMessage(message, arrayInLeftVector[i]);
-                message.append("\n");
-                message.append("Input inRightVector: ");
-                appendVariableToMessage(message, arrayInRightVector[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inLeftVector: ");
+                    appendVariableToMessage(message, arrayInLeftVector[i]);
+                    message.append("\n");
+                    message.append("Input inRightVector: ");
+                    appendVariableToMessage(message, arrayInRightVector[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDotFloatFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDotFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloatNFloat {
@@ -112,8 +125,8 @@
     }
 
     private void checkDotFloat2Float2Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3a9fadaebf79d3a2l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdaa605c7978f55bbl, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xbf79d3a2l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x978f55bbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -134,11 +147,16 @@
 
     private void verifyResultsDotFloat2Float2Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -160,35 +178,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDotFloat2Float2Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDotFloat2Float2Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkDotFloat3Float3Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x948d32ce11887f0l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x910f51f73d379ed5l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe11887f0l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3d379ed5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -209,11 +233,16 @@
 
     private void verifyResultsDotFloat3Float3Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -235,35 +264,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDotFloat3Float3Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDotFloat3Float3Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkDotFloat4Float4Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd7f1f8ab02b73c3el, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x47789e26e2dfe7efl, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2b73c3el, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe2dfe7efl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -284,11 +319,16 @@
 
     private void verifyResultsDotFloat4Float4Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -310,30 +350,36 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkDotFloat4Float4Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkDotFloat4Float4Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testDot() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.java
index 5313413..bc3a073 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestErf extends RSBaseCompute {
 
     private ScriptC_TestErf script;
@@ -40,7 +42,7 @@
     }
 
     private void checkErfFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xccfbfd30a3951fb8l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa3951fb8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testErfFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsErfFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkErfFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x87e26994448c58dcl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x448c58dcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testErfFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsErfFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkErfFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x87e432af3aa779bal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3aa779bal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testErfFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsErfFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkErfFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x87e5fbca30c29a98l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x30c29a98l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testErfFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsErfFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testErf() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.java
index 0a9d670..856bcf4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestErfc extends RSBaseCompute {
 
     private ScriptC_TestErfc script;
@@ -40,7 +42,7 @@
     }
 
     private void checkErfcFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x40344e4f0dfa008fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdfa008fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testErfcFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsErfcFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfcFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfcFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkErfcFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb9a44e42b72849bbl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb72849bbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testErfcFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsErfcFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfcFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfcFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkErfcFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xb9a6175dad436a99l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xad436a99l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testErfcFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsErfcFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfcFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfcFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkErfcFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb9a7e078a35e8b77l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xa35e8b77l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testErfcFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsErfcFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkErfcFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkErfcFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testErfc() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.java
index 2f03d77..8e73056 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestExp extends RSBaseCompute {
 
     private ScriptC_TestExp script;
@@ -40,7 +42,7 @@
     }
 
     private void checkExpFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x45e6c49035f888fcl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x35f888fcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testExpFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsExpFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExpFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdf9c6adc948fa500l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x948fa500l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testExpFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsExpFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExpFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdf9e33f78aaac5del, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8aaac5del, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testExpFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsExpFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExpFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdf9ffd1280c5e6bcl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x80c5e6bcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testExpFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsExpFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testExp() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.java
index 11668c7..fd01beb 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestExp10 extends RSBaseCompute {
 
     private ScriptC_TestExp10 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkExp10FloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc5df97aec123e2edl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc123e2edl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testExp10FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsExp10FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp10FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp10FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExp10Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2bc94277c0ac42a9l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc0ac42a9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testExp10Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsExp10Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp10Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp10Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExp10Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2bcb0b92b6c76387l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xb6c76387l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testExp10Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsExp10Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp10Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp10Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExp10Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2bccd4adace28465l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xace28465l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testExp10Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsExp10Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp10Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp10Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testExp10() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.java
index d5696ec..8d1c698 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestExp2 extends RSBaseCompute {
 
     private ScriptC_TestExp2 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkExp2FloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x58195894b8b72a10l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb8b72a10l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testExp2FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsExp2FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp2FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp2FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExp2Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4eeb7f70e7690e74l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe7690e74l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testExp2Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsExp2Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExp2Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4eed488bdd842f52l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdd842f52l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testExp2Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsExp2Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp2Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp2Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExp2Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4eef11a6d39f5030l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd39f5030l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testExp2Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsExp2Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExp2Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExp2Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testExp2() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.java
index 93596f7..6a1609f 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestExpm1 extends RSBaseCompute {
 
     private ScriptC_TestExpm1 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkExpm1FloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xea420692a183a9e4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa183a9e4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testExpm1FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsExpm1FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpm1FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpm1FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExpm1Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf6bc2e57547050a8l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x547050a8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testExpm1Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsExpm1Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpm1Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpm1Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExpm1Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf6bdf7724a8b7186l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4a8b7186l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testExpm1Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsExpm1Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpm1Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpm1Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkExpm1Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf6bfc08d40a69264l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x40a69264l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testExpm1Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsExpm1Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkExpm1Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkExpm1Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testExpm1() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.java
index 38c5321..9303e7e 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFabs extends RSBaseCompute {
 
     private ScriptC_TestFabs script;
@@ -40,7 +42,7 @@
     }
 
     private void checkFabsFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd84cf8f27f929ae9l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7f929ae9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFabsFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsFabsFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFabsFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFabsFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFabsFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x43ccc4c22e5b1dc5l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2e5b1dc5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testFabsFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsFabsFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFabsFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFabsFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFabsFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x43ce8ddd24763ea3l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x24763ea3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testFabsFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsFabsFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFabsFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFabsFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFabsFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x43d056f81a915f81l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1a915f81l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testFabsFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsFabsFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFabsFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFabsFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFabs() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.java
index a1181ba..e10d5df 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFastDistance extends RSBaseCompute {
 
     private ScriptC_TestFastDistance script;
@@ -41,8 +43,8 @@
     }
 
     private void checkFastDistanceFloatFloatFloat() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xeb32e5abb9b28b1al, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x83606d459f1626e3l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb9b28b1al, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9f1626e3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -63,11 +65,16 @@
 
     private void verifyResultsFastDistanceFloatFloatFloat(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
             // Create the appropriate sized arrays in args
@@ -83,26 +90,32 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inLeftVector: ");
-                appendVariableToMessage(message, arrayInLeftVector[i]);
-                message.append("\n");
-                message.append("Input inRightVector: ");
-                appendVariableToMessage(message, arrayInRightVector[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inLeftVector: ");
+                    appendVariableToMessage(message, arrayInLeftVector[i]);
+                    message.append("\n");
+                    message.append("Input inRightVector: ");
+                    appendVariableToMessage(message, arrayInRightVector[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastDistanceFloatFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastDistanceFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloatNFloat {
@@ -112,8 +125,8 @@
     }
 
     private void checkFastDistanceFloat2Float2Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x580238eac7fabd9el, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xca3368dd0536a30fl, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc7fabd9el, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x536a30fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -134,11 +147,16 @@
 
     private void verifyResultsFastDistanceFloat2Float2Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -160,35 +178,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastDistanceFloat2Float2Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastDistanceFloat2Float2Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFastDistanceFloat3Float3Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x26ab5e68e99971ecl, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x809cb50caadeec29l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe99971ecl, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xaadeec29l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -209,11 +233,16 @@
 
     private void verifyResultsFastDistanceFloat3Float3Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -235,35 +264,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastDistanceFloat3Float3Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastDistanceFloat3Float3Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFastDistanceFloat4Float4Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf55483e70b38263al, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3706013c50873543l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb38263al, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x50873543l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -284,11 +319,16 @@
 
     private void verifyResultsFastDistanceFloat4Float4Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -310,30 +350,36 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastDistanceFloat4Float4Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastDistanceFloat4Float4Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFastDistance() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.java
index 26c800b..b47adc9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFastLength extends RSBaseCompute {
 
     private ScriptC_TestFastLength script;
@@ -40,7 +42,7 @@
     }
 
     private void checkFastLengthFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xebac65aea2660e8fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa2660e8fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFastLengthFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsFastLengthFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloat args = new ArgumentsFloatFloat();
             // Create the appropriate sized arrays in args
@@ -76,23 +82,29 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inV: ");
-                appendVariableToMessage(message, arrayInV[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inV: ");
+                    appendVariableToMessage(message, arrayInV[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastLengthFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastLengthFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloat {
@@ -101,7 +113,7 @@
     }
 
     private void checkFastLengthFloat2Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x95f43650f85e6cadl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf85e6cadl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFastLengthFloat2Float(inV, out);
@@ -120,9 +132,13 @@
 
     private void verifyResultsFastLengthFloat2Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -140,29 +156,35 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastLengthFloat2Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastLengthFloat2Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFastLengthFloat3Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x95f440f25764fb0el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5764fb0el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFastLengthFloat3Float(inV, out);
@@ -181,9 +203,13 @@
 
     private void verifyResultsFastLengthFloat3Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -201,29 +227,35 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastLengthFloat3Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastLengthFloat3Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFastLengthFloat4Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x95f44b93b66b896fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb66b896fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFastLengthFloat4Float(inV, out);
@@ -242,9 +274,13 @@
 
     private void verifyResultsFastLengthFloat4Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -262,25 +298,31 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastLengthFloat4Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastLengthFloat4Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFastLength() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.java
index 211a6e6..2c3ac1a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFastNormalize extends RSBaseCompute {
 
     private ScriptC_TestFastNormalize script;
@@ -40,7 +42,7 @@
     }
 
     private void checkFastNormalizeFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdcfb9adc9f8882ecl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9f8882ecl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFastNormalizeFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsFastNormalizeFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloat args = new ArgumentsFloatFloat();
             // Create the appropriate sized arrays in args
@@ -76,23 +82,29 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inV: ");
-                appendVariableToMessage(message, arrayInV[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inV: ");
+                    appendVariableToMessage(message, arrayInV[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkFastNormalizeFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastNormalizeFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloatN {
@@ -101,7 +113,7 @@
     }
 
     private void checkFastNormalizeFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x151c38c30573db70l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x573db70l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testFastNormalizeFloat2Float2(inV, out);
@@ -120,9 +132,13 @@
 
     private void verifyResultsFastNormalizeFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -143,31 +159,37 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 2 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkFastNormalizeFloat2Float2" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastNormalizeFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFastNormalizeFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x151e01ddfb8efc4el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfb8efc4el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testFastNormalizeFloat3Float3(inV, out);
@@ -186,9 +208,13 @@
 
     private void verifyResultsFastNormalizeFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -209,31 +235,37 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkFastNormalizeFloat3Float3" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastNormalizeFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFastNormalizeFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x151fcaf8f1aa1d2cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf1aa1d2cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testFastNormalizeFloat4Float4(inV, out);
@@ -252,9 +284,13 @@
 
     private void verifyResultsFastNormalizeFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -275,27 +311,33 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkFastNormalizeFloat4Float4" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkFastNormalizeFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFastNormalize() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.java
index 7d053fa..c817296 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFdim extends RSBaseCompute {
 
     private ScriptC_TestFdim script;
@@ -41,8 +43,8 @@
     }
 
     private void checkFdimFloatFloatFloat() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf5dd38fbc3a47366l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf5dd38fbc3a47367l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc3a47366l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc3a47367l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -63,11 +65,16 @@
 
     private void verifyResultsFdimFloatFloatFloat(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFdimFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFdimFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFdimFloat2Float2Float2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xca6a96c16f167f4cl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xca6a96c16f167f4dl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6f167f4cl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6f167f4dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -129,11 +144,16 @@
 
     private void verifyResultsFdimFloat2Float2Float2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFdimFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFdimFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFdimFloat3Float3Float3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1ecf74e170f480edl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1ecf74e170f480eel, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x70f480edl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x70f480eel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -195,11 +223,16 @@
 
     private void verifyResultsFdimFloat3Float3Float3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFdimFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFdimFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFdimFloat4Float4Float4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7334530172d2828el, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7334530172d2828fl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x72d2828el, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x72d2828fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -261,11 +302,16 @@
 
     private void verifyResultsFdimFloat4Float4Float4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFdimFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFdimFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFdim() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.java
index 3b17241..0ebc227 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFloor extends RSBaseCompute {
 
     private ScriptC_TestFloor script;
@@ -40,7 +42,7 @@
     }
 
     private void checkFloorFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3b3c924b95badeadl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x95badeadl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFloorFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsFloorFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFloorFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFloorFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFloorFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd8575933372c9069l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x372c9069l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testFloorFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsFloorFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFloorFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFloorFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFloorFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd859224e2d47b147l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2d47b147l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testFloorFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsFloorFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFloorFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFloorFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFloorFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd85aeb692362d225l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2362d225l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testFloorFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsFloorFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFloorFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFloorFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFloor() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.java
index 24923a3..f5f30b3 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFma extends RSBaseCompute {
 
     private ScriptC_TestFma script;
@@ -42,9 +44,9 @@
     }
 
     private void checkFmaFloatFloatFloatFloat() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x716293a685c419bel, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x716293a685c419bfl, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4a235a109d441b0el, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x85c419bel, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x85c419bfl, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9d441b0el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -67,13 +69,19 @@
 
     private void verifyResultsFmaFloatFloatFloatFloat(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -90,36 +98,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaFloatFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaFloatFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaFloat2Float2Float2Float2() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1bb42af9dda15056l, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1bb42af9dda15057l, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x667fbd778aeda396l, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdda15056l, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdda15057l, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8aeda396l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -142,13 +158,19 @@
 
     private void verifyResultsFmaFloat2Float2Float2Float2(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -165,36 +187,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaFloat2Float2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaFloat2Float2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaFloat3Float3Float3Float3() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x19169f2d349697b2l, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x19169f2d349697b3l, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3a56bf5454d5ec8al, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x349697b2l, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x349697b3l, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x54d5ec8al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -217,13 +247,19 @@
 
     private void verifyResultsFmaFloat3Float3Float3Float3(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -240,36 +276,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaFloat3Float3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaFloat3Float3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaFloat4Float4Float4Float4() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x167913608b8bdf0el, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x167913608b8bdf0fl, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe2dc1311ebe357el, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8b8bdf0el, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8b8bdf0fl, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1ebe357el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -292,13 +336,19 @@
 
     private void verifyResultsFmaFloat4Float4Float4Float4(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -315,30 +365,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaFloat4Float4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaFloat4Float4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFma() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.java
index 046b564..56ea3d9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFmax extends RSBaseCompute {
 
     private ScriptC_TestFmax script;
@@ -41,8 +43,8 @@
     }
 
     private void checkFmaxFloatFloatFloat() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe6ec75a46e6fdd7al, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe6ec75a46e6fdd7bl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6e6fdd7al, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6e6fdd7bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -63,11 +65,16 @@
 
     private void verifyResultsFmaxFloatFloatFloat(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaxFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaxFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaxFloat2Float2Float2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xa99eaa6dd458a0c8l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xa99eaa6dd458a0c9l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd458a0c8l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd458a0c9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -129,11 +144,16 @@
 
     private void verifyResultsFmaxFloat2Float2Float2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaxFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaxFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaxFloat3Float3Float3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfe03888dd636a269l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfe03888dd636a26al, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd636a269l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd636a26al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -195,11 +223,16 @@
 
     private void verifyResultsFmaxFloat3Float3Float3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaxFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaxFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaxFloat4Float4Float4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x526866add814a40al, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x526866add814a40bl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd814a40al, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd814a40bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -261,11 +302,16 @@
 
     private void verifyResultsFmaxFloat4Float4Float4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,32 +327,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaxFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaxFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaxFloat2FloatFloat2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xce5ddc06dc631102l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xce5ddc06dc631103l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdc631102l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdc631103l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -327,11 +381,16 @@
 
     private void verifyResultsFmaxFloat2FloatFloat2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -347,32 +406,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaxFloat2FloatFloat2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaxFloat2FloatFloat2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaxFloat3FloatFloat3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x23ad8f1ecace055el, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x23ad8f1ecace055fl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xcace055el, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xcace055fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -393,11 +460,16 @@
 
     private void verifyResultsFmaxFloat3FloatFloat3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -413,32 +485,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaxFloat3FloatFloat3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaxFloat3FloatFloat3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmaxFloat4FloatFloat4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x78fd4236b938f9bal, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x78fd4236b938f9bbl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb938f9bal, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb938f9bbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -459,11 +539,16 @@
 
     private void verifyResultsFmaxFloat4FloatFloat4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -479,27 +564,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmaxFloat4FloatFloat4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmaxFloat4FloatFloat4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFmax() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.java
index 2b05df4..c96daa4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFmin extends RSBaseCompute {
 
     private ScriptC_TestFmin script;
@@ -41,8 +43,8 @@
     }
 
     private void checkFminFloatFloatFloat() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7b46a8451d7b1058l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7b46a8451d7b1059l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x1d7b1058l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x1d7b1059l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -63,11 +65,16 @@
 
     private void verifyResultsFminFloatFloatFloat(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFminFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFminFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFminFloat2Float2Float2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x12b850a9e75faa42l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x12b850a9e75faa43l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe75faa42l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe75faa43l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -129,11 +144,16 @@
 
     private void verifyResultsFminFloat2Float2Float2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFminFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFminFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFminFloat3Float3Float3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x671d2ec9e93dabe3l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x671d2ec9e93dabe4l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe93dabe3l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe93dabe4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -195,11 +223,16 @@
 
     private void verifyResultsFminFloat3Float3Float3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFminFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFminFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFminFloat4Float4Float4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xbb820ce9eb1bad84l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xbb820ce9eb1bad85l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xeb1bad84l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xeb1bad85l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -261,11 +302,16 @@
 
     private void verifyResultsFminFloat4Float4Float4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,32 +327,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFminFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFminFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFminFloat2FloatFloat2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4dd5869724457670l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4dd5869724457671l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x24457670l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x24457671l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -327,11 +381,16 @@
 
     private void verifyResultsFminFloat2FloatFloat2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -347,32 +406,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFminFloat2FloatFloat2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFminFloat2FloatFloat2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFminFloat3FloatFloat3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xa32539af12b06accl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa32539af12b06acdl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x12b06accl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x12b06acdl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -393,11 +460,16 @@
 
     private void verifyResultsFminFloat3FloatFloat3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -413,32 +485,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFminFloat3FloatFloat3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFminFloat3FloatFloat3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFminFloat4FloatFloat4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf874ecc7011b5f28l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf874ecc7011b5f29l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x11b5f28l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x11b5f29l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -459,11 +539,16 @@
 
     private void verifyResultsFminFloat4FloatFloat4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -479,27 +564,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFminFloat4FloatFloat4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFminFloat4FloatFloat4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFmin() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.java
index 72beaa4..442cad9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFmod extends RSBaseCompute {
 
     private ScriptC_TestFmod script;
@@ -41,8 +43,8 @@
     }
 
     private void checkFmodFloatFloatFloat() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xed70b65ddcc790e8l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xeff8dc0a04b044e1l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdcc790e8l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4b044e1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -63,11 +65,16 @@
 
     private void verifyResultsFmodFloatFloatFloat(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmodFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmodFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmodFloat2Float2Float2() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x84bcef91ebd95a82l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb582050adc295e2bl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xebd95a82l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdc295e2bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -129,11 +144,16 @@
 
     private void verifyResultsFmodFloat2Float2Float2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmodFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmodFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmodFloat3Float3Float3() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x604b98cb8ea54683l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7ee64653af04f164l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8ea54683l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xaf04f164l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -195,11 +223,16 @@
 
     private void verifyResultsFmodFloat3Float3Float3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmodFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmodFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFmodFloat4Float4Float4() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3bda420531713284l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x484a879c81e0849dl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x31713284l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x81e0849dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -261,11 +302,16 @@
 
     private void verifyResultsFmodFloat4Float4Float4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFmodFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFmodFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFmod() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.java
index ce7a671..11ad1be 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFract extends RSBaseCompute {
 
     private ScriptC_TestFract script;
@@ -41,7 +43,7 @@
     }
 
     private void checkFractFloatFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x57d8e6573c675d27l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3c675d27l, false);
         try {
             Allocation outFloor = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -64,11 +66,16 @@
 
     private void verifyResultsFractFloatFloatFloat(Allocation inV, Allocation outFloor, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutFloor = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOutFloor, (float) 42);
         outFloor.copyTo(arrayOutFloor);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -86,37 +93,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outFloor: ");
-                    appendVariableToMessage(message, args.outFloor);
-                    message.append("\n");
-                    message.append("Actual   output outFloor: ");
-                    appendVariableToMessage(message, arrayOutFloor[i * 1 + j]);
-                    if (!args.outFloor.couldBe(arrayOutFloor[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outFloor: ");
+                        appendVariableToMessage(message, args.outFloor);
+                        message.append("\n");
+                        message.append("Actual   output outFloor: ");
+                        appendVariableToMessage(message, arrayOutFloor[i * 1 + j]);
+                        if (!args.outFloor.couldBe(arrayOutFloor[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFractFloat2Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd1dbe683cdf8f525l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xcdf8f525l, false);
         try {
             Allocation outFloor = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -139,11 +154,16 @@
 
     private void verifyResultsFractFloat2Float2Float2(Allocation inV, Allocation outFloor, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutFloor = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOutFloor, (float) 42);
         outFloor.copyTo(arrayOutFloor);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -161,37 +181,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outFloor: ");
-                    appendVariableToMessage(message, args.outFloor);
-                    message.append("\n");
-                    message.append("Actual   output outFloor: ");
-                    appendVariableToMessage(message, arrayOutFloor[i * 2 + j]);
-                    if (!args.outFloor.couldBe(arrayOutFloor[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outFloor: ");
+                        appendVariableToMessage(message, args.outFloor);
+                        message.append("\n");
+                        message.append("Actual   output outFloor: ");
+                        appendVariableToMessage(message, arrayOutFloor[i * 2 + j]);
+                        if (!args.outFloor.couldBe(arrayOutFloor[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFractFloat3Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2640c4a3cfd6f6c6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xcfd6f6c6l, false);
         try {
             Allocation outFloor = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -214,11 +242,16 @@
 
     private void verifyResultsFractFloat3Float3Float3(Allocation inV, Allocation outFloor, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutFloor = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutFloor, (float) 42);
         outFloor.copyTo(arrayOutFloor);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -236,37 +269,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outFloor: ");
-                    appendVariableToMessage(message, args.outFloor);
-                    message.append("\n");
-                    message.append("Actual   output outFloor: ");
-                    appendVariableToMessage(message, arrayOutFloor[i * 4 + j]);
-                    if (!args.outFloor.couldBe(arrayOutFloor[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outFloor: ");
+                        appendVariableToMessage(message, args.outFloor);
+                        message.append("\n");
+                        message.append("Actual   output outFloor: ");
+                        appendVariableToMessage(message, arrayOutFloor[i * 4 + j]);
+                        if (!args.outFloor.couldBe(arrayOutFloor[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFractFloat4Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7aa5a2c3d1b4f867l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd1b4f867l, false);
         try {
             Allocation outFloor = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -289,11 +330,16 @@
 
     private void verifyResultsFractFloat4Float4Float4(Allocation inV, Allocation outFloor, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutFloor = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutFloor, (float) 42);
         outFloor.copyTo(arrayOutFloor);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -311,33 +357,41 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outFloor: ");
-                    appendVariableToMessage(message, args.outFloor);
-                    message.append("\n");
-                    message.append("Actual   output outFloor: ");
-                    appendVariableToMessage(message, arrayOutFloor[i * 4 + j]);
-                    if (!args.outFloor.couldBe(arrayOutFloor[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outFloor: ");
+                        appendVariableToMessage(message, args.outFloor);
+                        message.append("\n");
+                        message.append("Actual   output outFloor: ");
+                        appendVariableToMessage(message, arrayOutFloor[i * 4 + j]);
+                        if (!args.outFloor.couldBe(arrayOutFloor[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatFloat {
@@ -346,7 +400,7 @@
     }
 
     private void checkFractFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf559208b9db2cad3l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9db2cad3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testFractFloatFloat(inV, out);
@@ -365,9 +419,13 @@
 
     private void verifyResultsFractFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -382,28 +440,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFractFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1096c5acc4d52edfl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc4d52edfl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testFractFloat2Float2(inV, out);
@@ -422,9 +488,13 @@
 
     private void verifyResultsFractFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -439,28 +509,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFractFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x10988ec7baf04fbdl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xbaf04fbdl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testFractFloat3Float3(inV, out);
@@ -479,9 +557,13 @@
 
     private void verifyResultsFractFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -496,28 +578,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFractFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x109a57e2b10b709bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb10b709bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testFractFloat4Float4(inV, out);
@@ -536,9 +626,13 @@
 
     private void verifyResultsFractFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -553,24 +647,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFractFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFractFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFract() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.java
index 6d47860..72de03e 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestFrexp extends RSBaseCompute {
 
     private ScriptC_TestFrexp script;
@@ -41,7 +43,7 @@
     }
 
     private void checkFrexpFloatIntFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x57ae9fe07384e56dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7384e56dl, false);
         try {
             Allocation outExponent = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -64,11 +66,16 @@
 
     private void verifyResultsFrexpFloatIntFloat(Allocation inV, Allocation outExponent, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutExponent = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOutExponent, (int) 42);
         outExponent.copyTo(arrayOutExponent);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -86,37 +93,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outExponent: ");
-                    appendVariableToMessage(message, args.outExponent);
-                    message.append("\n");
-                    message.append("Actual   output outExponent: ");
-                    appendVariableToMessage(message, arrayOutExponent[i * 1 + j]);
-                    if (args.outExponent != arrayOutExponent[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outExponent: ");
+                        appendVariableToMessage(message, args.outExponent);
+                        message.append("\n");
+                        message.append("Actual   output outExponent: ");
+                        appendVariableToMessage(message, arrayOutExponent[i * 1 + j]);
+                        if (args.outExponent != arrayOutExponent[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFrexpFloatIntFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFrexpFloatIntFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFrexpFloat2Int2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x544e0a688fe7701l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x88fe7701l, false);
         try {
             Allocation outExponent = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -139,11 +154,16 @@
 
     private void verifyResultsFrexpFloat2Int2Float2(Allocation inV, Allocation outExponent, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutExponent = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOutExponent, (int) 42);
         outExponent.copyTo(arrayOutExponent);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -161,37 +181,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outExponent: ");
-                    appendVariableToMessage(message, args.outExponent);
-                    message.append("\n");
-                    message.append("Actual   output outExponent: ");
-                    appendVariableToMessage(message, arrayOutExponent[i * 2 + j]);
-                    if (args.outExponent != arrayOutExponent[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outExponent: ");
+                        appendVariableToMessage(message, args.outExponent);
+                        message.append("\n");
+                        message.append("Actual   output outExponent: ");
+                        appendVariableToMessage(message, arrayOutExponent[i * 2 + j]);
+                        if (args.outExponent != arrayOutExponent[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFrexpFloat2Int2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFrexpFloat2Int2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFrexpFloat3Int3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2afb1f097eb0e3bal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7eb0e3bal, false);
         try {
             Allocation outExponent = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -214,11 +242,16 @@
 
     private void verifyResultsFrexpFloat3Int3Float3(Allocation inV, Allocation outExponent, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutExponent = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOutExponent, (int) 42);
         outExponent.copyTo(arrayOutExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -236,37 +269,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outExponent: ");
-                    appendVariableToMessage(message, args.outExponent);
-                    message.append("\n");
-                    message.append("Actual   output outExponent: ");
-                    appendVariableToMessage(message, arrayOutExponent[i * 4 + j]);
-                    if (args.outExponent != arrayOutExponent[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outExponent: ");
+                        appendVariableToMessage(message, args.outExponent);
+                        message.append("\n");
+                        message.append("Actual   output outExponent: ");
+                        appendVariableToMessage(message, arrayOutExponent[i * 4 + j]);
+                        if (args.outExponent != arrayOutExponent[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFrexpFloat3Int3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFrexpFloat3Int3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkFrexpFloat4Int4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x50b15d6c74635073l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x74635073l, false);
         try {
             Allocation outExponent = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -289,11 +330,16 @@
 
     private void verifyResultsFrexpFloat4Int4Float4(Allocation inV, Allocation outExponent, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutExponent = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOutExponent, (int) 42);
         outExponent.copyTo(arrayOutExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -311,33 +357,41 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outExponent: ");
-                    appendVariableToMessage(message, args.outExponent);
-                    message.append("\n");
-                    message.append("Actual   output outExponent: ");
-                    appendVariableToMessage(message, arrayOutExponent[i * 4 + j]);
-                    if (args.outExponent != arrayOutExponent[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outExponent: ");
+                        appendVariableToMessage(message, args.outExponent);
+                        message.append("\n");
+                        message.append("Actual   output outExponent: ");
+                        appendVariableToMessage(message, arrayOutExponent[i * 4 + j]);
+                        if (args.outExponent != arrayOutExponent[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkFrexpFloat4Int4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkFrexpFloat4Int4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testFrexp() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.java
index 854d432..4793b6d 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestHalfRecip extends RSBaseCompute {
 
     private ScriptC_TestHalfRecip script;
@@ -40,7 +42,7 @@
     }
 
     private void checkHalfRecipFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x854e263130d5b3dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x130d5b3dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testHalfRecipFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsHalfRecipFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRecipFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRecipFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfRecipFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2cf1d2db5ff23c79l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x5ff23c79l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testHalfRecipFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsHalfRecipFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRecipFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRecipFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfRecipFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2cf39bf6560d5d57l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x560d5d57l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testHalfRecipFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsHalfRecipFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRecipFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRecipFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfRecipFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2cf565114c287e35l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4c287e35l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testHalfRecipFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsHalfRecipFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRecipFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRecipFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testHalfRecip() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.java
index 68746e7..efe890a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestHalfRsqrt extends RSBaseCompute {
 
     private ScriptC_TestHalfRsqrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkHalfRsqrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xad5e977ec00f0bf2l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc00f0bf2l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testHalfRsqrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsHalfRsqrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRsqrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRsqrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfRsqrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x300ee7bff12787c6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf12787c6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testHalfRsqrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsHalfRsqrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRsqrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRsqrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfRsqrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3010b0dae742a8a4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe742a8a4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testHalfRsqrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsHalfRsqrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRsqrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRsqrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfRsqrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x301279f5dd5dc982l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdd5dc982l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testHalfRsqrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsHalfRsqrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfRsqrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfRsqrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testHalfRsqrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.java
index a924937..9cf3ff2 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestHalfSqrt extends RSBaseCompute {
 
     private ScriptC_TestHalfSqrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkHalfSqrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x8be766c7a15db5fal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa15db5fal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testHalfSqrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsHalfSqrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfSqrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfSqrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfSqrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7a300d2342519b8el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x42519b8el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testHalfSqrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsHalfSqrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfSqrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfSqrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfSqrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7a31d63e386cbc6cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x386cbc6cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testHalfSqrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsHalfSqrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfSqrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfSqrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHalfSqrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7a339f592e87dd4al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2e87dd4al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testHalfSqrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsHalfSqrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHalfSqrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHalfSqrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testHalfSqrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.java
index d2231b2..8f2e5dd 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestHypot extends RSBaseCompute {
 
     private ScriptC_TestHypot script;
@@ -41,8 +43,8 @@
     }
 
     private void checkHypotFloatFloatFloat() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7deb65e7738c74c4l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7deb65e7738c74c5l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x738c74c4l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x738c74c5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -63,11 +65,16 @@
 
     private void verifyResultsHypotFloatFloatFloat(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHypotFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHypotFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHypotFloat2Float2Float2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x14f3c91a62f71c46l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x14f3c91a62f71c47l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x62f71c46l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x62f71c47l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -129,11 +144,16 @@
 
     private void verifyResultsHypotFloat2Float2Float2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHypotFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHypotFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHypotFloat3Float3Float3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6958a73a64d51de7l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6958a73a64d51de8l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x64d51de7l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x64d51de8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -195,11 +223,16 @@
 
     private void verifyResultsHypotFloat3Float3Float3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHypotFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHypotFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkHypotFloat4Float4Float4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xbdbd855a66b31f88l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xbdbd855a66b31f89l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x66b31f88l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x66b31f89l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -261,11 +302,16 @@
 
     private void verifyResultsHypotFloat4Float4Float4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkHypotFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkHypotFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testHypot() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.java
index dddddf5..8a24f7a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestIlogb extends RSBaseCompute {
 
     private ScriptC_TestIlogb script;
@@ -40,7 +42,7 @@
     }
 
     private void checkIlogbFloatInt() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6103ca4b5664967bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x5664967bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
             script.forEach_testIlogbFloatInt(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsIlogbFloatInt(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -73,23 +79,31 @@
                 String errorMessage = CoreMathVerifier.verifyIlogb(args);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkIlogbFloatInt" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkIlogbFloatInt" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkIlogbFloat2Int2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb460143cb6f32a61l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb6f32a61l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.forEach_testIlogbFloat2Int2(inV, out);
@@ -108,9 +122,13 @@
 
     private void verifyResultsIlogbFloat2Int2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -122,23 +140,31 @@
                 String errorMessage = CoreMathVerifier.verifyIlogb(args);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkIlogbFloat2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkIlogbFloat2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkIlogbFloat3Int3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xb460147c009b3a97l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9b3a97l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.forEach_testIlogbFloat3Int3(inV, out);
@@ -157,9 +183,13 @@
 
     private void verifyResultsIlogbFloat3Int3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -171,23 +201,31 @@
                 String errorMessage = CoreMathVerifier.verifyIlogb(args);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkIlogbFloat3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkIlogbFloat3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkIlogbFloat4Int4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb46014bb4a434acdl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4a434acdl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.forEach_testIlogbFloat4Int4(inV, out);
@@ -206,9 +244,13 @@
 
     private void verifyResultsIlogbFloat4Int4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -220,19 +262,27 @@
                 String errorMessage = CoreMathVerifier.verifyIlogb(args);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkIlogbFloat4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkIlogbFloat4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testIlogb() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.java
index 5f85aeb..6dc48ed 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLdexp extends RSBaseCompute {
 
     private ScriptC_TestLdexp script;
@@ -41,8 +43,8 @@
     }
 
     private void checkLdexpFloatIntFloat() {
-        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdffd225490f0e26fl, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xdffd207c2e4133c4l, false);
+        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x90f0e26fl, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x2e4133c4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -63,11 +65,16 @@
 
     private void verifyResultsLdexpFloatIntFloat(Allocation inMantissa, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInMantissa = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMantissa, (float) 42);
         inMantissa.copyTo(arrayInMantissa);
         int[] arrayInExponent = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMantissa: ");
-                    appendVariableToMessage(message, args.inMantissa);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMantissa: ");
+                        appendVariableToMessage(message, args.inMantissa);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLdexpFloatIntFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLdexpFloatIntFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLdexpFloat2Int2Float2() {
-        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7d0b1a44fe92893l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x7d0afcbed3979e8l, false);
+        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4fe92893l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xed3979e8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -129,11 +144,16 @@
 
     private void verifyResultsLdexpFloat2Int2Float2(Allocation inMantissa, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInMantissa = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMantissa, (float) 42);
         inMantissa.copyTo(arrayInMantissa);
         int[] arrayInExponent = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMantissa: ");
-                    appendVariableToMessage(message, args.inMantissa);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMantissa: ");
+                        appendVariableToMessage(message, args.inMantissa);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLdexpFloat2Int2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLdexpFloat2Int2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLdexpFloat3Int3Float3() {
-        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xa8e041253fa3335el, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xa8e03f4cdcf384b3l, false);
+        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3fa3335el, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xdcf384b3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -195,11 +223,16 @@
 
     private void verifyResultsLdexpFloat3Int3Float3(Allocation inMantissa, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInMantissa = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMantissa, (float) 42);
         inMantissa.copyTo(arrayInMantissa);
         int[] arrayInExponent = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMantissa: ");
-                    appendVariableToMessage(message, args.inMantissa);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMantissa: ");
+                        appendVariableToMessage(message, args.inMantissa);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLdexpFloat3Int3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLdexpFloat3Int3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLdexpFloat4Int4Float4() {
-        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x49efd0a62f5d3e29l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x49efcecdccad8f7el, false);
+        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2f5d3e29l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xccad8f7el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -261,11 +302,16 @@
 
     private void verifyResultsLdexpFloat4Int4Float4(Allocation inMantissa, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInMantissa = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMantissa, (float) 42);
         inMantissa.copyTo(arrayInMantissa);
         int[] arrayInExponent = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,32 +327,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMantissa: ");
-                    appendVariableToMessage(message, args.inMantissa);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMantissa: ");
+                        appendVariableToMessage(message, args.inMantissa);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLdexpFloat4Int4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLdexpFloat4Int4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLdexpFloat2IntFloat2() {
-        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6a72b89838bd38d1l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x6a72b6bfd60d8a26l, false);
+        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x38bd38d1l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xd60d8a26l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -327,11 +381,16 @@
 
     private void verifyResultsLdexpFloat2IntFloat2(Allocation inMantissa, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInMantissa = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMantissa, (float) 42);
         inMantissa.copyTo(arrayInMantissa);
         int[] arrayInExponent = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -347,32 +406,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMantissa: ");
-                    appendVariableToMessage(message, args.inMantissa);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMantissa: ");
+                        appendVariableToMessage(message, args.inMantissa);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLdexpFloat2IntFloat2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLdexpFloat2IntFloat2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLdexpFloat3IntFloat3() {
-        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x49ba40205150f83dl, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x49ba3e47eea14992l, false);
+        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5150f83dl, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xeea14992l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -393,11 +460,16 @@
 
     private void verifyResultsLdexpFloat3IntFloat3(Allocation inMantissa, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInMantissa = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMantissa, (float) 42);
         inMantissa.copyTo(arrayInMantissa);
         int[] arrayInExponent = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -413,32 +485,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMantissa: ");
-                    appendVariableToMessage(message, args.inMantissa);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMantissa: ");
+                        appendVariableToMessage(message, args.inMantissa);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLdexpFloat3IntFloat3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLdexpFloat3IntFloat3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLdexpFloat4IntFloat4() {
-        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2901c7a869e4b7a9l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x2901c5d0073508fel, false);
+        Allocation inMantissa = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x69e4b7a9l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x73508fel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -459,11 +539,16 @@
 
     private void verifyResultsLdexpFloat4IntFloat4(Allocation inMantissa, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInMantissa = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMantissa, (float) 42);
         inMantissa.copyTo(arrayInMantissa);
         int[] arrayInExponent = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -479,27 +564,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMantissa: ");
-                    appendVariableToMessage(message, args.inMantissa);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMantissa: ");
+                        appendVariableToMessage(message, args.inMantissa);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLdexpFloat4IntFloat4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLdexpFloat4IntFloat4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLdexp() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.java
index 3aa7964..1e91f42 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLength extends RSBaseCompute {
 
     private ScriptC_TestLength script;
@@ -40,7 +42,7 @@
     }
 
     private void checkLengthFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x8119352509f7cc9fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9f7cc9fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLengthFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsLengthFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloat args = new ArgumentsFloatFloat();
             // Create the appropriate sized arrays in args
@@ -76,23 +82,29 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inV: ");
-                appendVariableToMessage(message, arrayInV[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inV: ");
+                    appendVariableToMessage(message, arrayInV[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkLengthFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkLengthFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloat {
@@ -101,7 +113,7 @@
     }
 
     private void checkLengthFloat2Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xaf3b0f345dd9595dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x5dd9595dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLengthFloat2Float(inV, out);
@@ -120,9 +132,13 @@
 
     private void verifyResultsLengthFloat2Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -140,29 +156,35 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkLengthFloat2Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkLengthFloat2Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLengthFloat3Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xaf3b19d5bcdfe7bel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xbcdfe7bel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLengthFloat3Float(inV, out);
@@ -181,9 +203,13 @@
 
     private void verifyResultsLengthFloat3Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -201,29 +227,35 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkLengthFloat3Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkLengthFloat3Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLengthFloat4Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xaf3b24771be6761fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1be6761fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLengthFloat4Float(inV, out);
@@ -242,9 +274,13 @@
 
     private void verifyResultsLengthFloat4Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -262,25 +298,31 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkLengthFloat4Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkLengthFloat4Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLength() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.java
index a9bf973..073be67 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLgamma extends RSBaseCompute {
 
     private ScriptC_TestLgamma script;
@@ -40,7 +42,7 @@
     }
 
     private void checkLgammaFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd9395583050bc4bel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x50bc4bel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLgammaFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsLgammaFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLgammaFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLgammaFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xeef55496367a4132l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x367a4132l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testLgammaFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsLgammaFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLgammaFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLgammaFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xeef71db12c956210l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2c956210l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testLgammaFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsLgammaFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLgammaFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLgammaFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xeef8e6cc22b082eel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x22b082eel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testLgammaFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsLgammaFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLgammaFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatIntFloat {
@@ -274,7 +324,7 @@
     }
 
     private void checkLgammaFloatIntFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2a62d992979c4bb7l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x979c4bb7l, false);
         try {
             Allocation outSignOfGamma = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -297,11 +347,16 @@
 
     private void verifyResultsLgammaFloatIntFloat(Allocation inV, Allocation outSignOfGamma, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutSignOfGamma = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOutSignOfGamma, (int) 42);
         outSignOfGamma.copyTo(arrayOutSignOfGamma);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -315,26 +370,34 @@
                 String errorMessage = CoreMathVerifier.verifyLgamma(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output outSignOfGamma: ");
-                    appendVariableToMessage(message, args.outSignOfGamma);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkLgammaFloatIntFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output outSignOfGamma: ");
+                        appendVariableToMessage(message, args.outSignOfGamma);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloatIntFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLgammaFloat2Int2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x409fb9a5984bcf7fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x984bcf7fl, false);
         try {
             Allocation outSignOfGamma = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -357,11 +420,16 @@
 
     private void verifyResultsLgammaFloat2Int2Float2(Allocation inV, Allocation outSignOfGamma, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutSignOfGamma = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOutSignOfGamma, (int) 42);
         outSignOfGamma.copyTo(arrayOutSignOfGamma);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -375,26 +443,34 @@
                 String errorMessage = CoreMathVerifier.verifyLgamma(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output outSignOfGamma: ");
-                    appendVariableToMessage(message, args.outSignOfGamma);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkLgammaFloat2Int2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output outSignOfGamma: ");
+                        appendVariableToMessage(message, args.outSignOfGamma);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloat2Int2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLgammaFloat3Int3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6655f8088dfe3c38l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8dfe3c38l, false);
         try {
             Allocation outSignOfGamma = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -417,11 +493,16 @@
 
     private void verifyResultsLgammaFloat3Int3Float3(Allocation inV, Allocation outSignOfGamma, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutSignOfGamma = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOutSignOfGamma, (int) 42);
         outSignOfGamma.copyTo(arrayOutSignOfGamma);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -435,26 +516,34 @@
                 String errorMessage = CoreMathVerifier.verifyLgamma(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output outSignOfGamma: ");
-                    appendVariableToMessage(message, args.outSignOfGamma);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkLgammaFloat3Int3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output outSignOfGamma: ");
+                        appendVariableToMessage(message, args.outSignOfGamma);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloat3Int3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLgammaFloat4Int4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8c0c366b83b0a8f1l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x83b0a8f1l, false);
         try {
             Allocation outSignOfGamma = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -477,11 +566,16 @@
 
     private void verifyResultsLgammaFloat4Int4Float4(Allocation inV, Allocation outSignOfGamma, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayOutSignOfGamma = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOutSignOfGamma, (int) 42);
         outSignOfGamma.copyTo(arrayOutSignOfGamma);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -495,22 +589,30 @@
                 String errorMessage = CoreMathVerifier.verifyLgamma(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Output outSignOfGamma: ");
-                    appendVariableToMessage(message, args.outSignOfGamma);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkLgammaFloat4Int4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Output outSignOfGamma: ");
+                        appendVariableToMessage(message, args.outSignOfGamma);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLgammaFloat4Int4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLgamma() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.java
index 59d612d..2cd529e 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLog extends RSBaseCompute {
 
     private ScriptC_TestLog script;
@@ -40,7 +42,7 @@
     }
 
     private void checkLogFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4176ec542a43578dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2a43578dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLogFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsLogFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLogFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd3cba12c04dd9a49l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4dd9a49l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testLogFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsLogFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLogFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd3cd6a46faf8bb27l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfaf8bb27l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testLogFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsLogFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLogFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd3cf3361f113dc05l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf113dc05l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testLogFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsLogFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLog() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.java
index 1271640..de534f0 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLog10 extends RSBaseCompute {
 
     private ScriptC_TestLog10 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkLog10FloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xba0ecdfe3171d836l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3171d836l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLog10FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsLog10FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog10FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog10FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog10Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd4c88639e3bcdeeal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe3bcdeeal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testLog10Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsLog10Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog10Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog10Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog10Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd4ca4f54d9d7ffc8l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd9d7ffc8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testLog10Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsLog10Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog10Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog10Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog10Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd4cc186fcff320a6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xcff320a6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testLog10Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsLog10Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog10Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog10Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLog10() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.java
index 4cb23ba..3bc188a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLog1p extends RSBaseCompute {
 
     private ScriptC_TestLog1p script;
@@ -40,7 +42,7 @@
     }
 
     private void checkLog1pFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x272c1ffe1744cef6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x1744cef6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLog1pFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsLog1pFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog1pFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog1pFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog1pFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xed8dc77cd4750faal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd4750faal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testLog1pFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsLog1pFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog1pFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog1pFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog1pFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xed8f9097ca903088l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xca903088l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testLog1pFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsLog1pFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog1pFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog1pFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog1pFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xed9159b2c0ab5166l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc0ab5166l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testLog1pFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsLog1pFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog1pFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog1pFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLog1p() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.java
index 25676bf..ea4b352 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLog2 extends RSBaseCompute {
 
     private ScriptC_TestLog2 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkLog2FloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9950067ec147dc6bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc147dc6bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLog2FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsLog2FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog2FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog2FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog2Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x52d99ec8c48141b7l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc48141b7l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testLog2Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsLog2Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog2Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x52db67e3ba9c6295l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xba9c6295l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testLog2Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsLog2Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog2Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog2Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLog2Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x52dd30feb0b78373l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb0b78373l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testLog2Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsLog2Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLog2Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLog2Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLog2() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.java
index 67bd1c3..b351a39 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestLogb extends RSBaseCompute {
 
     private ScriptC_TestLogb script;
@@ -40,7 +42,7 @@
     }
 
     private void checkLogbFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xab2603feada6157bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xada6157bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testLogbFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsLogbFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogbFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogbFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLogbFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x256d8fbaf90b6647l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf90b6647l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testLogbFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsLogbFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogbFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogbFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLogbFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x256f58d5ef268725l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xef268725l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testLogbFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsLogbFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogbFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogbFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkLogbFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x257121f0e541a803l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe541a803l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testLogbFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsLogbFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkLogbFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkLogbFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testLogb() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.java
index 4cbbf73..05060fb 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestMad extends RSBaseCompute {
 
     private ScriptC_TestMad script;
@@ -42,9 +44,9 @@
     }
 
     private void checkMadFloatFloatFloatFloat() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2a4461e340b4de48l, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2a4461e340b4de49l, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xcea3b86dc50ce0fcl, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x40b4de48l, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x40b4de49l, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc50ce0fcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -67,13 +69,19 @@
 
     private void verifyResultsMadFloatFloatFloatFloat(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -90,36 +98,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMadFloatFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMadFloatFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMadFloat2Float2Float2Float2() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdfffb28a8a5fd7c0l, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdfffb28a8a5fd7c1l, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3da8592f318f8924l, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8a5fd7c0l, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8a5fd7c1l, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x318f8924l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -142,13 +158,19 @@
 
     private void verifyResultsMadFloat2Float2Float2Float2(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -165,36 +187,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMadFloat2Float2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMadFloat2Float2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMadFloat3Float3Float3Float3() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdd6226bde1551f1cl, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdd6226bde1551f1dl, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x117f5b0bfb77d218l, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe1551f1cl, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe1551f1dl, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfb77d218l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -217,13 +247,19 @@
 
     private void verifyResultsMadFloat3Float3Float3Float3(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -240,36 +276,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMadFloat3Float3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMadFloat3Float3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMadFloat4Float4Float4Float4() {
-        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdac49af1384a6678l, false);
-        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdac49af1384a6679l, false);
-        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe5565ce8c5601b0cl, false);
+        Allocation inMultiplicand1 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x384a6678l, false);
+        Allocation inMultiplicand2 = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x384a6679l, false);
+        Allocation inOffset = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc5601b0cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInMultiplicand2(inMultiplicand2);
@@ -292,13 +336,19 @@
 
     private void verifyResultsMadFloat4Float4Float4Float4(Allocation inMultiplicand1, Allocation inMultiplicand2, Allocation inOffset, Allocation out, boolean relaxed) {
         float[] arrayInMultiplicand1 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand1, (float) 42);
         inMultiplicand1.copyTo(arrayInMultiplicand1);
         float[] arrayInMultiplicand2 = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInMultiplicand2, (float) 42);
         inMultiplicand2.copyTo(arrayInMultiplicand2);
         float[] arrayInOffset = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInOffset, (float) 42);
         inOffset.copyTo(arrayInOffset);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -315,30 +365,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inMultiplicand1: ");
-                    appendVariableToMessage(message, args.inMultiplicand1);
-                    message.append("\n");
-                    message.append("Input inMultiplicand2: ");
-                    appendVariableToMessage(message, args.inMultiplicand2);
-                    message.append("\n");
-                    message.append("Input inOffset: ");
-                    appendVariableToMessage(message, args.inOffset);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inMultiplicand1: ");
+                        appendVariableToMessage(message, args.inMultiplicand1);
+                        message.append("\n");
+                        message.append("Input inMultiplicand2: ");
+                        appendVariableToMessage(message, args.inMultiplicand2);
+                        message.append("\n");
+                        message.append("Input inOffset: ");
+                        appendVariableToMessage(message, args.inOffset);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMadFloat4Float4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMadFloat4Float4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testMad() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.java
index 042f0ae..f646f07 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestMax extends RSBaseCompute {
 
     private ScriptC_TestMax script;
@@ -41,8 +43,8 @@
     }
 
     private void checkMaxFloatFloatFloat() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2952d868c2162460l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2952d868c2162461l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc2162460l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc2162461l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -63,11 +65,16 @@
 
     private void verifyResultsMaxFloatFloatFloat(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxFloat2Float2Float2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc6031e7536addadal, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc6031e7536addadbl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x36addadal, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x36addadbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -129,11 +144,16 @@
 
     private void verifyResultsMaxFloat2Float2Float2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxFloat3Float3Float3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1a67fc95388bdc7bl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1a67fc95388bdc7cl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x388bdc7bl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x388bdc7cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -195,11 +223,16 @@
 
     private void verifyResultsMaxFloat3Float3Float3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxFloat4Float4Float4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6eccdab53a69de1cl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6eccdab53a69de1dl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3a69de1cl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3a69de1dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -261,11 +302,16 @@
 
     private void verifyResultsMaxFloat4Float4Float4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharCharChar {
@@ -311,8 +365,8 @@
     }
 
     private void checkMaxCharCharChar() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x5f77cf3cb6405876l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x5f77cf3cb6405877l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xb6405876l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xb6405877l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -333,11 +387,16 @@
 
     private void verifyResultsMaxCharCharChar(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -352,32 +411,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxCharCharChar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxCharCharChar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxChar2Char2Char2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x94dd090a19e42804l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x94dd090a19e42805l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x19e42804l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x19e42805l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -398,11 +465,16 @@
 
     private void verifyResultsMaxChar2Char2Char2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -417,32 +489,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxChar2Char2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxChar2Char2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxChar3Char3Char3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xba9188f3788338d3l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0xba9188f3788338d4l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x788338d3l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x788338d4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -463,11 +543,16 @@
 
     private void verifyResultsMaxChar3Char3Char3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -482,32 +567,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxChar3Char3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxChar3Char3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxChar4Char4Char4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xe04608dcd72249a2l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xe04608dcd72249a3l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xd72249a2l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0xd72249a3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -528,11 +621,16 @@
 
     private void verifyResultsMaxChar4Char4Char4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -547,27 +645,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxChar4Char4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxChar4Char4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUcharUchar {
@@ -577,8 +683,8 @@
     }
 
     private void checkMaxUcharUcharUchar() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x800f9948853a162dl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x800f9948853a162el, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x853a162dl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x853a162el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -599,11 +705,16 @@
 
     private void verifyResultsMaxUcharUcharUchar(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -618,32 +729,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUcharUcharUchar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUcharUcharUchar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUchar2Uchar2Uchar2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xd31d5735b7e9a9dbl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xd31d5735b7e9a9dcl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xb7e9a9dbl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xb7e9a9dcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -664,11 +783,16 @@
 
     private void verifyResultsMaxUchar2Uchar2Uchar2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -683,32 +807,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUchar2Uchar2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUchar2Uchar2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUchar3Uchar3Uchar3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x27823555b9c7ab7cl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x27823555b9c7ab7dl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xb9c7ab7cl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xb9c7ab7dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -729,11 +861,16 @@
 
     private void verifyResultsMaxUchar3Uchar3Uchar3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -748,32 +885,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUchar3Uchar3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUchar3Uchar3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUchar4Uchar4Uchar4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7be71375bba5ad1dl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0x7be71375bba5ad1el, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xbba5ad1dl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xbba5ad1el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -794,11 +939,16 @@
 
     private void verifyResultsMaxUchar4Uchar4Uchar4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -813,27 +963,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUchar4Uchar4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUchar4Uchar4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortShortShort {
@@ -843,8 +1001,8 @@
     }
 
     private void checkMaxShortShortShort() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x920335e143b57294l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x920335e143b57295l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x43b57294l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x43b57295l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -865,11 +1023,16 @@
 
     private void verifyResultsMaxShortShortShort(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -884,32 +1047,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxShortShortShort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxShortShortShort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxShort2Short2Short2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x42e9d46b56ecb9del, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x42e9d46b56ecb9dfl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x56ecb9del, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x56ecb9dfl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -930,11 +1101,16 @@
 
     private void verifyResultsMaxShort2Short2Short2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -949,32 +1125,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxShort2Short2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxShort2Short2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxShort3Short3Short3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x974eb28b58cabb7fl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x974eb28b58cabb80l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x58cabb7fl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x58cabb80l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -995,11 +1179,16 @@
 
     private void verifyResultsMaxShort3Short3Short3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1014,32 +1203,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxShort3Short3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxShort3Short3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxShort4Short4Short4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xebb390ab5aa8bd20l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0xebb390ab5aa8bd21l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x5aa8bd20l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x5aa8bd21l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1060,11 +1257,16 @@
 
     private void verifyResultsMaxShort4Short4Short4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1079,27 +1281,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxShort4Short4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxShort4Short4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUshortUshort {
@@ -1109,8 +1319,8 @@
     }
 
     private void checkMaxUshortUshortUshort() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x8f869c73b947704bl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0x8f869c73b947704cl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xb947704bl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xb947704cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1131,11 +1341,16 @@
 
     private void verifyResultsMaxUshortUshortUshort(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1150,32 +1365,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUshortUshortUshort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUshortUshortUshort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUshort2Ushort2Ushort2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xbe3c50e6150b1f95l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0xbe3c50e6150b1f96l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x150b1f95l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x150b1f96l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1196,11 +1419,16 @@
 
     private void verifyResultsMaxUshort2Ushort2Ushort2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1215,32 +1443,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUshort2Ushort2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUshort2Ushort2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUshort3Ushort3Ushort3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x3e2be9df5df0112cl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x3e2be9df5df0112dl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x5df0112cl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0x5df0112dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1261,11 +1497,16 @@
 
     private void verifyResultsMaxUshort3Ushort3Ushort3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1280,32 +1521,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUshort3Ushort3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUshort3Ushort3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUshort4Ushort4Ushort4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xbe1b82d8a6d502c3l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xbe1b82d8a6d502c4l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xa6d502c3l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0xa6d502c4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1326,11 +1575,16 @@
 
     private void verifyResultsMaxUshort4Ushort4Ushort4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1345,27 +1599,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUshort4Ushort4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUshort4Ushort4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntIntInt {
@@ -1375,8 +1637,8 @@
     }
 
     private void checkMaxIntIntInt() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x773d0d60e43d0fa9l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x773d0d60e43d0faal, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xe43d0fa9l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xe43d0faal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1397,11 +1659,16 @@
 
     private void verifyResultsMaxIntIntInt(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1416,32 +1683,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxIntIntInt" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxIntIntInt" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxInt2Int2Int2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x32815a01bb9dccd7l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x32815a01bb9dccd8l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xbb9dccd7l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xbb9dccd8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1462,11 +1737,16 @@
 
     private void verifyResultsMaxInt2Int2Int2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1481,32 +1761,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxInt2Int2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxInt2Int2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxInt3Int3Int3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x3f66ddfc867314c0l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x3f66ddfc867314c1l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x867314c0l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x867314c1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1527,11 +1815,16 @@
 
     private void verifyResultsMaxInt3Int3Int3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1546,32 +1839,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxInt3Int3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxInt3Int3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxInt4Int4Int4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x4c4c61f751485ca9l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x4c4c61f751485caal, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x51485ca9l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x51485caal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1592,11 +1893,16 @@
 
     private void verifyResultsMaxInt4Int4Int4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1611,27 +1917,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxInt4Int4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxInt4Int4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUintUint {
@@ -1641,8 +1955,8 @@
     }
 
     private void checkMaxUintUintUint() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xcd24e58385f73e36l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xcd24e58385f73e37l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x85f73e36l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x85f73e37l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1663,11 +1977,16 @@
 
     private void verifyResultsMaxUintUintUint(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1682,32 +2001,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUintUintUint" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUintUintUint" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUint2Uint2Uint2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xbd5747860e84d6c4l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xbd5747860e84d6c5l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xe84d6c4l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xe84d6c5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1728,11 +2055,16 @@
 
     private void verifyResultsMaxUint2Uint2Uint2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1747,32 +2079,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUint2Uint2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUint2Uint2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUint3Uint3Uint3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xe30bc76f6d23e793l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0xe30bc76f6d23e794l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x6d23e793l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x6d23e794l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1793,11 +2133,16 @@
 
     private void verifyResultsMaxUint3Uint3Uint3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1812,32 +2157,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUint3Uint3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUint3Uint3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUint4Uint4Uint4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x8c04758cbc2f862l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x8c04758cbc2f863l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xcbc2f862l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0xcbc2f863l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1858,11 +2211,16 @@
 
     private void verifyResultsMaxUint4Uint4Uint4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1877,27 +2235,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUint4Uint4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUint4Uint4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongLongLong {
@@ -1907,8 +2273,8 @@
     }
 
     private void checkMaxLongLongLong() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x542587285eceb84l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x542587285eceb85l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x85eceb84l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x85eceb85l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1929,11 +2295,16 @@
 
     private void verifyResultsMaxLongLongLong(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1948,32 +2319,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxLongLongLong" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxLongLongLong" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxLong2Long2Long2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xc5c0bac4c249c9dal, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xc5c0bac4c249c9dbl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xc249c9dal, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0xc249c9dbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1994,11 +2373,16 @@
 
     private void verifyResultsMaxLong2Long2Long2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2013,32 +2397,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxLong2Long2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxLong2Long2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxLong3Long3Long3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xeb753aae20e8daa9l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xeb753aae20e8daaal, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x20e8daa9l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x20e8daaal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2059,11 +2451,16 @@
 
     private void verifyResultsMaxLong3Long3Long3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2078,32 +2475,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxLong3Long3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxLong3Long3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxLong4Long4Long4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x1129ba977f87eb78l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x1129ba977f87eb79l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x7f87eb78l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x7f87eb79l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2124,11 +2529,16 @@
 
     private void verifyResultsMaxLong4Long4Long4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2143,27 +2553,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxLong4Long4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxLong4Long4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongUlongUlong {
@@ -2173,8 +2591,8 @@
     }
 
     private void checkMaxUlongUlongUlong() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x8d1ad8f38f18baafl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x8d1ad8f38f18bab0l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x8f18baafl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x8f18bab0l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2195,11 +2613,16 @@
 
     private void verifyResultsMaxUlongUlongUlong(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -2214,32 +2637,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUlongUlongUlong" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUlongUlongUlong" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUlong2Ulong2Ulong2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x6e2049a55946bc65l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x6e2049a55946bc66l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x5946bc65l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x5946bc66l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2260,11 +2691,16 @@
 
     private void verifyResultsMaxUlong2Ulong2Ulong2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2279,32 +2715,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUlong2Ulong2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUlong2Ulong2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUlong3Ulong3Ulong3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xc28527c55b24be06l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0xc28527c55b24be07l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x5b24be06l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x5b24be07l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2325,11 +2769,16 @@
 
     private void verifyResultsMaxUlong3Ulong3Ulong3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2344,32 +2793,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUlong3Ulong3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUlong3Ulong3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMaxUlong4Ulong4Ulong4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x16ea05e55d02bfa7l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x16ea05e55d02bfa8l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x5d02bfa7l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x5d02bfa8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2390,11 +2847,16 @@
 
     private void verifyResultsMaxUlong4Ulong4Ulong4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2409,27 +2871,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMaxUlong4Ulong4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMaxUlong4Ulong4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testMax() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.java
index be77bac..9151fd1 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestMin extends RSBaseCompute {
 
     private ScriptC_TestMin script;
@@ -41,8 +43,8 @@
     }
 
     private void checkMinFloatFloatFloat() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbdad0b097121573el, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbdad0b097121573fl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7121573el, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7121573fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -63,11 +65,16 @@
 
     private void verifyResultsMinFloatFloatFloat(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinFloat2Float2Float2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2f1cc4b149b4e454l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2f1cc4b149b4e455l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x49b4e454l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x49b4e455l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -129,11 +144,16 @@
 
     private void verifyResultsMinFloat2Float2Float2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinFloat3Float3Float3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8381a2d14b92e5f5l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8381a2d14b92e5f6l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4b92e5f5l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4b92e5f6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -195,11 +223,16 @@
 
     private void verifyResultsMinFloat3Float3Float3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinFloat4Float4Float4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd7e680f14d70e796l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd7e680f14d70e797l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4d70e796l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4d70e797l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -261,11 +302,16 @@
 
     private void verifyResultsMinFloat4Float4Float4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsCharCharChar {
@@ -311,8 +365,8 @@
     }
 
     private void checkMinCharCharChar() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x78bd3bd20e8196e0l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0x78bd3bd20e8196e1l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xe8196e0l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 1, 0xe8196e1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -333,11 +387,16 @@
 
     private void verifyResultsMinCharCharChar(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -352,32 +411,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinCharCharChar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinCharCharChar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinChar2Char2Char2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x29373baac8ef5ae2l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0x29373baac8ef5ae3l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xc8ef5ae2l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 2, 0xc8ef5ae3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -398,11 +465,16 @@
 
     private void verifyResultsMinChar2Char2Char2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -417,32 +489,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinChar2Char2Char2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinChar2Char2Char2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinChar3Char3Char3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x4eebbb94278e6bb1l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x4eebbb94278e6bb2l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x278e6bb1l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 3, 0x278e6bb2l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -463,11 +543,16 @@
 
     private void verifyResultsMinChar3Char3Char3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -482,32 +567,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinChar3Char3Char3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinChar3Char3Char3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinChar4Char4Char4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x74a03b7d862d7c80l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x74a03b7d862d7c81l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x862d7c80l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_8, 4, 0x862d7c81l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_8, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -528,11 +621,16 @@
 
     private void verifyResultsMinChar4Char4Char4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -547,27 +645,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinChar4Char4Char4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinChar4Char4Char4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUcharUcharUchar {
@@ -577,8 +683,8 @@
     }
 
     private void checkMinUcharUcharUchar() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x1469cbe93445490bl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x1469cbe93445490cl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x3445490bl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 1, 0x3445490cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -599,11 +705,16 @@
 
     private void verifyResultsMinUcharUcharUchar(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -618,32 +729,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUcharUcharUchar" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUcharUcharUchar" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUchar2Uchar2Uchar2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x3c36fd71caf0b355l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0x3c36fd71caf0b356l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xcaf0b355l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 2, 0xcaf0b356l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -664,11 +783,16 @@
 
     private void verifyResultsMinUchar2Uchar2Uchar2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -683,32 +807,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUchar2Uchar2Uchar2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUchar2Uchar2Uchar2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUchar3Uchar3Uchar3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x909bdb91ccceb4f6l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0x909bdb91ccceb4f7l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xccceb4f6l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 3, 0xccceb4f7l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -729,11 +861,16 @@
 
     private void verifyResultsMinUchar3Uchar3Uchar3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -748,32 +885,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUchar3Uchar3Uchar3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUchar3Uchar3Uchar3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUchar4Uchar4Uchar4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xe500b9b1ceacb697l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xe500b9b1ceacb698l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xceacb697l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_8, 4, 0xceacb698l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_8, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -794,11 +939,16 @@
 
     private void verifyResultsMinUchar4Uchar4Uchar4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         byte[] arrayInA = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (byte) 42);
         inA.copyTo(arrayInA);
         byte[] arrayInB = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (byte) 42);
         inB.copyTo(arrayInB);
         byte[] arrayOut = new byte[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (byte) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -813,27 +963,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUchar4Uchar4Uchar4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUchar4Uchar4Uchar4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsShortShortShort {
@@ -843,8 +1001,8 @@
     }
 
     private void checkMinShortShortShort() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x265d6881f2c0a572l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0x265d6881f2c0a573l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xf2c0a572l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 1, 0xf2c0a573l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -865,11 +1023,16 @@
 
     private void verifyResultsMinShortShortShort(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -884,32 +1047,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinShortShortShort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinShortShortShort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinShort2Short2Short2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xac037aa769f3c358l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0xac037aa769f3c359l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x69f3c358l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 2, 0x69f3c359l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -930,11 +1101,16 @@
 
     private void verifyResultsMinShort2Short2Short2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -949,32 +1125,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinShort2Short2Short2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinShort2Short2Short2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinShort3Short3Short3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x6858c76bd1c4f9l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x6858c76bd1c4fal, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x6bd1c4f9l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 3, 0x6bd1c4fal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -995,11 +1179,16 @@
 
     private void verifyResultsMinShort3Short3Short3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1014,32 +1203,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinShort3Short3Short3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinShort3Short3Short3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinShort4Short4Short4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x54cd36e76dafc69al, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x54cd36e76dafc69bl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x6dafc69al, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_16, 4, 0x6dafc69bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_16, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1060,11 +1257,16 @@
 
     private void verifyResultsMinShort4Short4Short4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1079,27 +1281,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinShort4Short4Short4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinShort4Short4Short4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUshortUshortUshort {
@@ -1109,8 +1319,8 @@
     }
 
     private void checkMinUshortUshortUshort() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xf8a042afcc4e79c5l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xf8a042afcc4e79c6l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xcc4e79c5l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 1, 0xcc4e79c6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1131,11 +1341,16 @@
 
     private void verifyResultsMinUshortUshortUshort(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1150,32 +1365,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUshortUshortUshort" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUshortUshortUshort" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUshort2Ushort2Ushort2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x2743846f878f4ca3l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x2743846f878f4ca4l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x878f4ca3l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 2, 0x878f4ca4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1196,11 +1419,16 @@
 
     private void verifyResultsMinUshort2Ushort2Ushort2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1215,32 +1443,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUshort2Ushort2Ushort2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUshort2Ushort2Ushort2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUshort3Ushort3Ushort3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xa7331d68d0743e3al, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xa7331d68d0743e3bl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xd0743e3al, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 3, 0xd0743e3bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1261,11 +1497,16 @@
 
     private void verifyResultsMinUshort3Ushort3Ushort3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1280,32 +1521,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUshort3Ushort3Ushort3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUshort3Ushort3Ushort3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUshort4Ushort4Ushort4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x2722b66219592fd1l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x2722b66219592fd2l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x19592fd1l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_16, 4, 0x19592fd2l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_16, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1326,11 +1575,16 @@
 
     private void verifyResultsMinUshort4Ushort4Ushort4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         short[] arrayInA = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (short) 42);
         inA.copyTo(arrayInA);
         short[] arrayInB = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (short) 42);
         inB.copyTo(arrayInB);
         short[] arrayOut = new short[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (short) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1345,27 +1599,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUshort4Ushort4Ushort4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUshort4Ushort4Ushort4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsIntIntInt {
@@ -1375,8 +1637,8 @@
     }
 
     private void checkMinIntIntInt() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xfb5d72ade703dfd7l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xfb5d72ade703dfd8l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xe703dfd7l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0xe703dfd8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1397,11 +1659,16 @@
 
     private void verifyResultsMinIntIntInt(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1416,32 +1683,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinIntIntInt" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinIntIntInt" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinInt2Int2Int2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x4bc6c69713df0b41l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x4bc6c69713df0b42l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x13df0b41l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x13df0b42l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1462,11 +1737,16 @@
 
     private void verifyResultsMinInt2Int2Int2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1481,32 +1761,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinInt2Int2Int2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinInt2Int2Int2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinInt3Int3Int3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x58ac4a91deb4532al, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x58ac4a91deb4532bl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xdeb4532al, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xdeb4532bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1527,11 +1815,16 @@
 
     private void verifyResultsMinInt3Int3Int3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1546,32 +1839,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinInt3Int3Int3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinInt3Int3Int3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinInt4Int4Int4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x6591ce8ca9899b13l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x6591ce8ca9899b14l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xa9899b13l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xa9899b14l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1592,11 +1893,16 @@
 
     private void verifyResultsMinInt4Int4Int4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1611,27 +1917,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinInt4Int4Int4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinInt4Int4Int4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUintUintUint {
@@ -1641,8 +1955,8 @@
     }
 
     private void checkMinUintUintUint() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xe66a5218de387ca0l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xe66a5218de387ca1l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xde387ca0l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xde387ca1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1663,11 +1977,16 @@
 
     private void verifyResultsMinUintUintUint(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1682,32 +2001,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUintUintUint" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUintUintUint" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUint2Uint2Uint2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x51b17a26bd9009a2l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0x51b17a26bd9009a3l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xbd9009a2l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 2, 0xbd9009a3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1728,11 +2055,16 @@
 
     private void verifyResultsMinUint2Uint2Uint2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -1747,32 +2079,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUint2Uint2Uint2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUint2Uint2Uint2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUint3Uint3Uint3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x7765fa101c2f1a71l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x7765fa101c2f1a72l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x1c2f1a71l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 3, 0x1c2f1a72l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1793,11 +2133,16 @@
 
     private void verifyResultsMinUint3Uint3Uint3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -1812,32 +2157,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUint3Uint3Uint3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUint3Uint3Uint3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUint4Uint4Uint4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x9d1a79f97ace2b40l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x9d1a79f97ace2b41l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x7ace2b40l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 4, 0x7ace2b41l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1858,11 +2211,16 @@
 
     private void verifyResultsMinUint4Uint4Uint4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         int[] arrayInA = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (int) 42);
         inA.copyTo(arrayInA);
         int[] arrayInB = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (int) 42);
         inB.copyTo(arrayInB);
         int[] arrayOut = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (int) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -1877,27 +2235,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUint4Uint4Uint4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUint4Uint4Uint4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsLongLongLong {
@@ -1907,8 +2273,8 @@
     }
 
     private void checkMinLongLongLong() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x1e87c507de2e29eel, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0x1e87c507de2e29efl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0xde2e29eel, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 1, 0xde2e29efl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1929,11 +2295,16 @@
 
     private void verifyResultsMinLongLongLong(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -1948,32 +2319,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinLongLongLong" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinLongLongLong" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinLong2Long2Long2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x5a1aed657154fcb8l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x5a1aed657154fcb9l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x7154fcb8l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 2, 0x7154fcb9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -1994,11 +2373,16 @@
 
     private void verifyResultsMinLong2Long2Long2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2013,32 +2397,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinLong2Long2Long2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinLong2Long2Long2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinLong3Long3Long3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x7fcf6d4ecff40d87l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0x7fcf6d4ecff40d88l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xcff40d87l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 3, 0xcff40d88l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2059,11 +2451,16 @@
 
     private void verifyResultsMinLong3Long3Long3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2078,32 +2475,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinLong3Long3Long3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinLong3Long3Long3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinLong4Long4Long4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xa583ed382e931e56l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0xa583ed382e931e57l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x2e931e56l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.SIGNED_64, 4, 0x2e931e57l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_64, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2124,11 +2529,16 @@
 
     private void verifyResultsMinLong4Long4Long4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2143,27 +2553,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinLong4Long4Long4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinLong4Long4Long4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsUlongUlongUlong {
@@ -2173,8 +2591,8 @@
     }
 
     private void checkMinUlongUlongUlong() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x21750b943e23ed8dl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x21750b943e23ed8el, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x3e23ed8dl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 1, 0x3e23ed8el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2195,11 +2613,16 @@
 
     private void verifyResultsMinUlongUlongUlong(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -2214,32 +2637,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (args.out != arrayOut[i * 1 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (args.out != arrayOut[i * 1 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUlongUlongUlong" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUlongUlongUlong" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUlong2Ulong2Ulong2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xd739efe16c4dc5dfl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0xd739efe16c4dc5e0l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x6c4dc5dfl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 2, 0x6c4dc5e0l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2260,11 +2691,16 @@
 
     private void verifyResultsMinUlong2Ulong2Ulong2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -2279,32 +2715,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (args.out != arrayOut[i * 2 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (args.out != arrayOut[i * 2 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUlong2Ulong2Ulong2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUlong2Ulong2Ulong2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUlong3Ulong3Ulong3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x2b9ece016e2bc780l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x2b9ece016e2bc781l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x6e2bc780l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 3, 0x6e2bc781l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2325,11 +2769,16 @@
 
     private void verifyResultsMinUlong3Ulong3Ulong3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -2344,32 +2793,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUlong3Ulong3Ulong3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUlong3Ulong3Ulong3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMinUlong4Ulong4Ulong4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x8003ac217009c921l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x8003ac217009c922l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x7009c921l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.UNSIGNED_64, 4, 0x7009c922l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.UNSIGNED_64, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -2390,11 +2847,16 @@
 
     private void verifyResultsMinUlong4Ulong4Ulong4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         long[] arrayInA = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (long) 42);
         inA.copyTo(arrayInA);
         long[] arrayInB = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (long) 42);
         inB.copyTo(arrayInB);
         long[] arrayOut = new long[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (long) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -2409,27 +2871,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (args.out != arrayOut[i * 4 + j]) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (args.out != arrayOut[i * 4 + j]) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMinUlong4Ulong4Ulong4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMinUlong4Ulong4Ulong4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testMin() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.java
index 0b6203f..8adfe99 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestMix extends RSBaseCompute {
 
     private ScriptC_TestMix script;
@@ -42,9 +44,9 @@
     }
 
     private void checkMixFloatFloatFloatFloat() {
-        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9f4beff6471d6db1l, false);
-        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6ede0b88b4422e8fl, false);
-        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6d2f014ec6a51d9fl, false);
+        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x471d6db1l, false);
+        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb4422e8fl, false);
+        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc6a51d9fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInStop(inStop);
@@ -67,13 +69,19 @@
 
     private void verifyResultsMixFloatFloatFloatFloat(Allocation inStart, Allocation inStop, Allocation inFraction, Allocation out, boolean relaxed) {
         float[] arrayInStart = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInStart, (float) 42);
         inStart.copyTo(arrayInStart);
         float[] arrayInStop = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInStop, (float) 42);
         inStop.copyTo(arrayInStop);
         float[] arrayInFraction = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInFraction, (float) 42);
         inFraction.copyTo(arrayInFraction);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -90,36 +98,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inStart: ");
-                    appendVariableToMessage(message, args.inStart);
-                    message.append("\n");
-                    message.append("Input inStop: ");
-                    appendVariableToMessage(message, args.inStop);
-                    message.append("\n");
-                    message.append("Input inFraction: ");
-                    appendVariableToMessage(message, args.inFraction);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inStart: ");
+                        appendVariableToMessage(message, args.inStart);
+                        message.append("\n");
+                        message.append("Input inStop: ");
+                        appendVariableToMessage(message, args.inStop);
+                        message.append("\n");
+                        message.append("Input inFraction: ");
+                        appendVariableToMessage(message, args.inFraction);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMixFloatFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMixFloatFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMixFloat2Float2Float2Float2() {
-        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x45502e8f0a2d9ce9l, false);
-        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xba2b8a035395e837l, false);
-        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe56bef3c621e0ac7l, false);
+        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xa2d9ce9l, false);
+        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x5395e837l, false);
+        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x621e0ac7l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInStop(inStop);
@@ -142,13 +158,19 @@
 
     private void verifyResultsMixFloat2Float2Float2Float2(Allocation inStart, Allocation inStop, Allocation inFraction, Allocation out, boolean relaxed) {
         float[] arrayInStart = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInStart, (float) 42);
         inStart.copyTo(arrayInStart);
         float[] arrayInStop = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInStop, (float) 42);
         inStop.copyTo(arrayInStop);
         float[] arrayInFraction = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInFraction, (float) 42);
         inFraction.copyTo(arrayInFraction);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -165,36 +187,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inStart: ");
-                    appendVariableToMessage(message, args.inStart);
-                    message.append("\n");
-                    message.append("Input inStop: ");
-                    appendVariableToMessage(message, args.inStop);
-                    message.append("\n");
-                    message.append("Input inFraction: ");
-                    appendVariableToMessage(message, args.inFraction);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inStart: ");
+                        appendVariableToMessage(message, args.inStart);
+                        message.append("\n");
+                        message.append("Input inStop: ");
+                        appendVariableToMessage(message, args.inStop);
+                        message.append("\n");
+                        message.append("Input inFraction: ");
+                        appendVariableToMessage(message, args.inFraction);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMixFloat2Float2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMixFloat2Float2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMixFloat3Float3Float3Float3() {
-        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xeb4701726b009c5l, false);
-        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9b21f6b3249ee4cbl, false);
-        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf15862eab0d4f51bl, false);
+        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x26b009c5l, false);
+        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x249ee4cbl, false);
+        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xb0d4f51bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInStop(inStop);
@@ -217,13 +247,19 @@
 
     private void verifyResultsMixFloat3Float3Float3Float3(Allocation inStart, Allocation inStop, Allocation inFraction, Allocation out, boolean relaxed) {
         float[] arrayInStart = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStart, (float) 42);
         inStart.copyTo(arrayInStart);
         float[] arrayInStop = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStop, (float) 42);
         inStop.copyTo(arrayInStop);
         float[] arrayInFraction = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInFraction, (float) 42);
         inFraction.copyTo(arrayInFraction);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -240,36 +276,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inStart: ");
-                    appendVariableToMessage(message, args.inStart);
-                    message.append("\n");
-                    message.append("Input inStop: ");
-                    appendVariableToMessage(message, args.inStop);
-                    message.append("\n");
-                    message.append("Input inFraction: ");
-                    appendVariableToMessage(message, args.inFraction);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inStart: ");
+                        appendVariableToMessage(message, args.inStart);
+                        message.append("\n");
+                        message.append("Input inStop: ");
+                        appendVariableToMessage(message, args.inStop);
+                        message.append("\n");
+                        message.append("Input inFraction: ");
+                        appendVariableToMessage(message, args.inFraction);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMixFloat3Float3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMixFloat3Float3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMixFloat4Float4Float4Float4() {
-        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd818b19f433276a1l, false);
-        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7c186362f5a7e15fl, false);
-        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfd44d698ff8bdf6fl, false);
+        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x433276a1l, false);
+        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf5a7e15fl, false);
+        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xff8bdf6fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInStop(inStop);
@@ -292,13 +336,19 @@
 
     private void verifyResultsMixFloat4Float4Float4Float4(Allocation inStart, Allocation inStop, Allocation inFraction, Allocation out, boolean relaxed) {
         float[] arrayInStart = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStart, (float) 42);
         inStart.copyTo(arrayInStart);
         float[] arrayInStop = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStop, (float) 42);
         inStop.copyTo(arrayInStop);
         float[] arrayInFraction = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInFraction, (float) 42);
         inFraction.copyTo(arrayInFraction);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -315,36 +365,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inStart: ");
-                    appendVariableToMessage(message, args.inStart);
-                    message.append("\n");
-                    message.append("Input inStop: ");
-                    appendVariableToMessage(message, args.inStop);
-                    message.append("\n");
-                    message.append("Input inFraction: ");
-                    appendVariableToMessage(message, args.inFraction);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inStart: ");
+                        appendVariableToMessage(message, args.inStart);
+                        message.append("\n");
+                        message.append("Input inStop: ");
+                        appendVariableToMessage(message, args.inStop);
+                        message.append("\n");
+                        message.append("Input inFraction: ");
+                        appendVariableToMessage(message, args.inFraction);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMixFloat4Float4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMixFloat4Float4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMixFloat2Float2FloatFloat2() {
-        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf811b2d52bd1d7c3l, false);
-        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x17a127e13c8dd1c5l, false);
-        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe0b7d03e92afd1f5l, false);
+        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2bd1d7c3l, false);
+        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3c8dd1c5l, false);
+        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x92afd1f5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInStop(inStop);
@@ -367,13 +425,19 @@
 
     private void verifyResultsMixFloat2Float2FloatFloat2(Allocation inStart, Allocation inStop, Allocation inFraction, Allocation out, boolean relaxed) {
         float[] arrayInStart = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInStart, (float) 42);
         inStart.copyTo(arrayInStart);
         float[] arrayInStop = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInStop, (float) 42);
         inStop.copyTo(arrayInStop);
         float[] arrayInFraction = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInFraction, (float) 42);
         inFraction.copyTo(arrayInFraction);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -390,36 +454,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inStart: ");
-                    appendVariableToMessage(message, args.inStart);
-                    message.append("\n");
-                    message.append("Input inStop: ");
-                    appendVariableToMessage(message, args.inStop);
-                    message.append("\n");
-                    message.append("Input inFraction: ");
-                    appendVariableToMessage(message, args.inFraction);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inStart: ");
+                        appendVariableToMessage(message, args.inStart);
+                        message.append("\n");
+                        message.append("Input inStop: ");
+                        appendVariableToMessage(message, args.inStop);
+                        message.append("\n");
+                        message.append("Input inFraction: ");
+                        appendVariableToMessage(message, args.inFraction);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMixFloat2Float2FloatFloat2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMixFloat2Float2FloatFloat2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMixFloat3Float3FloatFloat3() {
-        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xae7aff441b20fa80l, false);
-        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe64a4d60d6f4de7cl, false);
-        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x21bd09bbd131a27cl, false);
+        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1b20fa80l, false);
+        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd6f4de7cl, false);
+        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd131a27cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInStop(inStop);
@@ -442,13 +514,19 @@
 
     private void verifyResultsMixFloat3Float3FloatFloat3(Allocation inStart, Allocation inStop, Allocation inFraction, Allocation out, boolean relaxed) {
         float[] arrayInStart = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStart, (float) 42);
         inStart.copyTo(arrayInStart);
         float[] arrayInStop = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStop, (float) 42);
         inStop.copyTo(arrayInStop);
         float[] arrayInFraction = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInFraction, (float) 42);
         inFraction.copyTo(arrayInFraction);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -465,36 +543,44 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inStart: ");
-                    appendVariableToMessage(message, args.inStart);
-                    message.append("\n");
-                    message.append("Input inStop: ");
-                    appendVariableToMessage(message, args.inStop);
-                    message.append("\n");
-                    message.append("Input inFraction: ");
-                    appendVariableToMessage(message, args.inFraction);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inStart: ");
+                        appendVariableToMessage(message, args.inStart);
+                        message.append("\n");
+                        message.append("Input inStop: ");
+                        appendVariableToMessage(message, args.inStop);
+                        message.append("\n");
+                        message.append("Input inFraction: ");
+                        appendVariableToMessage(message, args.inFraction);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMixFloat3Float3FloatFloat3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMixFloat3Float3FloatFloat3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkMixFloat4Float4FloatFloat4() {
-        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x64e44bb30a701d3dl, false);
-        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb4f372e0715beb33l, false);
-        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x62c243390fb37303l, false);
+        Allocation inStart = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xa701d3dl, false);
+        Allocation inStop = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x715beb33l, false);
+        Allocation inFraction = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xfb37303l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInStop(inStop);
@@ -517,13 +603,19 @@
 
     private void verifyResultsMixFloat4Float4FloatFloat4(Allocation inStart, Allocation inStop, Allocation inFraction, Allocation out, boolean relaxed) {
         float[] arrayInStart = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStart, (float) 42);
         inStart.copyTo(arrayInStart);
         float[] arrayInStop = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInStop, (float) 42);
         inStop.copyTo(arrayInStop);
         float[] arrayInFraction = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInFraction, (float) 42);
         inFraction.copyTo(arrayInFraction);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -540,30 +632,38 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inStart: ");
-                    appendVariableToMessage(message, args.inStart);
-                    message.append("\n");
-                    message.append("Input inStop: ");
-                    appendVariableToMessage(message, args.inStop);
-                    message.append("\n");
-                    message.append("Input inFraction: ");
-                    appendVariableToMessage(message, args.inFraction);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inStart: ");
+                        appendVariableToMessage(message, args.inStart);
+                        message.append("\n");
+                        message.append("Input inStop: ");
+                        appendVariableToMessage(message, args.inStop);
+                        message.append("\n");
+                        message.append("Input inFraction: ");
+                        appendVariableToMessage(message, args.inFraction);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkMixFloat4Float4FloatFloat4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkMixFloat4Float4FloatFloat4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testMix() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.java
index 26263ce..1848ce6 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestModf extends RSBaseCompute {
 
     private ScriptC_TestModf script;
@@ -41,7 +43,7 @@
     }
 
     private void checkModfFloatFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd655dc05ccaef45l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x5ccaef45l, false);
         try {
             Allocation outIntegralPart = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -64,11 +66,16 @@
 
     private void verifyResultsModfFloatFloatFloat(Allocation inV, Allocation outIntegralPart, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutIntegralPart = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOutIntegralPart, (float) 42);
         outIntegralPart.copyTo(arrayOutIntegralPart);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -86,37 +93,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outIntegralPart: ");
-                    appendVariableToMessage(message, args.outIntegralPart);
-                    message.append("\n");
-                    message.append("Actual   output outIntegralPart: ");
-                    appendVariableToMessage(message, arrayOutIntegralPart[i * 1 + j]);
-                    if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outIntegralPart: ");
+                        appendVariableToMessage(message, args.outIntegralPart);
+                        message.append("\n");
+                        message.append("Actual   output outIntegralPart: ");
+                        appendVariableToMessage(message, arrayOutIntegralPart[i * 1 + j]);
+                        if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkModfFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkModfFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkModfFloat2Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2a1dc519fa16305fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xfa16305fl, false);
         try {
             Allocation outIntegralPart = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -139,11 +154,16 @@
 
     private void verifyResultsModfFloat2Float2Float2(Allocation inV, Allocation outIntegralPart, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutIntegralPart = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOutIntegralPart, (float) 42);
         outIntegralPart.copyTo(arrayOutIntegralPart);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -161,37 +181,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outIntegralPart: ");
-                    appendVariableToMessage(message, args.outIntegralPart);
-                    message.append("\n");
-                    message.append("Actual   output outIntegralPart: ");
-                    appendVariableToMessage(message, arrayOutIntegralPart[i * 2 + j]);
-                    if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outIntegralPart: ");
+                        appendVariableToMessage(message, args.outIntegralPart);
+                        message.append("\n");
+                        message.append("Actual   output outIntegralPart: ");
+                        appendVariableToMessage(message, arrayOutIntegralPart[i * 2 + j]);
+                        if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkModfFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkModfFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkModfFloat3Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7e82a339fbf43200l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xfbf43200l, false);
         try {
             Allocation outIntegralPart = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -214,11 +242,16 @@
 
     private void verifyResultsModfFloat3Float3Float3(Allocation inV, Allocation outIntegralPart, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutIntegralPart = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutIntegralPart, (float) 42);
         outIntegralPart.copyTo(arrayOutIntegralPart);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -236,37 +269,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outIntegralPart: ");
-                    appendVariableToMessage(message, args.outIntegralPart);
-                    message.append("\n");
-                    message.append("Actual   output outIntegralPart: ");
-                    appendVariableToMessage(message, arrayOutIntegralPart[i * 4 + j]);
-                    if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outIntegralPart: ");
+                        appendVariableToMessage(message, args.outIntegralPart);
+                        message.append("\n");
+                        message.append("Actual   output outIntegralPart: ");
+                        appendVariableToMessage(message, arrayOutIntegralPart[i * 4 + j]);
+                        if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkModfFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkModfFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkModfFloat4Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd2e78159fdd233a1l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfdd233a1l, false);
         try {
             Allocation outIntegralPart = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -289,11 +330,16 @@
 
     private void verifyResultsModfFloat4Float4Float4(Allocation inV, Allocation outIntegralPart, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutIntegralPart = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutIntegralPart, (float) 42);
         outIntegralPart.copyTo(arrayOutIntegralPart);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -311,33 +357,41 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outIntegralPart: ");
-                    appendVariableToMessage(message, args.outIntegralPart);
-                    message.append("\n");
-                    message.append("Actual   output outIntegralPart: ");
-                    appendVariableToMessage(message, arrayOutIntegralPart[i * 4 + j]);
-                    if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outIntegralPart: ");
+                        appendVariableToMessage(message, args.outIntegralPart);
+                        message.append("\n");
+                        message.append("Actual   output outIntegralPart: ");
+                        appendVariableToMessage(message, arrayOutIntegralPart[i * 4 + j]);
+                        if (!args.outIntegralPart.couldBe(arrayOutIntegralPart[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkModfFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkModfFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testModf() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.java
index 7c1f89c..e17cd2b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNan extends RSBaseCompute {
 
     private ScriptC_TestNan script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNanUintFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0xbc42cb366a8a10d2l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.UNSIGNED_32, 1, 0x6a8a10d2l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNanUintFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNanUintFloat(Allocation inV, Allocation out, boolean relaxed) {
         int[] arrayInV = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (int) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,24 +82,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNanUintFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNanUintFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNan() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.java
index 63307d9..0452cc9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAcos extends RSBaseCompute {
 
     private ScriptC_TestNativeAcos script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAcosFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7749aa14657f3d94l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x657f3d94l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAcosFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAcosFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcosFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcosFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcosFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x92e82297d87e02d8l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd87e02d8l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAcosFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAcosFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcosFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcosFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcosFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x92e9ebb2ce9923b6l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xce9923b6l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAcosFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAcosFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcosFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcosFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcosFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x92ebb4cdc4b44494l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc4b44494l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAcosFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAcosFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcosFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcosFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAcos() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.java
index ed3ab41..0494901 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAcosh extends RSBaseCompute {
 
     private ScriptC_TestNativeAcosh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAcoshFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x97c6a2f89e417fcal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9e417fcal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAcoshFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAcoshFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcoshFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcoshFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcoshFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3989caf5cb8e3adel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xcb8e3adel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAcoshFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAcoshFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcoshFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcoshFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcoshFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x398b9410c1a95bbcl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc1a95bbcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAcoshFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAcoshFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcoshFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcoshFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcoshFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x398d5d2bb7c47c9al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb7c47c9al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAcoshFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAcoshFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcoshFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcoshFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAcosh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.java
index c2fb6a5..1c84749 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAcospi extends RSBaseCompute {
 
     private ScriptC_TestNativeAcospi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAcospiFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdcf67f5599c7d8ffl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x99c7d8ffl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAcospiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAcospiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcospiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcospiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcospiFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf038668a78e88aabl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x78e88aabl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAcospiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAcospiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcospiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcospiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcospiFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf03a2fa56f03ab89l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6f03ab89l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAcospiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAcospiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcospiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcospiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAcospiFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf03bf8c0651ecc67l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x651ecc67l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAcospiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAcospiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAcospiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAcospiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAcospi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.java
index f86f1d0..252f99b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAsin extends RSBaseCompute {
 
     private ScriptC_TestNativeAsin script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAsinFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x1167d6d8d3e5bc7l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x8d3e5bc7l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAsinFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAsinFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdb4aa187ebdf2133l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xebdf2133l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAsinFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAsinFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdb4c6aa2e1fa4211l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe1fa4211l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAsinFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAsinFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdb4e33bdd81562efl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd81562efl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAsinFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAsinFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAsin() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.java
index 8b642a2..6b72cc9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAsinh extends RSBaseCompute {
 
     private ScriptC_TestNativeAsinh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAsinhFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbd2e22f24b5b925bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4b5b925bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAsinhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAsinhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinhFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x62151d490cde5427l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xcde5427l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAsinhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAsinhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinhFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6216e66402f97505l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2f97505l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAsinhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAsinhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinhFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6218af7ef91495e3l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf91495e3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAsinhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAsinhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAsinh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.java
index 0aaf7f2..84b219a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAsinpi extends RSBaseCompute {
 
     private ScriptC_TestNativeAsinpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAsinpiFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2558fe45ad28f75al, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xad28f75al, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAsinpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAsinpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinpiFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xbf9f3a86715cc9eel, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x715cc9eel, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAsinpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAsinpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinpiFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xbfa103a16777eaccl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6777eaccl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAsinpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAsinpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAsinpiFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xbfa2ccbc5d930baal, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5d930baal, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAsinpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAsinpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAsinpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAsinpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAsinpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.java
index 8271bdb..12430dc 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAtan extends RSBaseCompute {
 
     private ScriptC_TestNativeAtan script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAtanFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xaafbf9b325b34e42l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x25b34e42l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAtanFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAtanFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf5c93432108a7b96l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x108a7b96l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAtanFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAtanFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf5cafd4d06a59c74l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6a59c74l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAtanFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAtanFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf5ccc667fcc0bd52l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfcc0bd52l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAtanFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAtanFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAtan() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.java
index ac7a974..4cabb28 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAtan2 extends RSBaseCompute {
 
     private ScriptC_TestNativeAtan2 script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNativeAtan2FloatFloatFloat() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2139aa61fb6dcb4fl, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf6634dcb634c16d0l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xfb6dcb4fl, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x634c16d0l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNativeAtan2FloatFloatFloat(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2FloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2FloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtan2Float2Float2Float2() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x989e0b0cd0059da7l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4a617fa4dfda5468l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd0059da7l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdfda5468l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -129,11 +144,16 @@
 
     private void verifyResultsNativeAtan2Float2Float2Float2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2Float2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2Float2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtan2Float3Float3Float3() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x742cb44672d189a8l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x13c5c0edb2b5e7a1l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x72d189a8l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xb2b5e7a1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -195,11 +223,16 @@
 
     private void verifyResultsNativeAtan2Float3Float3Float3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2Float3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2Float3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtan2Float4Float4Float4() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4fbb5d80159d75a9l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdd2a023685917adal, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x159d75a9l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x85917adal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -261,11 +302,16 @@
 
     private void verifyResultsNativeAtan2Float4Float4Float4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2Float4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2Float4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAtan2() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.java
index 4c812ce..c42591c 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAtan2pi extends RSBaseCompute {
 
     private ScriptC_TestNativeAtan2pi script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNativeAtan2piFloatFloatFloat() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc2172a04694fc108l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd63229f70853dc01l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x694fc108l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x853dc01l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNativeAtan2piFloatFloatFloat(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2piFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2piFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtan2piFloat2Float2Float2() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x305d06618853bce2l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4cc6c68c0c19e58bl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8853bce2l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc19e58bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -129,11 +144,16 @@
 
     private void verifyResultsNativeAtan2piFloat2Float2Float2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2piFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2piFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtan2piFloat3Float3Float3() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xbebaf9b2b1fa8e3l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x162b07d4def578c4l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2b1fa8e3l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdef578c4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -195,11 +223,16 @@
 
     private void verifyResultsNativeAtan2piFloat3Float3Float3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2piFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2piFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtan2piFloat4Float4Float4() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe77a58d4cdeb94e4l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdf8f491db1d10bfdl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xcdeb94e4l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb1d10bfdl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -261,11 +302,16 @@
 
     private void verifyResultsNativeAtan2piFloat4Float4Float4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtan2piFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtan2piFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAtan2pi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.java
index 11b8952..c37993b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAtanh extends RSBaseCompute {
 
     private ScriptC_TestNativeAtanh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAtanhFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x46ba02a2e7004d04l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe7004d04l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAtanhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAtanhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanhFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd557bfdd35a682c8l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x35a682c8l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAtanhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAtanhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanhFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd55988f82bc1a3a6l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2bc1a3a6l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAtanhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAtanhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanhFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd55b521321dcc484l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x21dcc484l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAtanhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAtanhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAtanh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.java
index 9e822d2..4089adb 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeAtanpi extends RSBaseCompute {
 
     private ScriptC_TestNativeAtanpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeAtanpiFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3fd790efd1d451bdl, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd1d451bdl, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeAtanpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeAtanpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanpiFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1bd089694afc9ef9l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4afc9ef9l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeAtanpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeAtanpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanpiFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1bd252844117bfd7l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4117bfd7l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeAtanpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeAtanpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeAtanpiFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1bd41b9f3732e0b5l, -1, 1);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3732e0b5l, -1, 1);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeAtanpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeAtanpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeAtanpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeAtanpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeAtanpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.java
index 05eb399..18c76bb 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeCbrt extends RSBaseCompute {
 
     private ScriptC_TestNativeCbrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeCbrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa1d3335118086389l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x18086389l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeCbrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeCbrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCbrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCbrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCbrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xce4859fd59112965l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x59112965l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeCbrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeCbrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCbrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCbrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCbrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xce4a23184f2c4a43l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4f2c4a43l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeCbrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeCbrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCbrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCbrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCbrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xce4bec3345476b21l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x45476b21l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeCbrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeCbrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCbrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCbrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeCbrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.java
index 6b9b803..bd9c6a6 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeCos extends RSBaseCompute {
 
     private ScriptC_TestNativeCos script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeCosFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2f317381777f3495l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x777f3495l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeCosFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeCosFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCosFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCosFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCosFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdc05f75eda3d0911l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xda3d0911l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeCosFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeCosFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCosFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCosFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCosFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdc07c079d05829efl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd05829efl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeCosFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeCosFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCosFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCosFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCosFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdc098994c6734acdl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc6734acdl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeCosFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeCosFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCosFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCosFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeCos() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.java
index ba20feb..7bdab28 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeCosh extends RSBaseCompute {
 
     private ScriptC_TestNativeCosh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeCoshFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7bb5784aa43ffcf5l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa43ffcf5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeCoshFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeCoshFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCoshFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCoshFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCoshFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x818c886316a44671l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x16a44671l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeCoshFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeCoshFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCoshFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCoshFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCoshFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x818e517e0cbf674fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xcbf674fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeCoshFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeCoshFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCoshFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCoshFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCoshFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x81901a9902da882dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2da882dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeCoshFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeCoshFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCoshFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCoshFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeCosh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.java
index 0176177..91b4426 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeCospi extends RSBaseCompute {
 
     private ScriptC_TestNativeCospi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeCospiFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2614541c9b86df38l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9b86df38l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeCospiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeCospiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCospiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCospiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCospiFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8ae37e6159c7c5cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x159c7c5cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeCospiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeCospiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCospiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCospiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCospiFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8b001010bb79d3al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xbb79d3al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeCospiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeCospiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCospiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCospiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeCospiFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8b1ca1c01d2be18l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1d2be18l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeCospiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeCospiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeCospiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeCospiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeCospi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.java
index 46838d8..8485d16 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeDistance extends RSBaseCompute {
 
     private ScriptC_TestNativeDistance script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNativeDistanceFloatFloatFloat() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb61d5ec530ae2337l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x98c2c48c9b58b3c2l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x30ae2337l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9b58b3c2l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNativeDistanceFloatFloatFloat(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloatFloat args = new ArgumentsFloatFloatFloat();
             // Create the appropriate sized arrays in args
@@ -83,26 +90,32 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inLeftVector: ");
-                appendVariableToMessage(message, arrayInLeftVector[i]);
-                message.append("\n");
-                message.append("Input inRightVector: ");
-                appendVariableToMessage(message, arrayInRightVector[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inLeftVector: ");
+                    appendVariableToMessage(message, arrayInLeftVector[i]);
+                    message.append("\n");
+                    message.append("Input inRightVector: ");
+                    appendVariableToMessage(message, arrayInRightVector[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeDistanceFloatFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeDistanceFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloatNFloat {
@@ -112,8 +125,8 @@
     }
 
     private void checkNativeDistanceFloat2Float2Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xef86e1d727286713l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3d7bc89101e219b6l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x27286713l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1e219b6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -134,11 +147,16 @@
 
     private void verifyResultsNativeDistanceFloat2Float2Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -160,35 +178,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 2 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeDistanceFloat2Float2Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeDistanceFloat2Float2Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeDistanceFloat3Float3Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xbe30075548c71b61l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf3e514c0a78a62d0l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x48c71b61l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xa78a62d0l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -209,11 +233,16 @@
 
     private void verifyResultsNativeDistanceFloat3Float3Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -235,35 +264,41 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeDistanceFloat3Float3Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeDistanceFloat3Float3Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeDistanceFloat4Float4Float() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8cd92cd36a65cfafl, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xaa4e60f04d32abeal, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6a65cfafl, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4d32abeal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -284,11 +319,16 @@
 
     private void verifyResultsNativeDistanceFloat4Float4Float(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatNFloat args = new ArgumentsFloatNFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -310,30 +350,36 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, arrayInLeftVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, arrayInRightVector[i * 4 + j]);
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
                     message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeDistanceFloat4Float4Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeDistanceFloat4Float4Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeDistance() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.java
index b7a630b2..194a4df 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeDivide extends RSBaseCompute {
 
     private ScriptC_TestNativeDivide script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNativeDivideFloatFloatFloat() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x73477387751754efl, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x5ed4412e19040daal, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x751754efl, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x19040daal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNativeDivideFloatFloatFloat(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, args.inLeftVector);
-                    message.append("\n");
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, args.inRightVector);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, args.inLeftVector);
+                        message.append("\n");
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, args.inRightVector);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeDivideFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeDivideFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeDivideFloat2Float2Float2() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x752d5a1207785d6dl, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb071fa74af507ad4l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7785d6dl, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xaf507ad4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -129,11 +144,16 @@
 
     private void verifyResultsNativeDivideFloat2Float2Float2(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, args.inLeftVector);
-                    message.append("\n");
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, args.inRightVector);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, args.inLeftVector);
+                        message.append("\n");
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, args.inRightVector);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeDivideFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeDivideFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeDivideFloat3Float3Float3() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5623c6c05fb90198l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x79d63bbd822c0e0dl, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5fb90198l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x822c0e0dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -195,11 +223,16 @@
 
     private void verifyResultsNativeDivideFloat3Float3Float3(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, args.inLeftVector);
-                    message.append("\n");
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, args.inRightVector);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, args.inLeftVector);
+                        message.append("\n");
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, args.inRightVector);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeDivideFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeDivideFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeDivideFloat4Float4Float4() {
-        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x371a336eb7f9a5c3l, false);
-        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x433a7d065507a146l, false);
+        Allocation inLeftVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb7f9a5c3l, false);
+        Allocation inRightVector = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5507a146l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInRightVector(inRightVector);
@@ -261,11 +302,16 @@
 
     private void verifyResultsNativeDivideFloat4Float4Float4(Allocation inLeftVector, Allocation inRightVector, Allocation out, boolean relaxed) {
         float[] arrayInLeftVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInLeftVector, (float) 42);
         inLeftVector.copyTo(arrayInLeftVector);
         float[] arrayInRightVector = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInRightVector, (float) 42);
         inRightVector.copyTo(arrayInRightVector);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inLeftVector: ");
-                    appendVariableToMessage(message, args.inLeftVector);
-                    message.append("\n");
-                    message.append("Input inRightVector: ");
-                    appendVariableToMessage(message, args.inRightVector);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inLeftVector: ");
+                        appendVariableToMessage(message, args.inLeftVector);
+                        message.append("\n");
+                        message.append("Input inRightVector: ");
+                        appendVariableToMessage(message, args.inRightVector);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeDivideFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeDivideFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeDivide() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.java
index 156b154..3643235 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeExp extends RSBaseCompute {
 
     private ScriptC_TestNativeExp script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeExpFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x66a7898af1f6be9bl, -86, 86);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf1f6be9bl, -86, 86);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeExpFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeExpFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExpFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6feb21d463a0ee67l, -86, 86);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x63a0ee67l, -86, 86);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeExpFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeExpFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExpFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6feceaef59bc0f45l, -86, 86);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x59bc0f45l, -86, 86);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeExpFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeExpFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExpFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6feeb40a4fd73023l, -86, 86);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4fd73023l, -86, 86);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeExpFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeExpFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeExp() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.java
index df4dd51..36996f9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeExp10 extends RSBaseCompute {
 
     private ScriptC_TestNativeExp10 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeExp10FloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x562e4ea690352c54l, -37, 37);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x90352c54l, -37, 37);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeExp10FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeExp10FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp10FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp10FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExp10Float2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7450c64e54876b98l, -37, 37);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x54876b98l, -37, 37);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeExp10Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeExp10Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp10Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp10Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExp10Float3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x74528f694aa28c76l, -37, 37);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4aa28c76l, -37, 37);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeExp10Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeExp10Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp10Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp10Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExp10Float4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7454588440bdad54l, -37, 37);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x40bdad54l, -37, 37);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeExp10Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeExp10Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp10Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp10Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeExp10() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.java
index 81961c2..3ed45e4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeExp2 extends RSBaseCompute {
 
     private ScriptC_TestNativeExp2 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeExp2FloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd87a6eb24c6a2bc5l, -125, 125);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4c6a2bc5l, -125, 125);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeExp2FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeExp2FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp2FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp2FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExp2Float2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8c243b10af5062c1l, -125, 125);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xaf5062c1l, -125, 125);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeExp2Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeExp2Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExp2Float3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8c26042ba56b839fl, -125, 125);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xa56b839fl, -125, 125);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeExp2Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeExp2Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp2Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp2Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExp2Float4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8c27cd469b86a47dl, -125, 125);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x9b86a47dl, -125, 125);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeExp2Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeExp2Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExp2Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExp2Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeExp2() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.java
index 84a06fc..bba5aeb 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeExpm1 extends RSBaseCompute {
 
     private ScriptC_TestNativeExpm1 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeExpm1FloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7a90bd8a7094f34bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7094f34bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeExpm1FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeExpm1FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpm1FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpm1FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExpm1Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3f43b22de84b7997l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe84b7997l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeExpm1Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeExpm1Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpm1Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpm1Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExpm1Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3f457b48de669a75l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xde669a75l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeExpm1Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeExpm1Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpm1Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpm1Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeExpm1Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3f474463d481bb53l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd481bb53l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeExpm1Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeExpm1Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeExpm1Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeExpm1Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeExpm1() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.java
index b875539..650233b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeHypot extends RSBaseCompute {
 
     private ScriptC_TestNativeHypot script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNativeHypotFloatFloatFloat() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3d61f129bdf66001l, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3d61f129bdf66002l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbdf66001l, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbdf66002l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNativeHypotFloatFloatFloat(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeHypotFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeHypotFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeHypotFloat2Float2Float2() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x92a8064760a50e4dl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x92a8064760a50e4el, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x60a50e4dl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x60a50e4el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -129,11 +144,16 @@
 
     private void verifyResultsNativeHypotFloat2Float2Float2(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeHypotFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeHypotFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeHypotFloat3Float3Float3() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe70ce46762830feel, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe70ce46762830fefl, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x62830feel, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x62830fefl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -195,11 +223,16 @@
 
     private void verifyResultsNativeHypotFloat3Float3Float3(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeHypotFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeHypotFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeHypotFloat4Float4Float4() {
-        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3b71c2876461118fl, false);
-        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3b71c28764611190l, false);
+        Allocation inA = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6461118fl, false);
+        Allocation inB = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x64611190l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInB(inB);
@@ -261,11 +302,16 @@
 
     private void verifyResultsNativeHypotFloat4Float4Float4(Allocation inA, Allocation inB, Allocation out, boolean relaxed) {
         float[] arrayInA = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInA, (float) 42);
         inA.copyTo(arrayInA);
         float[] arrayInB = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInB, (float) 42);
         inB.copyTo(arrayInB);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inA: ");
-                    appendVariableToMessage(message, args.inA);
-                    message.append("\n");
-                    message.append("Input inB: ");
-                    appendVariableToMessage(message, args.inB);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inA: ");
+                        appendVariableToMessage(message, args.inA);
+                        message.append("\n");
+                        message.append("Input inB: ");
+                        appendVariableToMessage(message, args.inB);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeHypotFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeHypotFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeHypot() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.java
index 4a8b86a..176f75b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeLength extends RSBaseCompute {
 
     private ScriptC_TestNativeLength script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeLengthFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbe51f0c4d1df20ecl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd1df20ecl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLengthFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeLengthFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloat args = new ArgumentsFloatFloat();
             // Create the appropriate sized arrays in args
@@ -76,23 +82,29 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inV: ");
-                appendVariableToMessage(message, arrayInV[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inV: ");
+                    appendVariableToMessage(message, arrayInV[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeLengthFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeLengthFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloat {
@@ -101,7 +113,7 @@
     }
 
     private void checkNativeLengthFloat2Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf7c2930af1b4824cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf1b4824cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLengthFloat2Float(inV, out);
@@ -120,9 +132,13 @@
 
     private void verifyResultsNativeLengthFloat2Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -140,29 +156,35 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeLengthFloat2Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeLengthFloat2Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLengthFloat3Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf7c29dac50bb10adl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x50bb10adl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLengthFloat3Float(inV, out);
@@ -181,9 +203,13 @@
 
     private void verifyResultsNativeLengthFloat3Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -201,29 +227,35 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeLengthFloat3Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeLengthFloat3Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLengthFloat4Float() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf7c2a84dafc19f0el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xafc19f0el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLengthFloat4Float(inV, out);
@@ -242,9 +274,13 @@
 
     private void verifyResultsNativeLengthFloat4Float(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloat args = new ArgumentsFloatNFloat();
             // Create the appropriate sized arrays in args
@@ -262,25 +298,31 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
+                    }
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
                     message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
-                }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeLengthFloat4Float" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeLengthFloat4Float" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeLength() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.java
index 1f61402..d1d108b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeLog extends RSBaseCompute {
 
     private ScriptC_TestNativeLog script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeLogFloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6237b14ee6418d2cl, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe6418d2cl, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLogFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeLogFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLogFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLogFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLogFloat2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x641a5823d3eee3b0l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd3eee3b0l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeLogFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeLogFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLogFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLogFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLogFloat3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x641c213eca0a048el, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xca0a048el, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeLogFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeLogFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLogFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLogFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLogFloat4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x641dea59c025256cl, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc025256cl, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeLogFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeLogFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLogFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLogFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeLog() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.java
index 7cadd6b..4d4278b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeLog10 extends RSBaseCompute {
 
     private ScriptC_TestNativeLog10 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeLog10FloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4a5d84f60083219dl, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x83219dl, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLog10FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeLog10FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog10FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog10FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog10Float2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1d500a10779807d9l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x779807d9l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeLog10Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeLog10Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog10Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog10Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog10Float3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1d51d32b6db328b7l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6db328b7l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeLog10Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeLog10Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog10Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog10Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog10Float4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1d539c4663ce4995l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x63ce4995l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeLog10Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeLog10Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog10Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog10Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeLog10() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.java
index 2806db3..eaed9c2 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeLog1p extends RSBaseCompute {
 
     private ScriptC_TestNativeLog1p script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeLog1pFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb77ad6f5e656185dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe656185dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLog1pFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeLog1pFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog1pFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog1pFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog1pFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x36154b5368503899l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x68503899l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeLog1pFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeLog1pFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog1pFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog1pFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog1pFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3617146e5e6b5977l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5e6b5977l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeLog1pFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeLog1pFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog1pFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog1pFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog1pFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3618dd8954867a55l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x54867a55l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeLog1pFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeLog1pFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog1pFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog1pFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeLog1p() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.java
index 7592524..ba811a8 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeLog2 extends RSBaseCompute {
 
     private ScriptC_TestNativeLog2 script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeLog2FloatFloat() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x19b11c9c54fade20l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x54fade20l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeLog2FloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeLog2FloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog2FloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog2FloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog2Float2Float2() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x90125a688c689604l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8c689604l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeLog2Float2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeLog2Float2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog2Float3Float3() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x901423838283b6e2l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8283b6e2l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeLog2Float3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeLog2Float3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog2Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog2Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeLog2Float4Float4() {
-        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x9015ec9e789ed7c0l, 10e-10, 10e10);
+        Allocation inV = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x789ed7c0l, 10e-10, 10e10);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeLog2Float4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeLog2Float4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeLog2Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeLog2Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeLog2() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.java
index 401fb73..d3ec54c 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeNormalize extends RSBaseCompute {
 
     private ScriptC_TestNativeNormalize script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeNormalizeFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x487756167e4aac53l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7e4aac53l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeNormalizeFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeNormalizeFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloat args = new ArgumentsFloatFloat();
             // Create the appropriate sized arrays in args
@@ -76,23 +82,29 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inV: ");
-                appendVariableToMessage(message, arrayInV[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inV: ");
+                    appendVariableToMessage(message, arrayInV[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNativeNormalizeFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeNormalizeFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloatN {
@@ -101,7 +113,7 @@
     }
 
     private void checkNativeNormalizeFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x65c77dbcedd0e45fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xedd0e45fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeNormalizeFloat2Float2(inV, out);
@@ -120,9 +132,13 @@
 
     private void verifyResultsNativeNormalizeFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -143,31 +159,37 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 2 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkNativeNormalizeFloat2Float2" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeNormalizeFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeNormalizeFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x65c946d7e3ec053dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe3ec053dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeNormalizeFloat3Float3(inV, out);
@@ -186,9 +208,13 @@
 
     private void verifyResultsNativeNormalizeFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -209,31 +235,37 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkNativeNormalizeFloat3Float3" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeNormalizeFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeNormalizeFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x65cb0ff2da07261bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xda07261bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeNormalizeFloat4Float4(inV, out);
@@ -252,9 +284,13 @@
 
     private void verifyResultsNativeNormalizeFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -275,27 +311,33 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkNativeNormalizeFloat4Float4" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNativeNormalizeFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeNormalize() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.java
index abe6999..930c892 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativePowr extends RSBaseCompute {
 
     private ScriptC_TestNativePowr script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNativePowrFloatFloatFloat() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x22637077834d1839l, 0, 256);
-        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xef7b0ab4f9181f0fl, -15, 15);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x834d1839l, 0, 256);
+        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf9181f0fl, -15, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNativePowrFloatFloatFloat(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativePowrFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativePowrFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativePowrFloat2Float2Float2() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x47afceb7283b11a5l, 0, 256);
-        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x65ac261bb67d4abbl, -15, 15);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x283b11a5l, 0, 256);
+        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb67d4abbl, -15, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -129,11 +144,16 @@
 
     private void verifyResultsNativePowrFloat2Float2Float2(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativePowrFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativePowrFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativePowrFloat3Float3Float3() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe2961d5b10aef718l, 0, 256);
-        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x411aa11d0d9fcd3el, -15, 15);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x10aef718l, 0, 256);
+        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd9fcd3el, -15, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -195,11 +223,16 @@
 
     private void verifyResultsNativePowrFloat3Float3Float3(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativePowrFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativePowrFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativePowrFloat4Float4Float4() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7d7c6bfef922dc8bl, 0, 256);
-        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1c891c1e64c24fc1l, -15, 15);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf922dc8bl, 0, 256);
+        Allocation inExponent = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x64c24fc1l, -15, 15);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -261,11 +302,16 @@
 
     private void verifyResultsNativePowrFloat4Float4Float4(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativePowrFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativePowrFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativePowr() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.java
index 3d4daf7..3793956 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeRecip extends RSBaseCompute {
 
     private ScriptC_TestNativeRecip script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeRecipFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4ec14a4fcc4ed441l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xcc4ed441l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeRecipFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeRecipFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRecipFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRecipFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRecipFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd1ec6fa169d54a5dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x69d54a5dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeRecipFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeRecipFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRecipFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRecipFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRecipFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd1ee38bc5ff06b3bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5ff06b3bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeRecipFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeRecipFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRecipFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRecipFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRecipFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd1f001d7560b8c19l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x560b8c19l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeRecipFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeRecipFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRecipFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRecipFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeRecip() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.java
index 989c3f3..09f6c516 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeRootn extends RSBaseCompute {
 
     private ScriptC_TestNativeRootn script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNativeRootnFloatIntFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6693fe5c237ac0f1l, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x6693fe5c237ac0e9l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x237ac0f1l, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x237ac0e9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNativeRootnFloatIntFloat(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRootnFloatIntFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRootnFloatIntFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRootnFloat2Int2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x5363e8c04afd5bcdl, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x5363e8c04afd5bc5l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4afd5bcdl, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x4afd5bc5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -129,11 +144,16 @@
 
     private void verifyResultsNativeRootnFloat2Int2Float2(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRootnFloat2Int2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRootnFloat2Int2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRootnFloat3Int3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x791a272340afc886l, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x791a272340afc87el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x40afc886l, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x40afc87el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -195,11 +223,16 @@
 
     private void verifyResultsNativeRootnFloat3Int3Float3(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRootnFloat3Int3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRootnFloat3Int3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRootnFloat4Int4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x9ed065863662353fl, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x9ed0658636623537l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3662353fl, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x36623537l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -261,11 +302,16 @@
 
     private void verifyResultsNativeRootnFloat4Int4Float4(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRootnFloat4Int4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRootnFloat4Int4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeRootn() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.java
index 14cdc42..fd157b4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeRsqrt extends RSBaseCompute {
 
     private ScriptC_TestNativeRsqrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeRsqrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf3caff6b795084f6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x795084f6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeRsqrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeRsqrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRsqrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRsqrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRsqrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd5098485fb0a95aal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xfb0a95aal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeRsqrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeRsqrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRsqrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRsqrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRsqrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd50b4da0f125b688l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf125b688l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeRsqrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeRsqrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRsqrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRsqrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeRsqrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd50d16bbe740d766l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe740d766l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeRsqrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeRsqrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeRsqrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeRsqrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeRsqrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.java
index efed35c..a49cd12 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeSin extends RSBaseCompute {
 
     private ScriptC_TestNativeSin script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeSinFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb8fe46da9f3e52c8l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9f3e52c8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeSinFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeSinFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2468764eed9e276cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xed9e276cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeSinFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeSinFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x246a3f69e3b9484al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe3b9484al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeSinFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeSinFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x246c0884d9d46928l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd9d46928l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeSinFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeSinFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeSin() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.java
index cc4e42b..60c746b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeSincos extends RSBaseCompute {
 
     private ScriptC_TestNativeSincos script;
@@ -41,7 +43,7 @@
     }
 
     private void checkNativeSincosFloatFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe15df2366436cc13l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6436cc13l, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -64,11 +66,16 @@
 
     private void verifyResultsNativeSincosFloatFloatFloat(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -86,37 +93,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 1 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 1 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j], 0.0005)) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSincosFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSincosFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSincosFloat2Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe5a1f1dcda676ea9l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xda676ea9l, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -139,11 +154,16 @@
 
     private void verifyResultsNativeSincosFloat2Float2Float2(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -161,37 +181,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 2 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 2 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j], 0.0005)) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSincosFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSincosFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSincosFloat3Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3a06cffcdc45704al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdc45704al, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -214,11 +242,16 @@
 
     private void verifyResultsNativeSincosFloat3Float3Float3(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -236,37 +269,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSincosFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSincosFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSincosFloat4Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8e6bae1cde2371ebl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xde2371ebl, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -289,11 +330,16 @@
 
     private void verifyResultsNativeSincosFloat4Float4Float4(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -311,33 +357,41 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j], 0.0005)) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSincosFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSincosFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeSincos() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.java
index 8f03189..28083e9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeSinh extends RSBaseCompute {
 
     private ScriptC_TestNativeSinh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeSinhFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa11cf844515a0f86l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x515a0f86l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeSinhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeSinhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinhFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xaa17dab657f45fbal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x57f45fbal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeSinhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeSinhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinhFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xaa19a3d14e0f8098l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4e0f8098l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeSinhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeSinhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinhFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xaa1b6cec442aa176l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x442aa176l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeSinhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeSinhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeSinh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.java
index 53ada72..8cd1abf 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeSinpi extends RSBaseCompute {
 
     private ScriptC_TestNativeSinpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeSinpiFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6e76d30caee7fd93l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xaee7fd93l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeSinpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeSinpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinpiFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd8150be20e10bb9fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe10bb9fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeSinpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeSinpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinpiFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd816d4fd042bdc7dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x42bdc7dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeSinpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeSinpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSinpiFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd8189e17fa46fd5bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfa46fd5bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeSinpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeSinpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSinpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSinpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeSinpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.java
index 7e52f17..75a569f 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeSqrt extends RSBaseCompute {
 
     private ScriptC_TestNativeSqrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeSqrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x5de9ec2c642f9b06l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x642f9b06l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeSqrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeSqrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSqrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSqrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSqrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x4e6581e66050ef3al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6050ef3al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeSqrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeSqrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSqrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSqrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSqrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x4e674b01566c1018l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x566c1018l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeSqrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeSqrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSqrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSqrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeSqrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4e69141c4c8730f6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4c8730f6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeSqrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeSqrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeSqrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeSqrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeSqrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.java
index 99aed2d..390538a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeTan extends RSBaseCompute {
 
     private ScriptC_TestNativeTan script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeTanFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x62e3c32037b34543l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x37b34543l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeTanFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeTanFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3ee708f9124981cfl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x124981cfl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeTanFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeTanFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3ee8d2140864a2adl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x864a2adl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeTanFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeTanFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3eea9b2efe7fc38bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfe7fc38bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeTanFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeTanFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeTan() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.java
index c2bb0ca..4b18a96 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeTanh extends RSBaseCompute {
 
     private ScriptC_TestNativeTanh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeTanhFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2aa8d7f4ecfeca2fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xecfeca2fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeTanhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeTanhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanhFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1d5a7d4a80bc8e5bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x80bc8e5bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeTanhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeTanhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanhFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1d5c466576d7af39l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x76d7af39l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeTanhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeTanhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanhFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1d5e0f806cf2d017l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6cf2d017l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeTanhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeTanhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeTanh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.java
index c93e6a5..dcf2e608 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNativeTanpi extends RSBaseCompute {
 
     private ScriptC_TestNativeTanpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNativeTanpiFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x88f565b6d39357f6l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd39357f6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNativeTanpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNativeTanpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanpiFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x34465ac4e7b090aal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe7b090aal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNativeTanpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsNativeTanpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanpiFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x344823dfddcbb188l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xddcbb188l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNativeTanpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsNativeTanpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNativeTanpiFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3449ecfad3e6d266l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd3e6d266l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNativeTanpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsNativeTanpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNativeTanpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNativeTanpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNativeTanpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.java
index 932f052..57914c8 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNextafter extends RSBaseCompute {
 
     private ScriptC_TestNextafter script;
@@ -41,8 +43,8 @@
     }
 
     private void checkNextafterFloatFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa3b02393ad412956l, false);
-        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xde8acce6afd7c03dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xad412956l, false);
+        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xafd7c03dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInTarget(inTarget);
@@ -63,11 +65,16 @@
 
     private void verifyResultsNextafterFloatFloatFloat(Allocation inV, Allocation inTarget, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayInTarget = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInTarget, (float) 42);
         inTarget.copyTo(arrayInTarget);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inTarget: ");
-                    appendVariableToMessage(message, args.inTarget);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inTarget: ");
+                        appendVariableToMessage(message, args.inTarget);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNextafterFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNextafterFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNextafterFloat2Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x29b40e0584a1e22l, false);
-        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x68f3a41af7e4d541l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x584a1e22l, false);
+        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf7e4d541l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInTarget(inTarget);
@@ -129,11 +144,16 @@
 
     private void verifyResultsNextafterFloat2Float2Float2(Allocation inV, Allocation inTarget, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayInTarget = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInTarget, (float) 42);
         inTarget.copyTo(arrayInTarget);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inTarget: ");
-                    appendVariableToMessage(message, args.inTarget);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inTarget: ");
+                        appendVariableToMessage(message, args.inTarget);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNextafterFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNextafterFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNextafterFloat3Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x57001f005a281fc3l, false);
-        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3261a1f4e4f910dcl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5a281fc3l, false);
+        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe4f910dcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInTarget(inTarget);
@@ -195,11 +223,16 @@
 
     private void verifyResultsNextafterFloat3Float3Float3(Allocation inV, Allocation inTarget, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayInTarget = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInTarget, (float) 42);
         inTarget.copyTo(arrayInTarget);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inTarget: ");
-                    appendVariableToMessage(message, args.inTarget);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inTarget: ");
+                        appendVariableToMessage(message, args.inTarget);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNextafterFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNextafterFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNextafterFloat4Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xab64fd205c062164l, false);
-        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xfbcf9fced20d4c77l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5c062164l, false);
+        Allocation inTarget = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd20d4c77l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInTarget(inTarget);
@@ -261,11 +302,16 @@
 
     private void verifyResultsNextafterFloat4Float4Float4(Allocation inV, Allocation inTarget, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayInTarget = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInTarget, (float) 42);
         inTarget.copyTo(arrayInTarget);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inTarget: ");
-                    appendVariableToMessage(message, args.inTarget);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inTarget: ");
+                        appendVariableToMessage(message, args.inTarget);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkNextafterFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkNextafterFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNextafter() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.java
index ed233bc..8dd2708 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestNormalize extends RSBaseCompute {
 
     private ScriptC_TestNormalize script;
@@ -40,7 +42,7 @@
     }
 
     private void checkNormalizeFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6db01d449460061cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9460061cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testNormalizeFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsNormalizeFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatFloat args = new ArgumentsFloatFloat();
             // Create the appropriate sized arrays in args
@@ -76,23 +82,29 @@
                 valid = false;
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                message.append("Input inV: ");
-                appendVariableToMessage(message, arrayInV[i]);
-                message.append("\n");
-                message.append("Expected output out: ");
-                appendVariableToMessage(message, args.out);
-                message.append("\n");
-                message.append("Actual   output out: ");
-                appendVariableToMessage(message, arrayOut[i]);
-                if (!args.out.couldBe(arrayOut[i])) {
-                    message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    message.append("Input inV: ");
+                    appendVariableToMessage(message, arrayInV[i]);
+                    message.append("\n");
+                    message.append("Expected output out: ");
+                    appendVariableToMessage(message, args.out);
+                    message.append("\n");
+                    message.append("Actual   output out: ");
+                    appendVariableToMessage(message, arrayOut[i]);
+                    if (!args.out.couldBe(arrayOut[i])) {
+                        message.append(" FAIL");
+                    }
+                    message.append("\n");
+                    message.append("Errors at");
                 }
-                message.append("\n");
-                assertTrue("Incorrect output for checkNormalizeFloatFloat" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNormalizeFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public class ArgumentsFloatNFloatN {
@@ -101,7 +113,7 @@
     }
 
     private void checkNormalizeFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3cde199a6e066120l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6e066120l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testNormalizeFloat2Float2(inV, out);
@@ -120,9 +132,13 @@
 
     private void verifyResultsNormalizeFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -143,31 +159,37 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 2 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 2 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 2 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 2 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkNormalizeFloat2Float2" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNormalizeFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNormalizeFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3cdfe2b5642181fel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x642181fel, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testNormalizeFloat3Float3(inV, out);
@@ -186,9 +208,13 @@
 
     private void verifyResultsNormalizeFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -209,31 +235,37 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 3 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 3 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkNormalizeFloat3Float3" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNormalizeFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkNormalizeFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x3ce1abd05a3ca2dcl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5a3ca2dcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testNormalizeFloat4Float4(inV, out);
@@ -252,9 +284,13 @@
 
     private void verifyResultsNormalizeFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             ArgumentsFloatNFloatN args = new ArgumentsFloatNFloatN();
             // Create the appropriate sized arrays in args
@@ -275,27 +311,33 @@
                 }
             }
             if (!valid) {
-                StringBuilder message = new StringBuilder();
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, arrayInV[i * 4 + j]);
-                    message.append("\n");
-                }
-                for (int j = 0; j < 4 ; j++) {
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out[j]);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                if (!errorFound) {
+                    errorFound = true;
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, arrayInV[i * 4 + j]);
+                        message.append("\n");
                     }
-                    message.append("\n");
+                    for (int j = 0; j < 4 ; j++) {
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out[j]);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out[j].couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                    }
+                    message.append("Errors at");
                 }
-                assertTrue("Incorrect output for checkNormalizeFloat4Float4" +
-                        (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                message.append(" [");
+                message.append(Integer.toString(i));
+                message.append("]");
             }
         }
+        assertFalse("Incorrect output for checkNormalizeFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testNormalize() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.java
index 0990141..296927e 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestPow extends RSBaseCompute {
 
     private ScriptC_TestPow script;
@@ -41,8 +43,8 @@
     }
 
     private void checkPowFloatFloatFloat() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x377b8a6622b91eel, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x8bdde8de49a5f734l, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x622b91eel, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x49a5f734l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -63,11 +65,16 @@
 
     private void verifyResultsPowFloatFloatFloat(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPowFloat2Float2Float2() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x15be0382895c2294l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xeb77bf60bbad35fal, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x895c2294l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xbbad35fal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -129,11 +144,16 @@
 
     private void verifyResultsPowFloat2Float2Float2(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPowFloat3Float3Float3() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xb0a4522671d00807l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc6e63a6212cfb87dl, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x71d00807l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x12cfb87dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -195,11 +223,16 @@
 
     private void verifyResultsPowFloat3Float3Float3(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPowFloat4Float4Float4() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4b8aa0ca5a43ed7al, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xa254b56369f23b00l, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5a43ed7al, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x69f23b00l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -261,11 +302,16 @@
 
     private void verifyResultsPowFloat4Float4Float4(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testPow() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.java
index 28deaa7..5a866f5 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestPown extends RSBaseCompute {
 
     private ScriptC_TestPown script;
@@ -41,8 +43,8 @@
     }
 
     private void checkPownFloatIntFloat() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe020952d622f0405l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x9c3888e9096b9f1bl, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x622f0405l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x96b9f1bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -63,11 +65,16 @@
 
     private void verifyResultsPownFloatIntFloat(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         int[] arrayInExponent = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPownFloatIntFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPownFloatIntFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPownFloat2Int2Float2() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7571c02be438467l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xe6177b3249076ddl, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xbe438467l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x249076ddl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -129,11 +144,16 @@
 
     private void verifyResultsPownFloat2Int2Float2(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         int[] arrayInExponent = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPownFloat2Int2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPownFloat2Int2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPownFloat3Int3Float3() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5e88c45be35ff8a2l, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xaf710734144a81a8l, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe35ff8a2l, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x144a81a8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -195,11 +223,16 @@
 
     private void verifyResultsPownFloat3Int3Float3(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         int[] arrayInExponent = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPownFloat3Int3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPownFloat3Int3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPownFloat4Int4Float4() {
-        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb5ba6cb5087c6cddl, false);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x508096b504048c73l, false);
+        Allocation inBase = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x87c6cddl, false);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x4048c73l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -261,11 +302,16 @@
 
     private void verifyResultsPownFloat4Int4Float4(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         int[] arrayInExponent = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (int) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPownFloat4Int4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPownFloat4Int4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testPown() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.java
index a1fd360..710d89b 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestPowr extends RSBaseCompute {
 
     private ScriptC_TestPowr script;
@@ -41,8 +43,8 @@
     }
 
     private void checkPowrFloatFloatFloat() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x432f9eac0c490ca4l, 0, 3000);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7ee76eaeab21ab0al, false);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc490ca4l, 0, 3000);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xab21ab0al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -63,11 +65,16 @@
 
     private void verifyResultsPowrFloatFloatFloat(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowrFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowrFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPowrFloat2Float2Float2() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x5ce1f4c2eae1fd16l, 0, 3000);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1f9ec14817a9ddcl, false);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xeae1fd16l, 0, 3000);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x817a9ddcl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -129,11 +144,16 @@
 
     private void verifyResultsPowrFloat2Float2Float2(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowrFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowrFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPowrFloat3Float3Float3() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf7c84366d355e289l, 0, 3000);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdd686715d89d205fl, false);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd355e289l, 0, 3000);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd89d205fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -195,11 +223,16 @@
 
     private void verifyResultsPowrFloat3Float3Float3(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowrFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowrFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkPowrFloat4Float4Float4() {
-        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x92ae920abbc9c7fcl, 0, 3000);
-        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb8d6e2172fbfa2e2l, false);
+        Allocation inBase = createRandomFloatAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xbbc9c7fcl, 0, 3000);
+        Allocation inExponent = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2fbfa2e2l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInExponent(inExponent);
@@ -261,11 +302,16 @@
 
     private void verifyResultsPowrFloat4Float4Float4(Allocation inBase, Allocation inExponent, Allocation out, boolean relaxed) {
         float[] arrayInBase = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInBase, (float) 42);
         inBase.copyTo(arrayInBase);
         float[] arrayInExponent = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInExponent, (float) 42);
         inExponent.copyTo(arrayInExponent);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inBase: ");
-                    appendVariableToMessage(message, args.inBase);
-                    message.append("\n");
-                    message.append("Input inExponent: ");
-                    appendVariableToMessage(message, args.inExponent);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inBase: ");
+                        appendVariableToMessage(message, args.inBase);
+                        message.append("\n");
+                        message.append("Input inExponent: ");
+                        appendVariableToMessage(message, args.inExponent);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkPowrFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkPowrFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testPowr() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.java
index cb908be..3dbba71 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestRadians extends RSBaseCompute {
 
     private ScriptC_TestRadians script;
@@ -40,7 +42,7 @@
     }
 
     private void checkRadiansFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x6e5054c0042adfabl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x42adfabl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testRadiansFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsRadiansFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRadiansFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRadiansFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRadiansFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc20ed424de23baf7l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xde23baf7l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testRadiansFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsRadiansFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRadiansFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRadiansFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRadiansFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc2109d3fd43edbd5l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd43edbd5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testRadiansFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsRadiansFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRadiansFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRadiansFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRadiansFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc212665aca59fcb3l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xca59fcb3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testRadiansFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsRadiansFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRadiansFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRadiansFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testRadians() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.java
index 2bd73c5..5bbcc3a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestRemainder extends RSBaseCompute {
 
     private ScriptC_TestRemainder script;
@@ -41,8 +43,8 @@
     }
 
     private void checkRemainderFloatFloatFloat() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd47c3f07317ea229l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb246eb0ee2ebe35al, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x317ea229l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe2ebe35al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -63,11 +65,16 @@
 
     private void verifyResultsRemainderFloatFloatFloat(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRemainderFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemainderFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRemainderFloat2Float2Float2() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x27d975633fdcf8d5l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xce8489f2aa4be3a6l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3fdcf8d5l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xaa4be3a6l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -129,11 +144,16 @@
 
     private void verifyResultsRemainderFloat2Float2Float2(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRemainderFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemainderFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRemainderFloat3Float3Float3() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3681e9ce2a8e4d6l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x97e8cb3b7d2776dfl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe2a8e4d6l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7d2776dfl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -195,11 +223,16 @@
 
     private void verifyResultsRemainderFloat3Float3Float3(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRemainderFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemainderFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRemainderFloat4Float4Float4() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xdef6c7d68574d0d7l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x614d0c8450030a18l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8574d0d7l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x50030a18l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInDenominator(inDenominator);
@@ -261,11 +302,16 @@
 
     private void verifyResultsRemainderFloat4Float4Float4(Allocation inNumerator, Allocation inDenominator, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRemainderFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemainderFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testRemainder() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.java
index 29338d8..d4868a6 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestRemquo extends RSBaseCompute {
 
     private ScriptC_TestRemquo script;
@@ -42,8 +44,8 @@
     }
 
     private void checkRemquoFloatFloatIntFloat() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xcd5efc69edd4ff2al, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4ff0c9312eb19f93l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xedd4ff2al, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x2eb19f93l, false);
         try {
             Allocation outQuotient = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 1), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -68,13 +70,19 @@
 
     private void verifyResultsRemquoFloatFloatIntFloat(Allocation inNumerator, Allocation inDenominator, Allocation outQuotient, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         int[] arrayOutQuotient = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayOutQuotient, (int) 42);
         outQuotient.copyTo(arrayOutQuotient);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -89,30 +97,38 @@
                 String errorMessage = CoreMathVerifier.verifyRemquo(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Output outQuotient: ");
-                    appendVariableToMessage(message, args.outQuotient);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkRemquoFloatFloatIntFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Output outQuotient: ");
+                        appendVariableToMessage(message, args.outQuotient);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemquoFloatFloatIntFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRemquoFloat2Float2Int2Float2() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x28c14abc3a27171al, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x58f8799a6ba08403l, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3a27171al, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6ba08403l, false);
         try {
             Allocation outQuotient = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 2), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -137,13 +153,19 @@
 
     private void verifyResultsRemquoFloat2Float2Int2Float2(Allocation inNumerator, Allocation inDenominator, Allocation outQuotient, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         int[] arrayOutQuotient = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayOutQuotient, (int) 42);
         outQuotient.copyTo(arrayOutQuotient);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -158,30 +180,38 @@
                 String errorMessage = CoreMathVerifier.verifyRemquo(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Output outQuotient: ");
-                    appendVariableToMessage(message, args.outQuotient);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkRemquoFloat2Float2Int2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Output outQuotient: ");
+                        appendVariableToMessage(message, args.outQuotient);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemquoFloat2Float2Int2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRemquoFloat3Float3Int3Float3() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf60211df96052526l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd1d6c7fcf273f8afl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x96052526l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf273f8afl, false);
         try {
             Allocation outQuotient = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 3), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -206,13 +236,19 @@
 
     private void verifyResultsRemquoFloat3Float3Int3Float3(Allocation inNumerator, Allocation inDenominator, Allocation outQuotient, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         int[] arrayOutQuotient = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOutQuotient, (int) 42);
         outQuotient.copyTo(arrayOutQuotient);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -227,30 +263,38 @@
                 String errorMessage = CoreMathVerifier.verifyRemquo(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Output outQuotient: ");
-                    appendVariableToMessage(message, args.outQuotient);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkRemquoFloat3Float3Int3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Output outQuotient: ");
+                        appendVariableToMessage(message, args.outQuotient);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemquoFloat3Float3Int3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRemquoFloat4Float4Int4Float4() {
-        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xc342d902f1e33332l, false);
-        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4ab5165f79476d5bl, false);
+        Allocation inNumerator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf1e33332l, false);
+        Allocation inDenominator = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x79476d5bl, false);
         try {
             Allocation outQuotient = Allocation.createSized(mRS, getElement(mRS, Element.DataType.SIGNED_32, 4), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -275,13 +319,19 @@
 
     private void verifyResultsRemquoFloat4Float4Int4Float4(Allocation inNumerator, Allocation inDenominator, Allocation outQuotient, Allocation out, boolean relaxed) {
         float[] arrayInNumerator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInNumerator, (float) 42);
         inNumerator.copyTo(arrayInNumerator);
         float[] arrayInDenominator = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInDenominator, (float) 42);
         inDenominator.copyTo(arrayInDenominator);
         int[] arrayOutQuotient = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayOutQuotient, (int) 42);
         outQuotient.copyTo(arrayOutQuotient);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -296,25 +346,33 @@
                 String errorMessage = CoreMathVerifier.verifyRemquo(args, target);
                 boolean valid = errorMessage == null;
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inNumerator: ");
-                    appendVariableToMessage(message, args.inNumerator);
-                    message.append("\n");
-                    message.append("Input inDenominator: ");
-                    appendVariableToMessage(message, args.inDenominator);
-                    message.append("\n");
-                    message.append("Output outQuotient: ");
-                    appendVariableToMessage(message, args.outQuotient);
-                    message.append("\n");
-                    message.append("Output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append(errorMessage);
-                    assertTrue("Incorrect output for checkRemquoFloat4Float4Int4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inNumerator: ");
+                        appendVariableToMessage(message, args.inNumerator);
+                        message.append("\n");
+                        message.append("Input inDenominator: ");
+                        appendVariableToMessage(message, args.inDenominator);
+                        message.append("\n");
+                        message.append("Output outQuotient: ");
+                        appendVariableToMessage(message, args.outQuotient);
+                        message.append("\n");
+                        message.append("Output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append(errorMessage);
+                        message.append("Errors at");
+                    }
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRemquoFloat4Float4Int4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testRemquo() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.java
index 975f321..1c22e95 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestRint extends RSBaseCompute {
 
     private ScriptC_TestRint script;
@@ -40,7 +42,7 @@
     }
 
     private void checkRintFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb88cd9adbf02db54l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbf02db54l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testRintFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsRintFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRintFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRintFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRintFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xf12aed2f601c6298l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x601c6298l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testRintFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsRintFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRintFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRintFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRintFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf12cb64a56378376l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x56378376l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testRintFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsRintFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRintFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRintFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRintFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xf12e7f654c52a454l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4c52a454l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testRintFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsRintFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRintFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRintFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testRint() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.java
index 1d7a628..5403dda 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestRootn extends RSBaseCompute {
 
     private ScriptC_TestRootn script;
@@ -41,8 +43,8 @@
     }
 
     private void checkRootnFloatIntFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x37d0d9514daae0ccl, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x37d0d9514daae0c4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4daae0ccl, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 1, 0x4daae0c4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -63,11 +65,16 @@
 
     private void verifyResultsRootnFloatIntFloat(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 1];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRootnFloatIntFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRootnFloatIntFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRootnFloat2Int2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2a7a849dcb32d88el, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0x2a7a849dcb32d886l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xcb32d88el, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 2, 0xcb32d886l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -129,11 +144,16 @@
 
     private void verifyResultsRootnFloat2Int2Float2(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 2];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRootnFloat2Int2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRootnFloat2Int2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRootnFloat3Int3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5030c300c0e54547l, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0x5030c300c0e5453fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc0e54547l, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 3, 0xc0e5453fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -195,11 +223,16 @@
 
     private void verifyResultsRootnFloat3Int3Float3(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRootnFloat3Int3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRootnFloat3Int3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRootnFloat4Int4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x75e70163b697b200l, false);
-        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0x75e70163b697b1f8l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xb697b200l, false);
+        Allocation inN = createRandomAllocation(mRS, Element.DataType.SIGNED_32, 4, 0xb697b1f8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInN(inN);
@@ -261,11 +302,16 @@
 
     private void verifyResultsRootnFloat4Int4Float4(Allocation inV, Allocation inN, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         int[] arrayInN = new int[INPUTSIZE * 4];
+        Arrays.fill(arrayInN, (int) 42);
         inN.copyTo(arrayInN);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,27 +327,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Input inN: ");
-                    appendVariableToMessage(message, args.inN);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Input inN: ");
+                        appendVariableToMessage(message, args.inN);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRootnFloat4Int4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRootnFloat4Int4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testRootn() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.java
index 60bf608..3fde559 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestRound extends RSBaseCompute {
 
     private ScriptC_TestRound script;
@@ -40,7 +42,7 @@
     }
 
     private void checkRoundFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x51f05c443f4006c3l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x3f4006c3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testRoundFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsRoundFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRoundFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRoundFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRoundFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xd0e51e3399eb174fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x99eb174fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testRoundFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsRoundFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRoundFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRoundFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRoundFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xd0e6e74e9006382dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9006382dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testRoundFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsRoundFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRoundFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRoundFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRoundFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xd0e8b0698621590bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8621590bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testRoundFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsRoundFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRoundFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRoundFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testRound() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.java
index b44c4e9..b4c3e23 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestRsqrt extends RSBaseCompute {
 
     private ScriptC_TestRsqrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkRsqrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x637c4873aa3f3b8fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xaa3f3b8fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testRsqrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsRsqrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRsqrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRsqrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRsqrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8c8200af672f6cbbl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x672f6cbbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testRsqrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsRsqrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRsqrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRsqrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRsqrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8c83c9ca5d4a8d99l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x5d4a8d99l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testRsqrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsRsqrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRsqrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRsqrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkRsqrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8c8592e55365ae77l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x5365ae77l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testRsqrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsRsqrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkRsqrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkRsqrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testRsqrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.java
index 7e5d7e6..d3f12fe 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestSign extends RSBaseCompute {
 
     private ScriptC_TestSign script;
@@ -40,7 +42,7 @@
     }
 
     private void checkSignFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xadc8bc2f364ea474l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x364ea474l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testSignFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsSignFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSignFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSignFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSignFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x2eb1e646027c0ab8l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x27c0ab8l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testSignFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsSignFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSignFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSignFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSignFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x2eb3af60f8972b96l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xf8972b96l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testSignFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsSignFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSignFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSignFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSignFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2eb5787beeb24c74l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xeeb24c74l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testSignFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsSignFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSignFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSignFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testSign() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.java
index 80318a8..6acf220 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestSin extends RSBaseCompute {
 
     private ScriptC_TestSin script;
@@ -40,7 +42,7 @@
     }
 
     private void checkSinFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x983d81dfe3401d29l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe3401d29l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testSinFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsSinFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x9419bf571e8cde05l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x1e8cde05l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testSinFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsSinFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x941b887214a7fee3l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x14a7fee3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testSinFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsSinFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x941d518d0ac31fc1l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xac31fc1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testSinFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsSinFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testSin() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.java
index f238e8b..64d71d4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestSincos extends RSBaseCompute {
 
     private ScriptC_TestSincos script;
@@ -41,7 +43,7 @@
     }
 
     private void checkSincosFloatFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb8748e13e46c48d4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xe46c48d4l, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
@@ -64,11 +66,16 @@
 
     private void verifyResultsSincosFloatFloatFloat(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -86,37 +93,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 1 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 1 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSincosFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSincosFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSincosFloat2Float2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xc85bab4e3e2fc77cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3e2fc77cl, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
@@ -139,11 +154,16 @@
 
     private void verifyResultsSincosFloat2Float2Float2(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -161,37 +181,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 2 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 2 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSincosFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSincosFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSincosFloat3Float3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x1cc0896e400dc91dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x400dc91dl, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
@@ -214,11 +242,16 @@
 
     private void verifyResultsSincosFloat3Float3Float3(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -236,37 +269,45 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSincosFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSincosFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSincosFloat4Float4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7125678e41ebcabel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x41ebcabel, false);
         try {
             Allocation outCos = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
@@ -289,11 +330,16 @@
 
     private void verifyResultsSincosFloat4Float4Float4(Allocation inV, Allocation outCos, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOutCos = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOutCos, (float) 42);
         outCos.copyTo(arrayOutCos);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -311,33 +357,41 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output outCos: ");
-                    appendVariableToMessage(message, args.outCos);
-                    message.append("\n");
-                    message.append("Actual   output outCos: ");
-                    appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
-                    if (!args.outCos.couldBe(arrayOutCos[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output outCos: ");
+                        appendVariableToMessage(message, args.outCos);
+                        message.append("\n");
+                        message.append("Actual   output outCos: ");
+                        appendVariableToMessage(message, arrayOutCos[i * 4 + j]);
+                        if (!args.outCos.couldBe(arrayOutCos[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
-                    }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSincosFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSincosFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testSincos() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.java
index 9adf1c8..20148d4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestSinh extends RSBaseCompute {
 
     private ScriptC_TestSinh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkSinhFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x20bbe226bda70dd1l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbda70dd1l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testSinhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsSinhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinhFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6cdf1f16900d0b6dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x900d0b6dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testSinhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsSinhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinhFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x6ce0e83186282c4bl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x86282c4bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testSinhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsSinhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinhFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x6ce2b14c7c434d29l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x7c434d29l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testSinhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsSinhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testSinh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.java
index f00e45f..61c1d24 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestSinpi extends RSBaseCompute {
 
     private ScriptC_TestSinpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkSinpiFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xde281c14dfd6b42cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdfd6b42cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testSinpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsSinpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinpiFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8f8d880b7a3592b0l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7a3592b0l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testSinpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsSinpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinpiFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8f8f51267050b38el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x7050b38el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testSinpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsSinpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSinpiFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8f911a41666bd46cl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x666bd46cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testSinpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsSinpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSinpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSinpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testSinpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.java
index fbb4e6d..cbb092d 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestSqrt extends RSBaseCompute {
 
     private ScriptC_TestSqrt script;
@@ -40,7 +42,7 @@
     }
 
     private void checkSqrtFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xdd88d60ed07c9951l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xd07c9951l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testSqrtFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsSqrtFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSqrtFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSqrtFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSqrtFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x112cc64698699aedl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x98699aedl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testSqrtFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsSqrtFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSqrtFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSqrtFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSqrtFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x112e8f618e84bbcbl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8e84bbcbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testSqrtFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsSqrtFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSqrtFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSqrtFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkSqrtFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1130587c849fdca9l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x849fdca9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testSqrtFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsSqrtFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkSqrtFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkSqrtFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testSqrt() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.java
index ee2b785..097a093 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestStep extends RSBaseCompute {
 
     private ScriptC_TestStep script;
@@ -41,8 +43,8 @@
     }
 
     private void checkStepFloatFloatFloat() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x598900c49184fbfel, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9aefccaa832f44e9l, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9184fbfel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x832f44e9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -63,11 +65,16 @@
 
     private void verifyResultsStepFloatFloatFloat(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -83,32 +90,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloatFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloatFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloat2Float2Float2() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x6efefa297df69504l, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x12eb000b8567f58bl, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x7df69504l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8567f58bl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -129,11 +144,16 @@
 
     private void verifyResultsStepFloat2Float2Float2(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -149,32 +169,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloat2Float2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloat2Float2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloat3Float3Float3() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x9e548cd666a7a77l, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x674fde2b8745f72cl, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x666a7a77l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8745f72cl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -195,11 +223,16 @@
 
     private void verifyResultsStepFloat3Float3Float3(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -215,32 +248,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloat3Float3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloat3Float3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloat4Float4Float4() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xa4cb97714ede5feal, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xbbb4bc4b8923f8cdl, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x4ede5feal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8923f8cdl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -261,11 +302,16 @@
 
     private void verifyResultsStepFloat4Float4Float4(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -281,32 +327,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloat4Float4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloat4Float4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloat2FloatFloat2() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb0ac06c45b3d8b26l, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xfa7d66f2b6d48a21l, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x5b3d8b26l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb6d48a21l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -327,11 +381,16 @@
 
     private void verifyResultsStepFloat2FloatFloat2(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -347,32 +406,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloat2FloatFloat2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloat2FloatFloat2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloat3FloatFloat3() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x304ed837c68f43fal, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4fcd1a0aa53f7e7dl, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xc68f43fal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa53f7e7dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -393,11 +460,16 @@
 
     private void verifyResultsStepFloat3FloatFloat3(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -413,32 +485,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloat3FloatFloat3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloat3FloatFloat3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloat4FloatFloat4() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xaff1a9ab31e0fccel, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xa51ccd2293aa72d9l, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x31e0fccel, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x93aa72d9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -459,11 +539,16 @@
 
     private void verifyResultsStepFloat4FloatFloat4(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -479,32 +564,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloat4FloatFloat4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloat4FloatFloat4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloatFloat2Float2() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x70a0554e664b1852l, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xdd7f0d444e2f7c5l, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x664b1852l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x44e2f7c5l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -525,11 +618,16 @@
 
     private void verifyResultsStepFloatFloat2Float2(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -545,32 +643,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloatFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloatFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloatFloat3Float3() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x9b2d75ce91abcbccl, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xdd9b9ef3afe18a3l, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x91abcbccl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3afe18a3l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -591,11 +697,16 @@
 
     private void verifyResultsStepFloatFloat3Float3(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -611,32 +722,40 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloatFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloatFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkStepFloatFloat4Float4() {
-        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xc5ba964ebd0c7f46l, false);
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xddb830a31193981l, false);
+        Allocation inEdge = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xbd0c7f46l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x31193981l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.set_gAllocInV(inV);
@@ -657,11 +776,16 @@
 
     private void verifyResultsStepFloatFloat4Float4(Allocation inEdge, Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInEdge = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInEdge, (float) 42);
         inEdge.copyTo(arrayInEdge);
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -677,27 +801,35 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inEdge: ");
-                    appendVariableToMessage(message, args.inEdge);
-                    message.append("\n");
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inEdge: ");
+                        appendVariableToMessage(message, args.inEdge);
+                        message.append("\n");
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkStepFloatFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkStepFloatFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testStep() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.java
index b69ee28..908ca59 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestTan extends RSBaseCompute {
 
     private ScriptC_TestTan script;
@@ -40,7 +42,7 @@
     }
 
     private void checkTanFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4222fe257bb50fa4l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x7bb50fa4l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testTanFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsTanFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xae98520143383868l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x43383868l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testTanFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsTanFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xae9a1b1c39535946l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x39535946l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testTanFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsTanFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xae9be4372f6e7a24l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x2f6e7a24l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testTanFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsTanFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testTan() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.java
index c4ee08a..842c402 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestTanh extends RSBaseCompute {
 
     private ScriptC_TestTanh script;
@@ -40,7 +42,7 @@
     }
 
     private void checkTanhFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xaa47c1d7594bc87al, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x594bc87al, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testTanhFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsTanhFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanhFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanhFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanhFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xe021c1aab8d53a0el, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xb8d53a0el, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testTanhFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsTanhFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanhFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanhFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanhFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xe0238ac5aef05aecl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xaef05aecl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testTanhFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsTanhFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanhFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanhFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanhFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xe02553e0a50b7bcal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xa50b7bcal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testTanhFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsTanhFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanhFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanhFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testTanh() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.java
index dd6a383..13be7d9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestTanpi extends RSBaseCompute {
 
     private ScriptC_TestTanpi script;
@@ -40,7 +42,7 @@
     }
 
     private void checkTanpiFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xf8a6aebf04820e8fl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x4820e8fl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testTanpiFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsTanpiFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanpiFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanpiFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanpiFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0xebbed6ee53d567bbl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x53d567bbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testTanpiFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsTanpiFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanpiFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanpiFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanpiFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0xebc0a00949f08899l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x49f08899l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testTanpiFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsTanpiFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanpiFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanpiFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTanpiFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0xebc26924400ba977l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x400ba977l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testTanpiFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsTanpiFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTanpiFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTanpiFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testTanpi() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.java
index ea25ef1..cd11dc9 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestTgamma extends RSBaseCompute {
 
     private ScriptC_TestTgamma script;
@@ -40,7 +42,7 @@
     }
 
     private void checkTgammaFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x5c02c6a0eda55486l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xeda55486l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testTgammaFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsTgammaFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTgammaFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTgammaFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTgammaFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8fe7559b3399bcbal, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x3399bcbal, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testTgammaFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsTgammaFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTgammaFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTgammaFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTgammaFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8fe91eb629b4dd98l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x29b4dd98l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testTgammaFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsTgammaFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTgammaFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTgammaFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTgammaFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8feae7d11fcffe76l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x1fcffe76l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testTgammaFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsTgammaFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTgammaFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTgammaFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testTgamma() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.java b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.java
index ac44fb1..e29de2c 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.java
@@ -22,6 +22,8 @@
 import android.renderscript.RSRuntimeException;
 import android.renderscript.Element;
 
+import java.util.Arrays;
+
 public class TestTrunc extends RSBaseCompute {
 
     private ScriptC_TestTrunc script;
@@ -40,7 +42,7 @@
     }
 
     private void checkTruncFloatFloat() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0xb16f216b11eebe01l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 1, 0x11eebe01l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 1), INPUTSIZE);
             script.forEach_testTruncFloatFloat(inV, out);
@@ -59,9 +61,13 @@
 
     private void verifyResultsTruncFloatFloat(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 1];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 1 ; j++) {
                 // Extract the inputs.
@@ -76,28 +82,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 1 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 1 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 1 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 1 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTruncFloatFloat" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTruncFloatFloat" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTruncFloat2Float2() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x8b83139b49d4961dl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 2, 0x49d4961dl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 2), INPUTSIZE);
             script.forEach_testTruncFloat2Float2(inV, out);
@@ -116,9 +130,13 @@
 
     private void verifyResultsTruncFloat2Float2(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 2];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 2 ; j++) {
                 // Extract the inputs.
@@ -133,28 +151,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 2 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 2 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 2 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 2 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTruncFloat2Float2" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTruncFloat2Float2" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTruncFloat3Float3() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x8b84dcb63fefb6fbl, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 3, 0x3fefb6fbl, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 3), INPUTSIZE);
             script.forEach_testTruncFloat3Float3(inV, out);
@@ -173,9 +199,13 @@
 
     private void verifyResultsTruncFloat3Float3(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 3 ; j++) {
                 // Extract the inputs.
@@ -190,28 +220,36 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTruncFloat3Float3" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTruncFloat3Float3" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     private void checkTruncFloat4Float4() {
-        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x8b86a5d1360ad7d9l, false);
+        Allocation inV = createRandomAllocation(mRS, Element.DataType.FLOAT_32, 4, 0x360ad7d9l, false);
         try {
             Allocation out = Allocation.createSized(mRS, getElement(mRS, Element.DataType.FLOAT_32, 4), INPUTSIZE);
             script.forEach_testTruncFloat4Float4(inV, out);
@@ -230,9 +268,13 @@
 
     private void verifyResultsTruncFloat4Float4(Allocation inV, Allocation out, boolean relaxed) {
         float[] arrayInV = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayInV, (float) 42);
         inV.copyTo(arrayInV);
         float[] arrayOut = new float[INPUTSIZE * 4];
+        Arrays.fill(arrayOut, (float) 42);
         out.copyTo(arrayOut);
+        StringBuilder message = new StringBuilder();
+        boolean errorFound = false;
         for (int i = 0; i < INPUTSIZE; i++) {
             for (int j = 0; j < 4 ; j++) {
                 // Extract the inputs.
@@ -247,24 +289,32 @@
                     valid = false;
                 }
                 if (!valid) {
-                    StringBuilder message = new StringBuilder();
-                    message.append("Input inV: ");
-                    appendVariableToMessage(message, args.inV);
-                    message.append("\n");
-                    message.append("Expected output out: ");
-                    appendVariableToMessage(message, args.out);
-                    message.append("\n");
-                    message.append("Actual   output out: ");
-                    appendVariableToMessage(message, arrayOut[i * 4 + j]);
-                    if (!args.out.couldBe(arrayOut[i * 4 + j])) {
-                        message.append(" FAIL");
+                    if (!errorFound) {
+                        errorFound = true;
+                        message.append("Input inV: ");
+                        appendVariableToMessage(message, args.inV);
+                        message.append("\n");
+                        message.append("Expected output out: ");
+                        appendVariableToMessage(message, args.out);
+                        message.append("\n");
+                        message.append("Actual   output out: ");
+                        appendVariableToMessage(message, arrayOut[i * 4 + j]);
+                        if (!args.out.couldBe(arrayOut[i * 4 + j])) {
+                            message.append(" FAIL");
+                        }
+                        message.append("\n");
+                        message.append("Errors at");
                     }
-                    message.append("\n");
-                    assertTrue("Incorrect output for checkTruncFloat4Float4" +
-                            (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), valid);
+                    message.append(" [");
+                    message.append(Integer.toString(i));
+                    message.append(", ");
+                    message.append(Integer.toString(j));
+                    message.append("]");
                 }
             }
         }
+        assertFalse("Incorrect output for checkTruncFloat4Float4" +
+                (relaxed ? "_relaxed" : "") + ":\n" + message.toString(), errorFound);
     }
 
     public void testTrunc() {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/kernel_input.rs b/tests/tests/renderscript/src/android/renderscript/cts/kernel_input.rs
new file mode 100644
index 0000000..2eaca92
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/kernel_input.rs
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 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.
+ */
+
+
+#pragma version(1)
+#pragma rs java_package_name(foo)
+
+#include "shared.rsh"
+
+static bool failed = false;
+
+/*
+ * This checks that modifications to input arguments done by a kernel
+ * are never reflected back to the input Allocation. In order to do
+ * this, we create kernels that modify their input arguments (the
+ * clear_input_* kernels).
+ *
+ * When the kernels modify their input arguments, these modifications
+ * should not be visible in the underlying Allocation. The
+ * verify_input_* functions can be passed the same Allocation that was
+ * used as an in input to a clear_input_* kernel. The verify_input_*
+ * functions check their input against a global variable.
+ */
+
+// For clear_input_* kernels, we use a volatile qualified input argument
+// to try to inhibit any optimizations that would result in the write to
+// the input argument being optimized out by the compiler.
+
+#define COMMON_TEST_CODE(type)                           \
+  type initial_value_##type;                             \
+  type RS_KERNEL clear_input_##type(volatile type in) {  \
+    rsDebug(#type, in);                                  \
+    in -= in;                                            \
+    rsDebug(#type, in);                                  \
+    return in;                                           \
+  }
+
+#define SCALAR_TEST(type)                         \
+  COMMON_TEST_CODE(type)                          \
+  void verify_input_##type(rs_allocation alloc) { \
+    type elem = rsGetElementAt_##type(alloc, 0);  \
+    _RS_ASSERT(elem == initial_value_##type);     \
+  }
+
+#define VEC2_TEST(type)                             \
+  COMMON_TEST_CODE(type)                            \
+  void verify_input_##type(rs_allocation alloc) {   \
+    type elem = rsGetElementAt_##type(alloc, 0);    \
+    _RS_ASSERT(elem[0] == initial_value_##type[0]); \
+    _RS_ASSERT(elem[1] == initial_value_##type[1]); \
+  }
+
+#define VEC3_TEST(type)                             \
+  COMMON_TEST_CODE(type)                            \
+  void verify_input_##type(rs_allocation alloc) {   \
+    type elem = rsGetElementAt_##type(alloc, 0);    \
+    _RS_ASSERT(elem[0] == initial_value_##type[0]); \
+    _RS_ASSERT(elem[1] == initial_value_##type[1]); \
+    _RS_ASSERT(elem[2] == initial_value_##type[2]); \
+  }
+
+#define VEC4_TEST(type)                             \
+  COMMON_TEST_CODE(type)                            \
+  void verify_input_##type(rs_allocation alloc) {   \
+    type elem = rsGetElementAt_##type(alloc, 0);    \
+    _RS_ASSERT(elem[0] == initial_value_##type[0]); \
+    _RS_ASSERT(elem[1] == initial_value_##type[1]); \
+    _RS_ASSERT(elem[2] == initial_value_##type[2]); \
+    _RS_ASSERT(elem[3] == initial_value_##type[3]); \
+  }
+
+SCALAR_TEST(char)
+
+VEC2_TEST(char2)
+
+VEC3_TEST(char3)
+
+VEC4_TEST(char4)
+
+SCALAR_TEST(double)
+
+VEC2_TEST(double2)
+
+VEC3_TEST(double3)
+
+VEC4_TEST(double4)
+
+SCALAR_TEST(float)
+
+VEC2_TEST(float2)
+
+VEC3_TEST(float3)
+
+VEC4_TEST(float4)
+
+SCALAR_TEST(int)
+
+VEC2_TEST(int2)
+
+VEC3_TEST(int3)
+
+VEC4_TEST(int4)
+
+SCALAR_TEST(long)
+
+VEC2_TEST(long2)
+
+VEC3_TEST(long3)
+
+VEC4_TEST(long4)
+
+SCALAR_TEST(short)
+
+VEC2_TEST(short2)
+
+VEC3_TEST(short3)
+
+VEC4_TEST(short4)
+
+SCALAR_TEST(uchar)
+
+VEC2_TEST(uchar2)
+
+VEC3_TEST(uchar3)
+
+VEC4_TEST(uchar4)
+
+SCALAR_TEST(uint)
+
+VEC2_TEST(uint2)
+
+VEC3_TEST(uint3)
+
+VEC4_TEST(uint4)
+
+SCALAR_TEST(ulong)
+
+VEC2_TEST(ulong2)
+
+VEC3_TEST(ulong3)
+
+VEC4_TEST(ulong4)
+
+SCALAR_TEST(ushort)
+
+VEC2_TEST(ushort2)
+
+VEC3_TEST(ushort3)
+
+VEC4_TEST(ushort4)
+
+typedef struct small {
+  int x[1];
+} small;
+
+typedef struct big {
+  int x[100];
+} big;
+
+small initial_value_small;
+
+// See comment on volatile above.
+small RS_KERNEL clear_input_small(volatile small in) {
+  rsDebug("in.x", in.x[0]);
+  in.x[0] = 0;
+  rsDebug("in.x", in.x[0]);
+  return in;
+}
+
+void verify_input_small(rs_allocation alloc) {
+  const small *elem = (const small *) rsGetElementAt(alloc, 0);
+  _RS_ASSERT(elem->x[0] == initial_value_small.x[0]);
+}
+
+big initial_value_big;
+
+// See comment on volatile above.
+big RS_KERNEL clear_input_big(volatile big in) {
+  for (size_t i = 0; i < 100; ++i) {
+    rsDebug("in.x", in.x[i]);
+    in.x[i] = 0;
+    rsDebug("in.x", in.x[i]);
+  }
+  return in;
+}
+
+void verify_input_big(rs_allocation alloc) {
+  const big *elem = (const big *) rsGetElementAt(alloc, 0);
+  for (size_t i = 0; i < 100; ++i) {
+    _RS_ASSERT(elem->x[i] == initial_value_big.x[i]);
+  }
+}
+
+void checkError() {
+  if (failed) {
+    rsSendToClientBlocking(RS_MSG_TEST_FAILED);
+  } else {
+    rsSendToClientBlocking(RS_MSG_TEST_PASSED);
+  }
+}
diff --git a/tests/tests/rscpp/librscpptest/Android.mk b/tests/tests/rscpp/librscpptest/Android.mk
index 65a5e2a..df8ce29f 100644
--- a/tests/tests/rscpp/librscpptest/Android.mk
+++ b/tests/tests/rscpp/librscpptest/Android.mk
@@ -38,7 +38,8 @@
     clear_object.rs \
     foreach.rs \
     fe_all.rs \
-    noroot.rs
+    noroot.rs \
+    vector.rs
 
 LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
 LOCAL_C_INCLUDES += frameworks/rs/cpp
diff --git a/tests/tests/rscpp/librscpptest/rs_jni.cpp b/tests/tests/rscpp/librscpptest/rs_jni.cpp
index b362c99..4e60f4b 100644
--- a/tests/tests/rscpp/librscpptest/rs_jni.cpp
+++ b/tests/tests/rscpp/librscpptest/rs_jni.cpp
@@ -24,8 +24,7 @@
 #include <RenderScript.h>
 
 #define  LOG_TAG    "rscpptest"
-#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
-#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
+#define  LOGV(...)  __android_log_print(ANDROID_LOG_VERBOSE,LOG_TAG,__VA_ARGS__)
 
 using namespace android::RSC;
 
@@ -72,7 +71,7 @@
     for (int i = 0; i < 1000; i++) {
         sp<RS> rs = new RS();
         r &= rs->init(path);
-        LOGE("Native iteration %i, returned %i", i, (int)r);
+        LOGV("Native iteration %i, returned %i", i, (int)r);
     }
     env->ReleaseStringUTFChars(pathObj, path);
     return r;
diff --git a/tests/tests/rscpp/librscpptest/rs_jni_script.cpp b/tests/tests/rscpp/librscpptest/rs_jni_script.cpp
index fd31112..1888341 100644
--- a/tests/tests/rscpp/librscpptest/rs_jni_script.cpp
+++ b/tests/tests/rscpp/librscpptest/rs_jni_script.cpp
@@ -29,6 +29,7 @@
 
 #include <ScriptC_primitives.h>
 #include <ScriptC_instance.h>
+#include <ScriptC_vector.h>
 
 using namespace android::RSC;
 
@@ -134,3 +135,50 @@
     return passed;
 }
 
+// Define some reasonable types for use with the vector invoke testing.
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+typedef unsigned long ulong;
+
+#define TEST_VECTOR_INVOKE(L, U) \
+L temp_##L = 0; \
+vector->invoke_vector_test_##L(temp_##L); \
+U##2 temp_##L##2; \
+vector->invoke_vector_test_##L##2(temp_##L##2); \
+U##3 temp_##L##3; \
+vector->invoke_vector_test_##L##3(temp_##L##3); \
+U##4 temp_##L##4; \
+vector->invoke_vector_test_##L##4(temp_##L##4);
+
+
+/*
+ * Test that vector invoke C++ reflection is working/present.
+ */
+extern "C" JNIEXPORT jboolean JNICALL Java_android_cts_rscpp_RSScriptTest_testVector(JNIEnv * env,
+                                                                                     jclass obj,
+                                                                                     jstring pathObj)
+{
+    const char * path = env->GetStringUTFChars(pathObj, nullptr);
+    sp<RS> mRS = new RS();
+    mRS->init(path);
+    env->ReleaseStringUTFChars(pathObj, path);
+    MessageHandlerFunc_t mHandler = rsMsgHandler;
+    mRS->setMessageHandler(mHandler);
+
+    bool passed = true;
+    sp<ScriptC_vector> vector = new ScriptC_vector(mRS);
+
+    TEST_VECTOR_INVOKE(float, Float)
+    TEST_VECTOR_INVOKE(double, Double)
+    TEST_VECTOR_INVOKE(char, Byte)
+    TEST_VECTOR_INVOKE(uchar, UByte)
+    TEST_VECTOR_INVOKE(short, Short)
+    TEST_VECTOR_INVOKE(ushort, UShort)
+    TEST_VECTOR_INVOKE(int, Int)
+    TEST_VECTOR_INVOKE(uint, UInt)
+    TEST_VECTOR_INVOKE(long, Long)
+    TEST_VECTOR_INVOKE(ulong, ULong)
+
+    return passed;
+}
diff --git a/tests/tests/rscpp/librscpptest/vector.rs b/tests/tests/rscpp/librscpptest/vector.rs
new file mode 100644
index 0000000..cdea9b8
--- /dev/null
+++ b/tests/tests/rscpp/librscpptest/vector.rs
@@ -0,0 +1,19 @@
+#include "shared.rsh"
+
+#define MAKE_TEST(T) \
+void vector_test_##T(T t) {} \
+void vector_test_##T##2(T##2 t) {} \
+void vector_test_##T##3(T##3 t) {} \
+void vector_test_##T##4(T##4 t) {} \
+
+MAKE_TEST(float)
+MAKE_TEST(double)
+MAKE_TEST(char)
+MAKE_TEST(uchar)
+MAKE_TEST(short)
+MAKE_TEST(ushort)
+MAKE_TEST(int)
+MAKE_TEST(uint)
+MAKE_TEST(long)
+MAKE_TEST(ulong)
+
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSResizeTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSResizeTest.java
index 51ae26e..6826b59 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSResizeTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSResizeTest.java
@@ -86,6 +86,7 @@
         } else {
             rsCppOutput.copyFromUnchecked(nativeFloatAlloc);
         }
+        mVerify.set_image_tolerance(0.04f); // Kept loose till a better test designed
         mVerify.invoke_verify(rsOutput, rsCppOutput, rsInput);
         checkForErrors();
     }
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/RSScriptTest.java b/tests/tests/rscpp/src/android/cts/rscpp/RSScriptTest.java
index 72f4a17..fe45b33 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/RSScriptTest.java
+++ b/tests/tests/rscpp/src/android/cts/rscpp/RSScriptTest.java
@@ -36,4 +36,9 @@
     public void testRSScriptTestInstance() {
         assertTrue(testInstance(this.getContext().getCacheDir().toString()));
     }
+
+    native boolean testVector(String path);
+    public void testRSScriptTestVector() {
+        assertTrue(testVector(this.getContext().getCacheDir().toString()));
+    }
 }
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/verify.rs b/tests/tests/rscpp/src/android/cts/rscpp/verify.rs
index 7fd44d3..700b9d5 100644
--- a/tests/tests/rscpp/src/android/cts/rscpp/verify.rs
+++ b/tests/tests/rscpp/src/android/cts/rscpp/verify.rs
@@ -24,10 +24,10 @@
 int gAllowedIntError = 0;
 static bool hadError = false;
 static int2 errorLoc = {0,0};
-
+float image_tolerance = 0.0001f;
 
 static bool compare_float(float f1, float f2) {
-    if (fabs(f1-f2) > 0.0001f) {
+    if (fabs(f1-f2) > image_tolerance) {
         hadError = true;
         return false;
     }
diff --git a/tests/tests/security/jni/android_security_cts_AudioPolicyBinderTest.cpp b/tests/tests/security/jni/android_security_cts_AudioPolicyBinderTest.cpp
index d9c7ce7..6807523 100644
--- a/tests/tests/security/jni/android_security_cts_AudioPolicyBinderTest.cpp
+++ b/tests/tests/security/jni/android_security_cts_AudioPolicyBinderTest.cpp
@@ -151,11 +151,12 @@
         return false;
     }
 
-    if (aps->isStreamActive((audio_stream_type_t)(AUDIO_STREAM_MIN -1), 0)) {
+    status_t status = aps->isStreamActive((audio_stream_type_t)(-1), 0);
+    if (status == NO_ERROR) {
         return false;
     }
-
-    if (aps->isStreamActive((audio_stream_type_t)AUDIO_STREAM_CNT, 0)) {
+    status = aps->isStreamActive((audio_stream_type_t)AUDIO_STREAM_CNT, 0);
+    if (status == NO_ERROR) {
         return false;
     }
     return true;
diff --git a/tests/tests/telecom/AndroidManifest.xml b/tests/tests/telecom/AndroidManifest.xml
index 6e9e675..b57e0b6 100644
--- a/tests/tests/telecom/AndroidManifest.xml
+++ b/tests/tests/telecom/AndroidManifest.xml
@@ -20,11 +20,19 @@
     <uses-permission android:name="android.permission.CALL_PHONE" />>
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
     <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
 
     <application>
         <uses-library android:name="android.test.runner" />
 
+        <service android:name="android.telecom.cts.CtsRemoteConnectionService"
+            android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE" >
+            <intent-filter>
+                <action android:name="android.telecom.ConnectionService" />
+            </intent-filter>
+        </service>
+
         <service android:name="android.telecom.cts.CtsConnectionService"
             android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE" >
             <intent-filter>
diff --git a/tests/tests/telecom/src/android/telecom/cts/BaseRemoteTelecomTest.java b/tests/tests/telecom/src/android/telecom/cts/BaseRemoteTelecomTest.java
new file mode 100644
index 0000000..52c8317
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/BaseRemoteTelecomTest.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import static android.telecom.cts.TestUtils.*;
+
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+import android.content.ComponentName;
+import android.telecom.Connection;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConference;
+import android.telecom.RemoteConnection;
+import android.text.TextUtils;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Base class for Telecom CTS tests that require a {@link CtsConnectionService} and
+ * {@link CtsRemoteConnectionService} to verify Telecom functionality. This class
+ * extends from the {@link BaseTelecomTestWithMockServices} and should be extended
+ * for all RemoteConnection/RemoteConferencTest.
+ */
+public class BaseRemoteTelecomTest extends BaseTelecomTestWithMockServices {
+
+    public static final PhoneAccountHandle TEST_REMOTE_PHONE_ACCOUNT_HANDLE =
+            new PhoneAccountHandle(new ComponentName(PACKAGE, REMOTE_COMPONENT), REMOTE_ACCOUNT_ID);
+    public static final String TEST_REMOTE_PHONE_ACCOUNT_ADDRESS = "tel:666-TEST";
+
+    MockConnectionService remoteConnectionService = null;
+
+    @Override
+    protected void tearDown() throws Exception {
+        tearDownConnectionServices(TEST_PHONE_ACCOUNT_HANDLE, TEST_REMOTE_PHONE_ACCOUNT_HANDLE);
+        super.tearDown();
+    }
+
+    protected void setupConnectionServices(MockConnectionService connectionService,
+            MockConnectionService remoteConnectionService, int flags)
+            throws Exception {
+        // Setup the primary connection service first
+        setupConnectionService(connectionService, flags);
+
+        if (remoteConnectionService != null) {
+            this.remoteConnectionService = remoteConnectionService;
+        } else {
+            // Generate a vanilla mock connection service, if not provided.
+            this.remoteConnectionService = new MockConnectionService();
+        }
+        CtsRemoteConnectionService.setUp(TEST_REMOTE_PHONE_ACCOUNT_HANDLE,
+                this.remoteConnectionService);
+
+        if ((flags & FLAG_REGISTER) != 0) {
+            // This needs SIM subscription, so register via adb commands to get system permission.
+            TestUtils.registerSimPhoneAccount(getInstrumentation(),
+                    TEST_REMOTE_PHONE_ACCOUNT_HANDLE,
+                    REMOTE_ACCOUNT_LABEL,
+                    TEST_REMOTE_PHONE_ACCOUNT_ADDRESS);
+        }
+        if ((flags & FLAG_ENABLE) != 0) {
+            TestUtils.enablePhoneAccount(getInstrumentation(), TEST_REMOTE_PHONE_ACCOUNT_HANDLE);
+        }
+    }
+
+    protected void tearDownConnectionServices(PhoneAccountHandle accountHandle,
+            PhoneAccountHandle remoteAccountHandle) throws Exception {
+        // Teardown the primary connection service first
+        tearDownConnectionService(accountHandle);
+
+        mTelecomManager.unregisterPhoneAccount(remoteAccountHandle);
+        CtsRemoteConnectionService.tearDown();
+        this.remoteConnectionService = null;
+    }
+
+    MockConnection verifyConnectionForOutgoingCallOnRemoteCS() {
+        // Assuming only 1 connection present
+        return verifyConnectionForOutgoingCallOnRemoteCS(0);
+    }
+
+    MockConnection verifyConnectionForOutgoingCallOnRemoteCS(int connectionIndex) {
+        try {
+            if (!remoteConnectionService.lock.tryAcquire(TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                    TimeUnit.MILLISECONDS)) {
+                fail("No outgoing call connection requested by Telecom");
+            }
+        } catch (InterruptedException e) {
+            Log.i(TAG, "Test interrupted!");
+        }
+
+        assertThat("Telecom should create outgoing connection for remote outgoing call",
+                remoteConnectionService.outgoingConnections.size(), not(equalTo(0)));
+        assertEquals("Telecom should not create incoming connections for remote outgoing calls",
+                0, remoteConnectionService.incomingConnections.size());
+        MockConnection connection = remoteConnectionService.outgoingConnections.get(connectionIndex);
+        return connection;
+    }
+
+    MockConnection verifyConnectionForIncomingCallOnRemoteCS() {
+        // Assuming only 1 connection present
+        return verifyConnectionForIncomingCallOnRemoteCS(0);
+    }
+
+    MockConnection verifyConnectionForIncomingCallOnRemoteCS(int connectionIndex) {
+        try {
+            if (!remoteConnectionService.lock.tryAcquire(TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                    TimeUnit.MILLISECONDS)) {
+                fail("No outgoing call connection requested by Telecom");
+            }
+        } catch (InterruptedException e) {
+            Log.i(TAG, "Test interrupted!");
+        }
+
+        assertThat("Telecom should create incoming connections for remote incoming calls",
+                remoteConnectionService.incomingConnections.size(), not(equalTo(0)));
+        assertEquals("Telecom should not create outgoing connections for remote incoming calls",
+                0, remoteConnectionService.outgoingConnections.size());
+        MockConnection connection = remoteConnectionService.incomingConnections.get(connectionIndex);
+        setAndVerifyConnectionForIncomingCall(connection);
+        return connection;
+    }
+
+    void setAndVerifyConferenceablesForOutgoingConnectionOnRemoteCS(int connectionIndex) {
+        assertEquals("Lock should have no permits!", 0, mInCallCallbacks.lock.availablePermits());
+        /**
+         * Set the conferenceable connections on the given connection and it's remote connection
+         * counterpart.
+         */
+        // Make all other outgoing connections as conferenceable with this remote connection.
+        MockConnection connection = remoteConnectionService.outgoingConnections.get(connectionIndex);
+        List<Connection> confConnections =
+                new ArrayList<>(remoteConnectionService.outgoingConnections.size());
+        for (Connection c : remoteConnectionService.outgoingConnections) {
+            if (c != connection) {
+                confConnections.add(c);
+            }
+        }
+        connection.setConferenceableConnections(confConnections);
+        assertEquals(connection.getConferenceables(), confConnections);
+    }
+
+    MockConference verifyConferenceForOutgoingCallOnRemoteCS() {
+        try {
+            if (!remoteConnectionService.lock.tryAcquire(TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                    TimeUnit.MILLISECONDS)) {
+                fail("No outgoing conference requested by Telecom");
+            }
+        } catch (InterruptedException e) {
+            Log.i(TAG, "Test interrupted!");
+        }
+        // Return the newly created conference object to the caller
+        MockConference conference = remoteConnectionService.conferences.get(0);
+        setAndVerifyConferenceForOutgoingCall(conference);
+        return conference;
+    }
+
+    void assertRemoteConnectionState(final RemoteConnection connection, final int state) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return state;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return connection.getState();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Remote Connection should be in state " + state
+        );
+    }
+
+    void assertRemoteConferenceState(final RemoteConference conference, final int state) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return state;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return conference.getState();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Remote Conference should be in state " + state
+        );
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java b/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java
index c862cc3..31ca09b 100644
--- a/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java
+++ b/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java
@@ -18,14 +18,20 @@
 
 import static android.telecom.cts.TestUtils.*;
 
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.SystemClock;
 import android.telecom.Call;
 import android.telecom.CallAudioState;
+import android.telecom.Conference;
 import android.telecom.Connection;
 import android.telecom.InCallService;
 import android.telecom.PhoneAccount;
@@ -37,6 +43,8 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -52,24 +60,33 @@
             new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID);
 
     public static final PhoneAccount TEST_PHONE_ACCOUNT = PhoneAccount.builder(
-            TEST_PHONE_ACCOUNT_HANDLE, LABEL)
+            TEST_PHONE_ACCOUNT_HANDLE, ACCOUNT_LABEL)
             .setAddress(Uri.parse("tel:555-TEST"))
             .setSubscriptionAddress(Uri.parse("tel:555-TEST"))
             .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER |
-                    PhoneAccount.CAPABILITY_VIDEO_CALLING)
+                    PhoneAccount.CAPABILITY_VIDEO_CALLING |
+                    PhoneAccount.CAPABILITY_CONNECTION_MANAGER)
             .setHighlightColor(Color.RED)
-            .setShortDescription(LABEL)
+            .setShortDescription(ACCOUNT_LABEL)
             .addSupportedUriScheme(PhoneAccount.SCHEME_TEL)
             .addSupportedUriScheme(PhoneAccount.SCHEME_VOICEMAIL)
             .build();
 
-    private static int sCounter = 0;
+    private static int sCounter = 9999;
 
     Context mContext;
     TelecomManager mTelecomManager;
+
+    InvokeCounter mOnBringToForegroundCounter;
+    InvokeCounter mOnCallAudioStateChangedCounter;
+    InvokeCounter mOnPostDialWaitCounter;
+    InvokeCounter mOnCannedTextResponsesLoadedCounter;
+
     InCallServiceCallbacks mInCallCallbacks;
     String mPreviousDefaultDialer = null;
-    MockConnectionService connectionService = new MockConnectionService();
+    MockConnectionService connectionService = null;
+
+    boolean mShouldTestTelecom = true;
 
     @Override
     protected void setUp() throws Exception {
@@ -77,7 +94,8 @@
         mContext = getInstrumentation().getContext();
         mTelecomManager = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
 
-        if (shouldTestTelecom(mContext)) {
+        mShouldTestTelecom = shouldTestTelecom(mContext);
+        if (mShouldTestTelecom) {
             mPreviousDefaultDialer = TestUtils.getDefaultDialer(getInstrumentation());
             TestUtils.setDefaultDialer(getInstrumentation(), PACKAGE);
             setupCallbacks();
@@ -86,37 +104,39 @@
 
     @Override
     protected void tearDown() throws Exception {
-        if (shouldTestTelecom(mContext)) {
+        if (mShouldTestTelecom) {
             cleanupCalls();
             if (!TextUtils.isEmpty(mPreviousDefaultDialer)) {
                 TestUtils.setDefaultDialer(getInstrumentation(), mPreviousDefaultDialer);
             }
-            tearDownConnectionService(TEST_PHONE_ACCOUNT);
+            tearDownConnectionService(TEST_PHONE_ACCOUNT_HANDLE);
         }
         super.tearDown();
     }
 
-    protected PhoneAccount setupConnectionService(CtsConnectionService connectionService,
+    protected PhoneAccount setupConnectionService(MockConnectionService connectionService,
             int flags)
             throws Exception {
-        if (connectionService == null) {
-            connectionService = this.connectionService;
+        if (connectionService != null) {
+            this.connectionService = connectionService;
+        } else {
+            // Generate a vanilla mock connection service, if not provided.
+            this.connectionService = new MockConnectionService();
         }
-        CtsConnectionService.setUp(TEST_PHONE_ACCOUNT, connectionService);
+        CtsConnectionService.setUp(TEST_PHONE_ACCOUNT_HANDLE, this.connectionService);
 
         if ((flags & FLAG_REGISTER) != 0) {
             mTelecomManager.registerPhoneAccount(TEST_PHONE_ACCOUNT);
         }
         if ((flags & FLAG_ENABLE) != 0) {
-            TestUtils.enablePhoneAccount(getInstrumentation(),
-                    TEST_PHONE_ACCOUNT_HANDLE);
+            TestUtils.enablePhoneAccount(getInstrumentation(), TEST_PHONE_ACCOUNT_HANDLE);
         }
 
         return TEST_PHONE_ACCOUNT;
     }
 
-    protected void tearDownConnectionService(PhoneAccount account) throws Exception {
-        mTelecomManager.unregisterPhoneAccount(account.getAccountHandle());
+    protected void tearDownConnectionService(PhoneAccountHandle accountHandle) throws Exception {
+        mTelecomManager.unregisterPhoneAccount(accountHandle);
         CtsConnectionService.tearDown();
         this.connectionService = null;
     }
@@ -141,11 +161,67 @@
         mInCallCallbacks = new InCallServiceCallbacks() {
             @Override
             public void onCallAdded(Call call, int numCalls) {
+                Log.i(TAG, "onCallAdded, Call: " + call + ", Num Calls: " + numCalls);
                 this.lock.release();
             }
+            @Override
+            public void onCallRemoved(Call call, int numCalls) {
+                Log.i(TAG, "onCallRemoved, Call: " + call + ", Num Calls: " + numCalls);
+            }
+            @Override
+            public void onParentChanged(Call call, Call parent) {
+                Log.i(TAG, "onParentChanged, Call: " + call + ", Parent: " + parent);
+                this.lock.release();
+            }
+            @Override
+            public void onChildrenChanged(Call call, List<Call> children) {
+                Log.i(TAG, "onChildrenChanged, Call: " + call + "Children: " + children);
+                this.lock.release();
+            }
+            @Override
+            public void onConferenceableCallsChanged(Call call, List<Call> conferenceableCalls) {
+                Log.i(TAG, "onConferenceableCallsChanged, Call: " + call + ", Conferenceables: " +
+                        conferenceableCalls);
+            }
+            @Override
+            public void onDetailsChanged(Call call, Call.Details details) {
+                Log.i(TAG, "onDetailsChanged, Call: " + call + ", Details: " + details);
+            }
+            @Override
+            public void onCallDestroyed(Call call) {
+                Log.i(TAG, "onCallDestroyed, Call: " + call);
+            }
+            @Override
+            public void onCallStateChanged(Call call, int newState) {
+                Log.i(TAG, "onCallStateChanged, Call: " + call + ", New State: " + newState);
+            }
+            @Override
+            public void onBringToForeground(boolean showDialpad) {
+                mOnBringToForegroundCounter.invoke(showDialpad);
+            }
+            @Override
+            public void onCallAudioStateChanged(CallAudioState audioState) {
+                Log.i(TAG, "onCallAudioStateChanged, audioState: " + audioState);
+                mOnCallAudioStateChangedCounter.invoke(audioState);
+            }
+            @Override
+            public void onPostDialWait(Call call, String remainingPostDialSequence) {
+                mOnPostDialWaitCounter.invoke(call, remainingPostDialSequence);
+            }
+            @Override
+            public void onCannedTextResponsesLoaded(Call call, List<String> cannedTextResponses) {
+                mOnCannedTextResponsesLoadedCounter.invoke(call, cannedTextResponses);
+            }
         };
 
         MockInCallService.setCallbacks(mInCallCallbacks);
+
+        // TODO: If more InvokeCounters are added in the future, consider consolidating them into a
+        // single Collection.
+        mOnBringToForegroundCounter = new InvokeCounter("OnBringToForeground");
+        mOnCallAudioStateChangedCounter = new InvokeCounter("OnCallAudioStateChanged");
+        mOnPostDialWaitCounter = new InvokeCounter("OnPostDialWait");
+        mOnCannedTextResponsesLoadedCounter = new InvokeCounter("OnCannedTextResponsesLoaded");
     }
 
     /**
@@ -153,6 +229,12 @@
      * {@link CtsConnectionService} which can be tested.
      */
     void addAndVerifyNewIncomingCall(Uri incomingHandle, Bundle extras) {
+        assertEquals("Lock should have no permits!", 0, mInCallCallbacks.lock.availablePermits());
+        int currentCallCount = 0;
+        if (mInCallCallbacks.getService() != null) {
+            currentCallCount = mInCallCallbacks.getService().getCallCount();
+        }
+
         if (extras == null) {
             extras = new Bundle();
         }
@@ -167,7 +249,8 @@
             Log.i(TAG, "Test interrupted!");
         }
 
-        assertEquals("InCallService should contain 1 call after adding a call.", 1,
+        assertEquals("InCallService should contain 1 more call after adding a call.",
+                currentCallCount + 1,
                 mInCallCallbacks.getService().getCallCount());
     }
 
@@ -202,6 +285,11 @@
      *  {@link CtsConnectionService} which can be tested.
      */
     void placeAndVerifyCall(Bundle extras, int videoState) {
+        assertEquals("Lock should have no permits!", 0, mInCallCallbacks.lock.availablePermits());
+        int currentCallCount = 0;
+        if (mInCallCallbacks.getService() != null) {
+            currentCallCount = mInCallCallbacks.getService().getCallCount();
+        }
         placeNewCallWithPhoneAccount(extras, videoState);
 
         try {
@@ -212,11 +300,17 @@
             Log.i(TAG, "Test interrupted!");
         }
 
-        assertEquals("InCallService should contain 1 call after adding a call.", 1,
+        assertEquals("InCallService should contain 1 more call after adding a call.",
+                currentCallCount + 1,
                 mInCallCallbacks.getService().getCallCount());
     }
 
     MockConnection verifyConnectionForOutgoingCall() {
+        // Assuming only 1 connection present
+        return verifyConnectionForOutgoingCall(0);
+    }
+
+    MockConnection verifyConnectionForOutgoingCall(int connectionIndex) {
         try {
             if (!connectionService.lock.tryAcquire(TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
                     TimeUnit.MILLISECONDS)) {
@@ -226,19 +320,18 @@
             Log.i(TAG, "Test interrupted!");
         }
 
-        assertNotNull("Telecom should create outgoing connection for outgoing call",
-                connectionService.outgoingConnection);
-        assertNull("Telecom should not create incoming connection for outgoing call",
-                connectionService.incomingConnection);
-
-        connectionService.outgoingConnection.setDialing();
-        connectionService.outgoingConnection.setActive();
-        assertEquals(Connection.STATE_ACTIVE,
-                connectionService.outgoingConnection.getState());
-        return connectionService.outgoingConnection;
+        assertThat("Telecom should create outgoing connection for outgoing call",
+                connectionService.outgoingConnections.size(), not(equalTo(0)));
+        MockConnection connection = connectionService.outgoingConnections.get(connectionIndex);
+        return connection;
     }
 
     MockConnection verifyConnectionForIncomingCall() {
+        // Assuming only 1 connection present
+        return verifyConnectionForIncomingCall(0);
+    }
+
+    MockConnection verifyConnectionForIncomingCall(int connectionIndex) {
         try {
             if (!connectionService.lock.tryAcquire(TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
                     TimeUnit.MILLISECONDS)) {
@@ -248,15 +341,102 @@
             Log.i(TAG, "Test interrupted!");
         }
 
-        assertNull("Telecom should not create outgoing connection for outgoing call",
-                connectionService.outgoingConnection);
-        assertNotNull("Telecom should create incoming connection for outgoing call",
-                connectionService.incomingConnection);
+        assertThat("Telecom should create incoming connections for incoming calls",
+                connectionService.incomingConnections.size(), not(equalTo(0)));
+        MockConnection connection = connectionService.incomingConnections.get(connectionIndex);
+        setAndVerifyConnectionForIncomingCall(connection);
+        return connection;
+    }
 
-        connectionService.incomingConnection.setRinging();
-        assertEquals(Connection.STATE_RINGING,
-                connectionService.incomingConnection.getState());
-        return connectionService.incomingConnection;
+    void setAndVerifyConnectionForIncomingCall(MockConnection connection) {
+        connection.setRinging();
+        assertConnectionState(connection, Connection.STATE_RINGING);
+    }
+
+    void setAndVerifyConferenceablesForOutgoingConnection(int connectionIndex) {
+        assertEquals("Lock should have no permits!", 0, mInCallCallbacks.lock.availablePermits());
+        // Make all other outgoing connections as conferenceable with this connection.
+        MockConnection connection = connectionService.outgoingConnections.get(connectionIndex);
+        List<Connection> confConnections =
+                new ArrayList<>(connectionService.outgoingConnections.size());
+        for (Connection c : connectionService.outgoingConnections) {
+            if (c != connection) {
+                confConnections.add(c);
+            }
+        }
+        connection.setConferenceableConnections(confConnections);
+        assertEquals(connection.getConferenceables(), confConnections);
+    }
+
+    void addConferenceCall(Call call1, Call call2) {
+        assertEquals("Lock should have no permits!", 0, mInCallCallbacks.lock.availablePermits());
+        int currentConfCallCount = 0;
+        if (mInCallCallbacks.getService() != null) {
+            currentConfCallCount = mInCallCallbacks.getService().getConferenceCallCount();
+        }
+        // Verify that the calls have each other on their conferenceable list before proceeding
+        List<Call> callConfList = new ArrayList<>();
+        callConfList.add(call2);
+        assertCallConferenceableList(call1, callConfList);
+
+        callConfList.clear();
+        callConfList.add(call1);
+        assertCallConferenceableList(call2, callConfList);
+
+        call1.conference(call2);
+
+        /**
+         * We should have 1 onCallAdded, 2 onChildrenChanged and 2 onParentChanged invoked, so
+         * we should have 5 available permits on the incallService lock.
+         */
+        try {
+            if (!mInCallCallbacks.lock.tryAcquire(5, 3, TimeUnit.SECONDS)) {
+                fail("Conference addition failed.");
+            }
+        } catch (InterruptedException e) {
+            Log.i(TAG, "Test interrupted!");
+        }
+
+        assertEquals("InCallService should contain 1 more call after adding a conf call.",
+                currentConfCallCount + 1,
+                mInCallCallbacks.getService().getConferenceCallCount());
+    }
+
+    void splitFromConferenceCall(Call call1) {
+        assertEquals("Lock should have no permits!", 0, mInCallCallbacks.lock.availablePermits());
+
+        call1.splitFromConference();
+        /**
+         * We should have 1 onChildrenChanged and 1 onParentChanged invoked, so
+         * we should have 2 available permits on the incallService lock.
+         */
+        try {
+            if (!mInCallCallbacks.lock.tryAcquire(2, 3, TimeUnit.SECONDS)) {
+                fail("Conference split failed");
+            }
+        } catch (InterruptedException e) {
+            Log.i(TAG, "Test interrupted!");
+        }
+    }
+
+    MockConference verifyConferenceForOutgoingCall() {
+        try {
+            if (!connectionService.lock.tryAcquire(TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                    TimeUnit.MILLISECONDS)) {
+                fail("No outgoing conference requested by Telecom");
+            }
+        } catch (InterruptedException e) {
+            Log.i(TAG, "Test interrupted!");
+        }
+        // Return the newly created conference object to the caller
+        MockConference conference = connectionService.conferences.get(0);
+        setAndVerifyConferenceForOutgoingCall(conference);
+        return conference;
+    }
+
+    void setAndVerifyConferenceForOutgoingCall(MockConference conference) {
+        conference.setActive();
+        assertConferenceState(conference, Connection.STATE_ACTIVE);
     }
 
     /**
@@ -264,7 +444,9 @@
      */
     void cleanupCalls() {
         if (mInCallCallbacks != null && mInCallCallbacks.getService() != null) {
-            mInCallCallbacks.getService().disconnectLastCall();
+            mInCallCallbacks.getService().disconnectAllConferenceCalls();
+            mInCallCallbacks.getService().disconnectAllCalls();
+            assertNumConferenceCalls(mInCallCallbacks.getService(), 0);
             assertNumCalls(mInCallCallbacks.getService(), 0);
         }
     }
@@ -314,6 +496,23 @@
     );
     }
 
+    void assertNumConferenceCalls(final MockInCallService inCallService, final int numCalls) {
+        waitUntilConditionIsTrueOrTimeout(new Condition() {
+            @Override
+            public Object expected() {
+                return numCalls;
+            }
+            @Override
+            public Object actual() {
+                return inCallService.getConferenceCallCount();
+            }
+        },
+        WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+        "InCallService should contain " + numCalls + " conference calls."
+    );
+    }
+
+
     void assertMuteState(final InCallService incallService, final boolean isMuted) {
         waitUntilConditionIsTrueOrTimeout(
                 new Condition() {
@@ -381,7 +580,7 @@
 
                     @Override
                     public Object actual() {
-                        final CallAudioState state = connection.getCallAudioState();
+                        final CallAudioState state = ((Connection) connection).getCallAudioState();
                         return state == null ? null : state.getRoute();
                     }
                 },
@@ -426,6 +625,24 @@
         );
     }
 
+    void assertCallConferenceableList(final Call call, final List<Call> conferenceableList) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return conferenceableList;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getConferenceableCalls();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call: " + call + " does not have the correct conferenceable call list."
+        );
+    }
+
     void assertDtmfString(final MockConnection connection, final String dtmfString) {
         waitUntilConditionIsTrueOrTimeout(new Condition() {
                 @Override
@@ -443,6 +660,77 @@
         );
     }
 
+    void assertDtmfString(final MockConference conference, final String dtmfString) {
+        waitUntilConditionIsTrueOrTimeout(new Condition() {
+                @Override
+                public Object expected() {
+                    return dtmfString;
+                }
+
+                @Override
+                public Object actual() {
+                    return conference.getDtmfString();
+                }
+            },
+            WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+            "DTMF string should be equivalent to entered DTMF characters: " + dtmfString
+        );
+    }
+
+    void assertCallDisplayName(final Call call, final String name) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return name;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getDetails().getCallerDisplayName();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call should have display name: " + name
+        );
+    }
+
+    void assertConnectionCallDisplayName(final Connection connection, final String name) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return name;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return connection.getCallerDisplayName();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Connection should have display name: " + name
+        );
+    }
+
+    void assertConferenceState(final Conference conference, final int state) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return state;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return conference.getState();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Conference should be in state " + state
+        );
+    }
+
     void waitUntilConditionIsTrueOrTimeout(Condition condition, long timeout,
             String description) {
         final long start = System.currentTimeMillis();
@@ -482,4 +770,72 @@
     protected interface Work {
         void doWork();
     }
+
+    /**
+     * Utility class used to track the number of times a callback was invoked, and the arguments it
+     * was invoked with. This class is prefixed Invoke rather than the more typical Call for
+     * disambiguation purposes.
+     */
+    protected static final class InvokeCounter {
+        private final String mName;
+        private final Object mLock = new Object();
+        private final ArrayList<Object[]> mInvokeArgs = new ArrayList<>();
+
+        private int mInvokeCount;
+
+        public InvokeCounter(String callbackName) {
+            mName = callbackName;
+        }
+
+        public void invoke(Object... args) {
+            synchronized (mLock) {
+                mInvokeCount++;
+                mInvokeArgs.add(args);
+                mLock.notifyAll();
+            }
+        }
+
+        public Object[] getArgs(int index) {
+            synchronized (mLock) {
+                return mInvokeArgs.get(index);
+            }
+        }
+
+        public int getInvokeCount() {
+            synchronized (mLock) {
+                return mInvokeCount;
+            }
+        }
+
+        public void waitForCount(int count) {
+            waitForCount(count, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        }
+
+        public void waitForCount(int count, long timeoutMillis) {
+            waitForCount(count, timeoutMillis, null);
+        }
+
+        public void waitForCount(int count, long timeoutMillis, String message) {
+            synchronized (mLock) {
+                final long startTimeMillis = SystemClock.uptimeMillis();
+                while (mInvokeCount < count) {
+                    try {
+                        final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis;
+                        final long remainingTimeMillis = timeoutMillis - elapsedTimeMillis;
+                        if (remainingTimeMillis <= 0) {
+                            if (message != null) {
+                                fail(message);
+                            } else {
+                                fail(String.format("Expected %s to be called %d times.", mName,
+                                        count));
+                            }
+                        }
+                        mLock.wait(timeoutMillis);
+                    } catch (InterruptedException ie) {
+                        /* ignore */
+                    }
+                }
+            }
+        }
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java b/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
index 0625d78..879c995 100644
--- a/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
@@ -65,7 +65,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        if (TestUtils.shouldTestTelecom(mContext)) {
+        if (mShouldTestTelecom) {
             PhoneAccount account = setupConnectionService(
                     new MockConnectionService() {
                         @Override
@@ -93,20 +93,27 @@
                         }
                     }, FLAG_REGISTER | FLAG_ENABLE);
 
-        }
-        /** Place a call as a part of the setup before we test the various
-         *  Call details.
-         */
-        placeAndVerifyCall();
+            /** Place a call as a part of the setup before we test the various
+             *  Call details.
+             */
+            placeAndVerifyCall();
+            verifyConnectionForOutgoingCall();
 
-        mInCallService = mInCallCallbacks.getService();
-        mCall = mInCallService.getLastCall();
+            mInCallService = mInCallCallbacks.getService();
+            mCall = mInCallService.getLastCall();
+
+            assertCallState(mCall, Call.STATE_DIALING);
+        }
     }
 
     /**
      * Tests whether the getAccountHandle() getter returns the correct object.
      */
     public void testAccountHandle() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getAccountHandle(), is(PhoneAccountHandle.class));
         assertEquals(TEST_PHONE_ACCOUNT_HANDLE, mCall.getDetails().getAccountHandle());
     }
@@ -115,14 +122,26 @@
      * Tests whether the getCallCapabilities() getter returns the correct object.
      */
     public void testCallCapabilities() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getCallCapabilities(), is(Integer.class));
         assertEquals(CALL_CAPABILITIES, mCall.getDetails().getCallCapabilities());
+        assertTrue(mCall.getDetails().can(Call.Details.CAPABILITY_HOLD));
+        assertTrue(mCall.getDetails().can(Call.Details.CAPABILITY_MUTE));
+        assertFalse(mCall.getDetails().can(Call.Details.CAPABILITY_MANAGE_CONFERENCE));
+        assertFalse(mCall.getDetails().can(Call.Details.CAPABILITY_RESPOND_VIA_TEXT));
     }
 
     /**
      * Tests whether the getCallerDisplayName() getter returns the correct object.
      */
     public void testCallerDisplayName() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getCallerDisplayName(), is(String.class));
         assertEquals(CALLER_DISPLAY_NAME, mCall.getDetails().getCallerDisplayName());
     }
@@ -131,6 +150,10 @@
      * Tests whether the getCallerDisplayNamePresentation() getter returns the correct object.
      */
     public void testCallerDisplayNamePresentation() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getCallerDisplayNamePresentation(), is(Integer.class));
         assertEquals(CALLER_DISPLAY_NAME_PRESENTATION, mCall.getDetails().getCallerDisplayNamePresentation());
     }
@@ -139,6 +162,10 @@
      * Tests whether the getCallProperties() getter returns the correct object.
      */
     public void testCallProperties() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getCallProperties(), is(Integer.class));
         assertEquals(CALL_PROPERTIES, mCall.getDetails().getCallProperties());
     }
@@ -147,6 +174,10 @@
      * Tests whether the getConnectTimeMillis() getter returns the correct object.
      */
     public void testConnectTimeMillis() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getConnectTimeMillis(), is(Long.class));
     }
 
@@ -154,6 +185,10 @@
      * Tests whether the getDisconnectCause() getter returns the correct object.
      */
     public void testDisconnectCause() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getDisconnectCause(), is(DisconnectCause.class));
     }
 
@@ -161,13 +196,23 @@
      * Tests whether the getExtras() getter returns the correct object.
      */
     public void testExtras() {
-        assertThat(mCall.getDetails().getExtras(), is(Bundle.class));
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        if (mCall.getDetails().getExtras() != null) {
+            assertThat(mCall.getDetails().getExtras(), is(Bundle.class));
+        }
     }
 
     /**
      * Tests whether the getIntentExtras() getter returns the correct object.
      */
     public void testIntentExtras() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getIntentExtras(), is(Bundle.class));
     }
 
@@ -175,13 +220,23 @@
      * Tests whether the getGatewayInfo() getter returns the correct object.
      */
     public void testGatewayInfo() {
-        assertThat(mCall.getDetails().getGatewayInfo(), is(GatewayInfo.class));
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        if (mCall.getDetails().getGatewayInfo() != null) {
+            assertThat(mCall.getDetails().getGatewayInfo(), is(GatewayInfo.class));
+        }
     }
 
     /**
      * Tests whether the getHandle() getter returns the correct object.
      */
     public void testHandle() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getHandle(), is(Uri.class));
         assertEquals(getTestNumber(), mCall.getDetails().getHandle());
     }
@@ -190,6 +245,10 @@
      * Tests whether the getHandlePresentation() getter returns the correct object.
      */
     public void testHandlePresentation() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getHandlePresentation(), is(Integer.class));
         assertEquals(MockConnectionService.CONNECTION_PRESENTATION, mCall.getDetails().getHandlePresentation());
     }
@@ -198,6 +257,10 @@
      * Tests whether the getStatusHints() getter returns the correct object.
      */
     public void testStatusHints() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getStatusHints(), is(StatusHints.class));
         assertEquals(mStatusHints.getLabel(), mCall.getDetails().getStatusHints().getLabel());
         assertEquals(
@@ -210,6 +273,10 @@
      * Tests whether the getVideoState() getter returns the correct object.
      */
     public void testVideoState() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         assertThat(mCall.getDetails().getVideoState(), is(Integer.class));
     }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/ConferenceTest.java b/tests/tests/telecom/src/android/telecom/cts/ConferenceTest.java
new file mode 100644
index 0000000..121d559
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/ConferenceTest.java
@@ -0,0 +1,428 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import static android.telecom.cts.TestUtils.*;
+
+import android.os.Bundle;
+import android.telecom.Call;
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.telecom.ConnectionRequest;
+import android.telecom.DisconnectCause;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.StatusHints;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+
+import java.util.ArrayList;
+
+/**
+ * Extended suite of tests that use {@link CtsConnectionService} and {@link MockInCallService} to
+ * verify the functionality of Call Conferencing.
+ */
+public class ConferenceTest extends BaseTelecomTestWithMockServices {
+
+    public static final int CONF_CAPABILITIES = Connection.CAPABILITY_SEPARATE_FROM_CONFERENCE |
+            Connection.CAPABILITY_DISCONNECT_FROM_CONFERENCE | Connection.CAPABILITY_HOLD |
+            Connection.CAPABILITY_MERGE_CONFERENCE | Connection.CAPABILITY_SWAP_CONFERENCE;
+
+    private Call mCall1, mCall2;
+    private MockConnection mConnection1, mConnection2;
+    MockInCallService mInCallService;
+    Conference mConferenceObject;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+        if (mShouldTestTelecom) {
+            addOutgoingCalls();
+            addConferenceCall(mCall1, mCall2);
+            // Use vanilla conference object so that the CTS coverage tool detects the useage.
+            mConferenceObject = verifyConferenceForOutgoingCall();
+            verifyConferenceObject(mConferenceObject, mConnection1, mConnection2);
+        }
+    }
+
+    public void testConferenceCreate() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call conf = mInCallService.getLastConferenceCall();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        if (mCall1.getParent() != conf || mCall2.getParent() != conf) {
+            fail("The 2 participating calls should contain the conference call as its parent");
+        }
+        if (!(conf.getChildren().contains(mCall1) && conf.getChildren().contains(mCall2))) {
+            fail("The conference call should contain the 2 participating calls as its children");
+        }
+        assertTrue(mConferenceObject.getConnections().contains(mConnection1));
+
+        assertConnectionState(mConferenceObject.getConnections().get(0), Connection.STATE_ACTIVE);
+        assertConnectionState(mConferenceObject.getConnections().get(1), Connection.STATE_ACTIVE);
+        assertConferenceState(mConferenceObject, Connection.STATE_ACTIVE);
+    }
+
+    public void testConferenceSplit() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call conf = mInCallService.getLastConferenceCall();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        if (!(mCall1.getParent() == conf) && (conf.getChildren().contains(mCall1))) {
+            fail("Call 1 not conferenced");
+        }
+        assertTrue(mConferenceObject.getConnections().contains(mConnection1));
+
+        splitFromConferenceCall(mCall1);
+
+        if ((mCall1.getParent() == conf) || (conf.getChildren().contains(mCall1))) {
+            fail("Call 1 should not be still conferenced");
+        }
+        assertFalse(mConferenceObject.getConnections().contains(mConnection1));
+    }
+
+    public void testConferenceHoldAndUnhold() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call conf = mInCallService.getLastConferenceCall();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        conf.hold();
+        assertCallState(conf, Call.STATE_HOLDING);
+        assertCallState(mCall1, Call.STATE_HOLDING);
+        assertCallState(mCall2, Call.STATE_HOLDING);
+
+        conf.unhold();
+        assertCallState(conf, Call.STATE_ACTIVE);
+        assertCallState(mCall1, Call.STATE_ACTIVE);
+        assertCallState(mCall2, Call.STATE_ACTIVE);
+    }
+
+    public void testConferenceMergeAndSwap() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call conf = mInCallService.getLastConferenceCall();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        conf.mergeConference();
+        assertCallDisplayName(mCall1, TestUtils.MERGE_CALLER_NAME);
+        assertCallDisplayName(mCall2, TestUtils.MERGE_CALLER_NAME);
+        assertConnectionCallDisplayName(mConferenceObject.getConnections().get(0),
+                TestUtils.MERGE_CALLER_NAME);
+        assertConnectionCallDisplayName(mConferenceObject.getConnections().get(1),
+                TestUtils.MERGE_CALLER_NAME);
+
+        conf.swapConference();
+        assertCallDisplayName(mCall1, TestUtils.SWAP_CALLER_NAME);
+        assertCallDisplayName(mCall2, TestUtils.SWAP_CALLER_NAME);
+        assertConnectionCallDisplayName(mConferenceObject.getConnections().get(0),
+                TestUtils.SWAP_CALLER_NAME);
+        assertConnectionCallDisplayName(mConferenceObject.getConnections().get(1),
+                TestUtils.SWAP_CALLER_NAME);
+
+    }
+
+    public void testConferenceSetters() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call conf = mInCallService.getLastConferenceCall();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        placeAndVerifyCall();
+        MockConnection newConnection = verifyConnectionForOutgoingCall(2);
+        final Call newCall = mInCallService.getLastCall();
+
+        ArrayList<Connection> connectionList = new ArrayList<>();
+        connectionList.add(newConnection);
+        ArrayList<Call> callList = new ArrayList<>();
+        callList.add(newCall);
+
+        assertFalse(conf.getDetails().can(Call.Details.CAPABILITY_MUTE));
+        int capabilities = mConferenceObject.getConnectionCapabilities() |
+                Connection.CAPABILITY_MUTE;
+        mConferenceObject.setConnectionCapabilities(capabilities);
+        assertCallCapability(conf, Call.Details.CAPABILITY_MUTE);
+
+        assertFalse(conf.getConferenceableCalls().contains(newCall));
+        mConferenceObject.setConferenceableConnections(connectionList);
+        assertCallConferenceableList(conf, callList);
+
+        mConferenceObject.setConnectionTime(0);
+
+        Bundle extras = new Bundle();
+        extras.putString(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE, "Test");
+        assertNull(conf.getDetails().getExtras());
+        mConferenceObject.setExtras(extras);
+        assertCallExtras(conf, TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE, "Test");
+
+        StatusHints hints = new StatusHints("Test", null, null);
+        assertNull(conf.getDetails().getStatusHints());
+        mConferenceObject.setStatusHints(hints);
+        assertCallStatusHints(conf, hints);
+
+        assertFalse(conf.getChildren().contains(newCall));
+        mConferenceObject.addConnection(newConnection);
+        assertCallChildrenContains(conf, newCall, true);
+
+        assertTrue(conf.getChildren().contains(newCall));
+        mConferenceObject.removeConnection(newConnection);
+        assertCallChildrenContains(conf, newCall, false);
+
+        assertVideoState(conf, VideoProfile.STATE_AUDIO_ONLY);
+        final MockVideoProvider mockVideoProvider = mConnection1.getMockVideoProvider();
+        mConferenceObject.setVideoProvider(mConnection1, mockVideoProvider);
+        mConferenceObject.setVideoState(mConnection1, VideoProfile.STATE_BIDIRECTIONAL);
+        assertVideoState(conf, VideoProfile.STATE_BIDIRECTIONAL);
+
+        // Dialing state is unsupported for conference calls. so, the state remains active.
+        mConferenceObject.setDialing();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        mConferenceObject.setOnHold();
+        assertCallState(conf, Call.STATE_HOLDING);
+
+        mConferenceObject.setActive();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        mConferenceObject.setDisconnected(new DisconnectCause(DisconnectCause.LOCAL));
+        assertCallState(conf, Call.STATE_DISCONNECTED);
+
+        // Destroy state is unsupported for conference calls. so, the state remains active.
+        mConferenceObject.destroy();
+        assertCallState(conf, Call.STATE_DISCONNECTED);
+    }
+
+    public void testConferenceAddAndRemoveConnection() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call conf = mInCallService.getLastConferenceCall();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        placeAndVerifyCall();
+        MockConnection newConnection = verifyConnectionForOutgoingCall(2);
+        final Call newCall = mInCallService.getLastCall();
+
+        ArrayList<Connection> connectionList = new ArrayList<>();
+        connectionList.add(newConnection);
+        ArrayList<Call> callList = new ArrayList<>();
+        callList.add(newCall);
+
+        assertFalse(conf.getChildren().contains(newCall));
+        mConferenceObject.addConnection(newConnection);
+        assertCallChildrenContains(conf, newCall, true);
+
+        assertTrue(conf.getChildren().contains(newCall));
+        mConferenceObject.removeConnection(newConnection);
+        assertCallChildrenContains(conf, newCall, false);
+    }
+
+    public void testConferenceDTMFTone() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call conf = mInCallService.getLastConferenceCall();
+        assertCallState(conf, Call.STATE_ACTIVE);
+
+        assertTrue(((MockConference)mConferenceObject).getDtmfString().isEmpty());
+        conf.playDtmfTone('1');
+        assertDtmfString((MockConference)mConferenceObject, "1");
+        conf.stopDtmfTone();
+        assertDtmfString((MockConference)mConferenceObject, "1.");
+        conf.playDtmfTone('3');
+        assertDtmfString((MockConference)mConferenceObject, "1.3");
+        conf.stopDtmfTone();
+        assertDtmfString((MockConference)mConferenceObject, "1.3.");
+    }
+
+    private void verifyConferenceObject(Conference mConferenceObject, MockConnection connection1,
+            MockConnection connection2) {
+        assertNull(mConferenceObject.getCallAudioState());
+        assertTrue(mConferenceObject.getConferenceableConnections().isEmpty());
+        assertEquals(connection1.getConnectionCapabilities(),
+                mConferenceObject.getConnectionCapabilities());
+        assertEquals(connection1.getState(), mConferenceObject.getState());
+        assertEquals(connection2.getState(), mConferenceObject.getState());
+        assertTrue(mConferenceObject.getConnections().contains(connection1));
+        assertTrue(mConferenceObject.getConnections().contains(connection2));
+        assertEquals(connection1.getDisconnectCause(), mConferenceObject.getDisconnectCause());
+        assertEquals(connection1.getExtras(), mConferenceObject.getExtras());
+        assertEquals(connection1.getPhoneAccountHandle(), mConferenceObject.getPhoneAccountHandle());
+        assertEquals(connection1.getStatusHints(), mConferenceObject.getStatusHints());
+        assertEquals(VideoProfile.STATE_AUDIO_ONLY, mConferenceObject.getVideoState());
+        assertNull(mConferenceObject.getVideoProvider());
+    }
+
+    private void addOutgoingCalls() {
+        try {
+            PhoneAccount account = setupConnectionService(
+                    new MockConnectionService() {
+                        @Override
+                        public Connection onCreateOutgoingConnection(
+                                PhoneAccountHandle connectionManagerPhoneAccount,
+                                ConnectionRequest request) {
+                            Connection connection = super.onCreateOutgoingConnection(
+                                    connectionManagerPhoneAccount,
+                                    request);
+                            // Modify the connection object created with local values.
+                            int capabilities = connection.getConnectionCapabilities();
+                            connection.setConnectionCapabilities(capabilities | CONF_CAPABILITIES);
+                            return connection;
+                        }
+                    }, FLAG_REGISTER | FLAG_ENABLE);
+        } catch(Exception e) {
+            fail("Error in setting up the connection services");
+        }
+
+        placeAndVerifyCall();
+        mConnection1 = verifyConnectionForOutgoingCall(0);
+        mInCallService = mInCallCallbacks.getService();
+        mCall1 = mInCallService.getLastCall();
+        assertCallState(mCall1, Call.STATE_DIALING);
+        mConnection1.setActive();
+        assertCallState(mCall1, Call.STATE_ACTIVE);
+
+        placeAndVerifyCall();
+        mConnection2 = verifyConnectionForOutgoingCall(1);
+        mCall2 = mInCallService.getLastCall();
+        assertCallState(mCall2, Call.STATE_DIALING);
+        mConnection2.setActive();
+        assertCallState(mCall2, Call.STATE_ACTIVE);
+
+        setAndVerifyConferenceablesForOutgoingConnection(0);
+        setAndVerifyConferenceablesForOutgoingConnection(1);
+    }
+
+    private void assertCallCapability(final Call call, final int capability) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return true;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getDetails().can(capability);
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call should have capability " + capability
+        );
+    }
+
+    private void assertCallConnectTime(final Call call, final int connectTime) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return connectTime;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getDetails().getConnectTimeMillis();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call should have connect time " + connectTime
+        );
+    }
+
+    private void assertCallExtras(final Call call, final String key, final String value) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return value;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getDetails().getExtras() != null ?
+                            call.getDetails().getExtras().getString(key) : null;
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call should have extra " + key + "=" + value
+        );
+    }
+
+    private void assertCallStatusHints(final Call call, final StatusHints hints) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return hints;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getDetails().getStatusHints();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call should have status hints " + hints
+        );
+    }
+
+    private void assertCallChildrenContains(final Call call, final Call childrenCall,
+                                            final boolean expected) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return expected;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getChildren().contains(childrenCall);
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                expected == true ? "Call should have child call " + childrenCall :
+                        "Call should not have child call " + childrenCall
+        );
+    }
+
+    private void assertVideoState(final Call call, final int videoState) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return videoState;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getDetails().getVideoState();
+                    }
+                },
+                TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call should be in videoState " + videoState
+        );
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/ConnectionServiceTest.java b/tests/tests/telecom/src/android/telecom/cts/ConnectionServiceTest.java
new file mode 100644
index 0000000..afaa3eb
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/ConnectionServiceTest.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import static android.telecom.cts.TestUtils.*;
+
+import android.telecom.Call;
+import android.telecom.Connection;
+import android.telecom.ConnectionService;
+import android.util.Log;
+
+import java.util.Collection;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test some additional {@link ConnectionService} APIs not already covered by other tests.
+ */
+public class ConnectionServiceTest extends BaseTelecomTestWithMockServices {
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+        if (mShouldTestTelecom) {
+            setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
+        }
+    }
+
+    public void testAddExistingConnection() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        placeAndVerifyCall();
+        verifyConnectionForOutgoingCall();
+
+        final MockConnection connection = new MockConnection();
+        connection.setOnHold();
+        CtsConnectionService.addExistingConnectionToTelecom(TEST_PHONE_ACCOUNT_HANDLE, connection);
+
+        try {
+            if (!mInCallCallbacks.lock.tryAcquire(3, TimeUnit.SECONDS)) {
+                fail("No call added to InCallService.");
+            }
+        } catch (InterruptedException e) {
+            Log.i(TAG, "Test interrupted!");
+        }
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        final Call call = inCallService.getLastCall();
+        assertCallState(call, Call.STATE_HOLDING);
+    }
+
+    public void testGetAllConnections() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        // Add first connection (outgoing call)
+        placeAndVerifyCall();
+        final Connection connection1 = verifyConnectionForOutgoingCall();
+
+        Collection<Connection> connections = CtsConnectionService.getAllConnectionsFromTelecom();
+        assertEquals(1, connections.size());
+        assertTrue(connections.contains(connection1));
+
+        // Add second connection (add existing connection)
+        final Connection connection2 = new MockConnection();
+        CtsConnectionService.addExistingConnectionToTelecom(TEST_PHONE_ACCOUNT_HANDLE, connection2);
+
+        connections = CtsConnectionService.getAllConnectionsFromTelecom();
+        assertEquals(2, connections.size());
+        assertTrue(connections.contains(connection2));
+
+        // Add third connection (incoming call)
+        addAndVerifyNewIncomingCall(getTestNumber(), null);
+        final Connection connection3 = verifyConnectionForIncomingCall();
+        connections = CtsConnectionService.getAllConnectionsFromTelecom();
+        assertEquals(3, connections.size());
+        assertTrue(connections.contains(connection3));
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/ConnectionTest.java b/tests/tests/telecom/src/android/telecom/cts/ConnectionTest.java
index 9a1ebc9..b6818c8 100644
--- a/tests/tests/telecom/src/android/telecom/cts/ConnectionTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/ConnectionTest.java
@@ -18,9 +18,13 @@
 
 import static android.telecom.cts.TestUtils.shouldTestTelecom;
 
+import android.net.Uri;
 import android.os.Build;
+import android.os.Bundle;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
+import android.telecom.StatusHints;
+import android.telecom.TelecomManager;
 import android.test.AndroidTestCase;
 
 import java.util.concurrent.Semaphore;
@@ -111,6 +115,184 @@
         fail("Connection should not move out of STATE_DISCONNECTED");
     }
 
+    public void testSetAndGetCallerDisplayName() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        connection.setCallerDisplayName("Test User", TelecomManager.PRESENTATION_ALLOWED);
+        assertEquals("Test User", connection.getCallerDisplayName());
+        assertEquals(TelecomManager.PRESENTATION_ALLOWED,
+                connection.getCallerDisplayNamePresentation());
+    }
+
+    public void testSetAndGetAddress() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        final Uri address = Uri.fromParts("tel", "1234567", null);
+        connection.setAddress(address, TelecomManager.PRESENTATION_UNKNOWN);
+        assertEquals(address, connection.getAddress());
+        assertEquals(TelecomManager.PRESENTATION_UNKNOWN, connection.getAddressPresentation());
+    }
+
+    public void testSetAndGetConnectionCapabilities() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        final int capabilities = Connection.CAPABILITY_HOLD | Connection.CAPABILITY_CAN_PAUSE_VIDEO
+                | Connection.CAPABILITY_MANAGE_CONFERENCE | Connection.CAPABILITY_RESPOND_VIA_TEXT;
+
+        connection.setConnectionCapabilities(capabilities);
+
+        assertEquals(capabilities, connection.getConnectionCapabilities());
+    }
+
+    public void testSetAndGetDisconnectCause() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+        assertEquals(Connection.STATE_NEW, connection.getState());
+
+        final DisconnectCause disconnectCause = new DisconnectCause(DisconnectCause.REJECTED,
+                "No friends", "No friends to talk to", "No friends to talk to");
+
+        connection.setDisconnected(disconnectCause);
+
+        assertEquals(Connection.STATE_DISCONNECTED, connection.getState());
+        assertEquals(disconnectCause, connection.getDisconnectCause());
+    }
+
+    public void testSetAndGetAudioModeIsVoip() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        assertFalse(connection.getAudioModeIsVoip());
+        connection.setAudioModeIsVoip(true);
+        assertTrue(connection.getAudioModeIsVoip());
+    }
+
+    public void testSetAndGetExtras() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        assertEquals(null, connection.getExtras());
+
+        final Bundle extras = new Bundle();
+        extras.putBoolean("test-extra-key", true);
+        connection.setExtras(extras);
+
+        final Bundle retrieved = connection.getExtras();
+        assertNotNull(retrieved);
+        assertTrue(extras.getBoolean("test-extra-key"));
+    }
+
+    public void testSetAndGetStatusHints() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        assertEquals(null, connection.getStatusHints());
+
+        final StatusHints statusHints = new StatusHints("Test", null, null);
+        connection.setStatusHints(statusHints);
+        assertEquals(statusHints, connection.getStatusHints());
+    }
+
+    public void testSetAndGetRingbackRequested() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        assertFalse(connection.isRingbackRequested());
+
+        connection.setRingbackRequested(true);
+        assertTrue(connection.isRingbackRequested());
+    }
+
+    public void testSetAndGetVideoProvider() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        final Semaphore lock = new Semaphore(0);
+        Connection connection = createConnection(lock);
+        waitForStateChange(lock);
+
+        assertNull(connection.getVideoProvider());
+
+        final Connection.VideoProvider videoProvider = new MockVideoProvider(null);
+        connection.setVideoProvider(videoProvider);
+        assertEquals(videoProvider, connection.getVideoProvider());
+    }
+
+    public void testStateToString() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        assertEquals("INITIALIZING", Connection.stateToString(Connection.STATE_INITIALIZING));
+        assertEquals("NEW", Connection.stateToString(Connection.STATE_NEW));
+        assertEquals("RINGING", Connection.stateToString(Connection.STATE_RINGING));
+        assertEquals("DIALING", Connection.stateToString(Connection.STATE_DIALING));
+        assertEquals("ACTIVE", Connection.stateToString(Connection.STATE_ACTIVE));
+        assertEquals("HOLDING", Connection.stateToString(Connection.STATE_HOLDING));
+        assertEquals("DISCONNECTED", Connection.stateToString(Connection.STATE_DISCONNECTED));
+    }
+
+    public void testCapabilitiesToString() {
+        if (!shouldTestTelecom(getContext())) {
+            return;
+        }
+
+        assertEquals("[Capabilities: CAPABILITY_HOLD]",
+                Connection.capabilitiesToString(Connection.CAPABILITY_HOLD));
+        assertEquals("[Capabilities: CAPABILITY_MUTE]",
+                Connection.capabilitiesToString(Connection.CAPABILITY_MUTE));
+        assertEquals("[Capabilities: CAPABILITY_HOLD "
+                + "CAPABILITY_RESPOND_VIA_TEXT "
+                + "CAPABILITY_MANAGE_CONFERENCE]",
+                Connection.capabilitiesToString(Connection.CAPABILITY_HOLD
+                        | Connection.CAPABILITY_RESPOND_VIA_TEXT
+                        | Connection.CAPABILITY_MANAGE_CONFERENCE));
+    }
+
     private static Connection createConnection(final Semaphore lock) {
         BasicConnection connection = new BasicConnection();
         connection.setLock(lock);
diff --git a/tests/tests/telecom/src/android/telecom/cts/CtsConnectionService.java b/tests/tests/telecom/src/android/telecom/cts/CtsConnectionService.java
index 9cfa0e3..3c30e6b 100644
--- a/tests/tests/telecom/src/android/telecom/cts/CtsConnectionService.java
+++ b/tests/tests/telecom/src/android/telecom/cts/CtsConnectionService.java
@@ -16,14 +16,15 @@
 
 package android.telecom.cts;
 
+import android.telecom.Conference;
 import android.telecom.Connection;
 import android.telecom.ConnectionRequest;
 import android.telecom.ConnectionService;
-import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
+import android.telecom.RemoteConference;
+import android.telecom.RemoteConnection;
 
-import java.util.concurrent.Semaphore;
+import java.util.Collection;
 
 /**
  * This is the official ConnectionService for Telecom's CTS App. Since telecom requires that a
@@ -32,9 +33,25 @@
  * tell CtsConnectionService to forward any method invocations to that test's implementation.
  * This is set up using {@link #setUp} and should be cleaned up before the end of the test using
  * {@link #tearDown}.
+ *
+ * sConnectionService: Contains the connection service object provided by the current test in
+ *                     progress. We use this object to forward any communication received from the
+ *                     Telecom framework to the test connection service.
+ * sTelecomConnectionService: Contains the connection service object registered to the Telecom
+ *                            framework. We use this object to forward any communication from the
+ *                            test connection service to the Telecom framework.
+ *
  */
 public class CtsConnectionService extends ConnectionService {
+    // This is the connection service implemented by the test
     private static ConnectionService sConnectionService;
+    // This is the connection service registered with Telecom
+    private static ConnectionService sTelecomConnectionService;
+
+    public CtsConnectionService() throws Exception {
+        super();
+        sTelecomConnectionService = this;
+    }
 
     // ConnectionService used by default as a fallback if no connection service is specified
     // during test setup.
@@ -47,14 +64,14 @@
      */
     private static Object sLock = new Object();
 
-    public static PhoneAccount setUp(PhoneAccount phoneAccount, ConnectionService connectionService)
+    public static void setUp(PhoneAccountHandle phoneAccountHandle,
+            ConnectionService connectionService)
             throws Exception {
         synchronized(sLock) {
             if (sConnectionService != null) {
                 throw new Exception("Mock ConnectionService exists.  Failed to call tearDown().");
             }
             sConnectionService = connectionService;
-            return phoneAccount;
         }
     }
 
@@ -85,9 +102,80 @@
             if (sConnectionService != null) {
                 return sConnectionService.onCreateIncomingConnection(
                         connectionManagerPhoneAccount, request);
+            } else {
+                return mMockConnectionService.onCreateIncomingConnection(
+                        connectionManagerPhoneAccount, request);
             }
-            return mMockConnectionService.onCreateIncomingConnection(
+        }
+    }
+
+    @Override
+    public void onConference(Connection connection1, Connection connection2) {
+        synchronized(sLock) {
+            if (sConnectionService != null) {
+                sConnectionService.onConference(connection1, connection2);
+            } else {
+                mMockConnectionService.onConference(connection1, connection2);
+            }
+        }
+    }
+
+    @Override
+    public void onRemoteExistingConnectionAdded(RemoteConnection connection) {
+        synchronized(sLock) {
+            if (sConnectionService != null) {
+                sConnectionService.onRemoteExistingConnectionAdded(connection);
+            } else {
+                mMockConnectionService.onRemoteExistingConnectionAdded(connection);
+            }
+        }
+    }
+
+    public static void addConferenceToTelecom(Conference conference) {
+        synchronized(sLock) {
+            sTelecomConnectionService.addConference(conference);
+        }
+    }
+
+    public static void addExistingConnectionToTelecom(
+            PhoneAccountHandle phoneAccountHandle, Connection connection) {
+        synchronized(sLock) {
+            sTelecomConnectionService.addExistingConnection(phoneAccountHandle, connection);
+        }
+    }
+
+    public static Collection<Connection> getAllConnectionsFromTelecom() {
+        synchronized(sLock) {
+            return sTelecomConnectionService.getAllConnections();
+        }
+    }
+
+    public static RemoteConnection createRemoteOutgoingConnectionToTelecom(
+            PhoneAccountHandle connectionManagerPhoneAccount,
+            ConnectionRequest request) {
+        synchronized(sLock) {
+            return sTelecomConnectionService.createRemoteOutgoingConnection(
                     connectionManagerPhoneAccount, request);
         }
     }
+
+    public static RemoteConnection createRemoteIncomingConnectionToTelecom(
+            PhoneAccountHandle connectionManagerPhoneAccount,
+            ConnectionRequest request) {
+        synchronized(sLock) {
+            return sTelecomConnectionService.createRemoteIncomingConnection(
+                    connectionManagerPhoneAccount, request);
+        }
+    }
+
+    @Override
+    public void onRemoteConferenceAdded(RemoteConference conference) {
+        synchronized(sLock) {
+            if (sConnectionService != null) {
+                sConnectionService.onRemoteConferenceAdded(conference);
+            } else {
+                mMockConnectionService.onRemoteConferenceAdded(conference);
+            }
+        }
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/CtsRemoteConnectionService.java b/tests/tests/telecom/src/android/telecom/cts/CtsRemoteConnectionService.java
new file mode 100644
index 0000000..3738487
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/CtsRemoteConnectionService.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.telecom.ConnectionRequest;
+import android.telecom.ConnectionService;
+import android.telecom.PhoneAccountHandle;
+
+/**
+ * This is the Remote ConnectionService for Telecom's CTS App. Since telecom requires that a
+ * CS be registered in the AndroidManifest.xml file, we have to have a single implementation
+ * of a CS and this is it. To test specific CS behavior, tests will implement their own CS and
+ * tell CtsRemoteConnectionService to forward any method invocations to that test's implementation.
+ * This is set up using {@link #setUp} and should be cleaned up before the end of the test using
+ * {@link #tearDown}.
+ *
+ * sConnectionService: Contains the connection service object provided by the current test in
+ *                     progress. We use this object to forward any communication received from the
+ *                     Telecom framework to the test connection service.
+ * sTelecomConnectionService: Contains the connection service object registered to the Telecom
+ *                            framework. We use this object to forward any communication from the
+ *                            test connection service to the Telecom framework.
+ *
+ */
+public class CtsRemoteConnectionService extends ConnectionService {
+    // This is the connection service implemented by the test
+    private static ConnectionService sConnectionService;
+    // This is the connection service registered with Telecom
+    private static ConnectionService sTelecomConnectionService;
+
+    public CtsRemoteConnectionService() throws Exception {
+        super();
+        if (sTelecomConnectionService != null) {
+            throw new Exception("Telecom ConnectionService exists");
+        }
+        sTelecomConnectionService = this;
+    }
+
+    // ConnectionService used by default as a fallback if no connection service is specified
+    // during test setup.
+    private static ConnectionService mMockConnectionService = new MockConnectionService();
+
+    /**
+     * Used to control whether the {@link MockVideoProvider} will be created when connections are
+     * created.  Used by {@link VideoCallTest#testVideoCallDelayProvider()} to test scenario where
+     * the {@link MockVideoProvider} is not created immediately when the Connection is created.
+     */
+    private static Object sLock = new Object();
+
+    public static void setUp(PhoneAccountHandle phoneAccountHandle,
+            ConnectionService connectionService)
+            throws Exception {
+        synchronized(sLock) {
+            if (sConnectionService != null) {
+                throw new Exception("Mock ConnectionService exists.  Failed to call tearDown().");
+            }
+            sConnectionService = connectionService;
+        }
+    }
+
+    public static void tearDown() {
+        synchronized(sLock) {
+            sConnectionService = null;
+        }
+    }
+
+    @Override
+    public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount,
+            ConnectionRequest request) {
+        synchronized(sLock) {
+            if (sConnectionService != null) {
+                return sConnectionService.onCreateOutgoingConnection(
+                        connectionManagerPhoneAccount, request);
+            } else {
+                return mMockConnectionService.onCreateOutgoingConnection(
+                        connectionManagerPhoneAccount, request);
+            }
+        }
+    }
+
+    @Override
+    public Connection onCreateIncomingConnection(PhoneAccountHandle connectionManagerPhoneAccount,
+            ConnectionRequest request) {
+        synchronized(sLock) {
+            if (sConnectionService != null) {
+                return sConnectionService.onCreateIncomingConnection(
+                        connectionManagerPhoneAccount, request);
+            } else {
+                return mMockConnectionService.onCreateIncomingConnection(
+                        connectionManagerPhoneAccount, request);
+            }
+        }
+    }
+
+    @Override
+    public void onConference(Connection connection1, Connection connection2) {
+        synchronized(sLock) {
+            if (sConnectionService != null) {
+                sConnectionService.onConference(connection1, connection2);
+            } else {
+                mMockConnectionService.onConference(connection1, connection2);
+            }
+        }
+    }
+
+    public static void addConferenceToTelecom(Conference conference) {
+        synchronized(sLock) {
+            sTelecomConnectionService.addConference(conference);
+        }
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java b/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java
index 88babef..1fbe0d5 100644
--- a/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java
+++ b/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java
@@ -26,6 +26,8 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Parcel;
+import android.os.Process;
+import android.os.UserHandle;
 import android.telecom.CallAudioState;
 import android.telecom.ConnectionRequest;
 import android.telecom.DisconnectCause;
@@ -43,14 +45,12 @@
 import java.util.List;
 
 /**
- * Verifies the parcelable interface of all the telecom objects.
+ * Verifies that the setter, getter and parcelable interfaces of the Telecom data objects are
+ * working as intended.
  */
 public class DataObjectUnitTests extends InstrumentationTestCase {
 
 
-    /**
-     * Tests the PhoneAccount object creation and recreation from a Parcel.
-     */
     public void testPhoneAccount() throws Exception {
         Context context = getInstrumentation().getContext();
         PhoneAccountHandle accountHandle = new PhoneAccountHandle(
@@ -59,12 +59,12 @@
         Icon phoneIcon = Icon.createWithResource(context, R.drawable.ic_phone_24dp);
         Uri tel = Uri.parse("tel:555-TEST");
         PhoneAccount account = PhoneAccount.builder(
-                accountHandle, LABEL)
+                accountHandle, ACCOUNT_LABEL)
                 .setAddress(tel)
                 .setSubscriptionAddress(tel)
                 .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)
                 .setHighlightColor(Color.RED)
-                .setShortDescription(LABEL)
+                .setShortDescription(ACCOUNT_LABEL)
                 .setSupportedUriSchemes(Arrays.asList("tel"))
                 .setIcon(phoneIcon)
                 .build();
@@ -74,7 +74,8 @@
         assertEquals(tel, account.getSubscriptionAddress());
         assertEquals(PhoneAccount.CAPABILITY_CALL_PROVIDER, account.getCapabilities());
         assertEquals(Color.RED, account.getHighlightColor());
-        assertEquals(LABEL, account.getShortDescription());
+        assertEquals(ACCOUNT_LABEL, account.getShortDescription());
+        assertEquals(ACCOUNT_LABEL, account.getLabel());
         assertEquals(Arrays.asList("tel"), account.getSupportedUriSchemes());
         assertEquals(phoneIcon.toString(), account.getIcon().toString());
         assertEquals(0, account.describeContents());
@@ -91,16 +92,39 @@
         assertEquals(tel, parcelAccount.getSubscriptionAddress());
         assertEquals(PhoneAccount.CAPABILITY_CALL_PROVIDER, parcelAccount.getCapabilities());
         assertEquals(Color.RED, parcelAccount.getHighlightColor());
-        assertEquals(LABEL, parcelAccount.getShortDescription());
+        assertEquals(ACCOUNT_LABEL, parcelAccount.getShortDescription());
         assertEquals(Arrays.asList("tel"), parcelAccount.getSupportedUriSchemes());
         assertEquals(phoneIcon.toString(), parcelAccount.getIcon().toString());
         assertEquals(0, parcelAccount.describeContents());
         p.recycle();
     }
 
-    /**
-     * Tests the ConnectionRequest object creation and recreation from a Parcel.
-     */
+    public void testPhoneAccountHandle() throws Exception {
+        final ComponentName component = new ComponentName(PACKAGE, COMPONENT);
+        final UserHandle userHandle = Process.myUserHandle();
+        PhoneAccountHandle accountHandle = new PhoneAccountHandle(
+                component,
+                ACCOUNT_ID,
+                userHandle);
+        assertNotNull(accountHandle);
+        assertEquals(component, accountHandle.getComponentName());
+        assertEquals(ACCOUNT_ID, accountHandle.getId());
+        assertEquals(userHandle, accountHandle.getUserHandle());
+        assertEquals(0, accountHandle.describeContents());
+
+        // Create a parcel of the object and recreate the object back
+        // from the parcel.
+        Parcel p = Parcel.obtain();
+        accountHandle.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        PhoneAccountHandle unparcelled = PhoneAccountHandle.CREATOR.createFromParcel(p);
+        assertEquals(accountHandle, unparcelled);
+        assertEquals(accountHandle.getComponentName(), unparcelled.getComponentName());
+        assertEquals(accountHandle.getId(), unparcelled.getId());
+        assertEquals(accountHandle.getUserHandle(), unparcelled.getUserHandle());
+        p.recycle();
+    }
+
     public void testConnectionRequest() throws Exception {
         PhoneAccountHandle accountHandle = new PhoneAccountHandle(
                 new ComponentName(PACKAGE, COMPONENT),
@@ -138,11 +162,7 @@
         p.recycle();
     }
 
-    /**
-     * Tests the DisconnectCause object creation and recreation from a Parcel.
-     */
     public void testDisconnectCause() throws Exception {
-        Context context = getInstrumentation().getContext();
         final CharSequence label = "Out of service area";
         final CharSequence description = "Mobile network not available";
         final String reason = "CTS Testing";
@@ -175,9 +195,6 @@
         p.recycle();
     }
 
-    /**
-     * Tests the StatusHints object creation and recreation from a Parcel.
-     */
     public void testStatusHints() throws Exception {
         Context context = getInstrumentation().getContext();
         final CharSequence label = "Wi-Fi call";
@@ -214,9 +231,6 @@
         p.recycle();
     }
 
-    /**
-     * Tests the GatewayInfo object creation and recreation from a Parcel.
-     */
     public void testGatewayInfo() throws Exception {
         final CharSequence label = "Wi-Fi call";
         Uri originalAddress = Uri.parse("http://www.google.com");
@@ -229,6 +243,7 @@
         assertEquals(gatewayAddress, info.getGatewayAddress());
         assertEquals(originalAddress, info.getOriginalAddress());
         assertEquals(0, info.describeContents());
+        assertFalse(info.isEmpty());
 
         // Create a parcel of the object and recreate the object back
         // from the parcel.
@@ -243,9 +258,6 @@
         p.recycle();
     }
 
-    /**
-     * Tests the CallAudioState object creation and recreation from a Parcel.
-     */
     public void testCallAudioState() throws Exception {
         CallAudioState audioState = new CallAudioState(
                 true,
@@ -255,6 +267,7 @@
         assertEquals(CallAudioState.ROUTE_EARPIECE, audioState.getRoute());
         assertEquals(CallAudioState.ROUTE_WIRED_OR_EARPIECE, audioState.getSupportedRouteMask());
         assertEquals(0, audioState.describeContents());
+        assertEquals("EARPIECE", CallAudioState.audioRouteToString(audioState.getRoute()));
 
         // Create a parcel of the object and recreate the object back
         // from the parcel.
@@ -269,4 +282,40 @@
         assertEquals(audioState, parcelAudioState);
         p.recycle();
     }
+
+    public void testVideoProfile() throws Exception {
+        VideoProfile videoProfile = new VideoProfile(VideoProfile.STATE_BIDIRECTIONAL,
+                VideoProfile.QUALITY_HIGH);
+        assertEquals(VideoProfile.STATE_BIDIRECTIONAL, videoProfile.getVideoState());
+        assertEquals(VideoProfile.QUALITY_HIGH, videoProfile.getQuality());
+        assertEquals(0, videoProfile.describeContents());
+        assertEquals("Audio Tx Rx", VideoProfile.videoStateToString(videoProfile.getVideoState()));
+
+        // Create a parcel of the object and recreate the object back from the parcel.
+        Parcel p = Parcel.obtain();
+        videoProfile.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        VideoProfile unparcelled = VideoProfile.CREATOR.createFromParcel(p);
+        assertEquals(videoProfile.getQuality(), unparcelled.getQuality());
+        assertEquals(videoProfile.getVideoState(), unparcelled.getVideoState());
+        p.recycle();
+    }
+
+    public void testCameraCapabilities() throws Exception {
+        VideoProfile.CameraCapabilities cameraCapabilities =
+                new VideoProfile.CameraCapabilities(500, 1000);
+        assertEquals(500, cameraCapabilities.getWidth());
+        assertEquals(1000, cameraCapabilities.getHeight());
+        assertEquals(0, cameraCapabilities.describeContents());
+
+        // Create a parcel of the object and recreate the object back from the parcel.
+        Parcel p = Parcel.obtain();
+        cameraCapabilities.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        VideoProfile.CameraCapabilities unparcelled =
+                VideoProfile.CameraCapabilities.CREATOR.createFromParcel(p);
+        assertEquals(cameraCapabilities.getWidth(), unparcelled.getWidth());
+        assertEquals(cameraCapabilities.getHeight(), unparcelled.getHeight());
+        p.recycle();
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java b/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java
index fbbf3ca..19d27af 100644
--- a/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java
@@ -18,13 +18,17 @@
 
 import static android.telecom.cts.TestUtils.*;
 
+import android.content.Context;
 import android.telecom.CallAudioState;
 import android.telecom.Call;
 import android.telecom.Connection;
 import android.telecom.ConnectionService;
 import android.telecom.InCallService;
+import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
 
+import java.util.List;
+
 /**
  * Extended suite of tests that use {@link CtsConnectionService} and {@link MockInCallService} to
  * verify the functionality of the Telecom service.
@@ -34,13 +38,13 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        if (TestUtils.shouldTestTelecom(mContext)) {
+        if (mShouldTestTelecom) {
             setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
         }
     }
 
     public void testAddNewOutgoingCallAndThenDisconnect() {
-        if (!shouldTestTelecom(mContext)) {
+        if (!mShouldTestTelecom) {
             return;
         }
 
@@ -54,7 +58,7 @@
     }
 
     public void testMuteAndUnmutePhone() {
-        if (!shouldTestTelecom(mContext)) {
+        if (!mShouldTestTelecom) {
             return;
         }
 
@@ -65,11 +69,12 @@
 
         final Call call = inCallService.getLastCall();
 
-        assertCallState(call, Call.STATE_ACTIVE);
+        assertCallState(call, Call.STATE_DIALING);
 
         assertMuteState(connection, false);
 
-        inCallService.setMuted(true);
+        // Explicitly call super implementation to enable detection of CTS coverage
+        ((InCallService) inCallService).setMuted(true);
 
         assertMuteState(connection, true);
         assertMuteState(inCallService, true);
@@ -80,7 +85,7 @@
     }
 
     public void testSwitchAudioRoutes() {
-        if (!shouldTestTelecom(mContext)) {
+        if (!mShouldTestTelecom) {
             return;
         }
 
@@ -90,16 +95,23 @@
         final MockInCallService inCallService = mInCallCallbacks.getService();
 
         final Call call = inCallService.getLastCall();
-        assertCallState(call, Call.STATE_ACTIVE);
+        assertCallState(call, Call.STATE_DIALING);
+
+        final int currentInvokeCount = mOnCallAudioStateChangedCounter.getInvokeCount();
 
         // Only test speaker and earpiece modes because the other modes are dependent on having
         // a bluetooth headset or wired headset connected.
 
-        inCallService.setAudioRoute(CallAudioState.ROUTE_SPEAKER);
+        // Explicitly call super implementation to enable detection of CTS coverage
+        ((InCallService) inCallService).setAudioRoute(CallAudioState.ROUTE_SPEAKER);
+        mOnCallAudioStateChangedCounter.waitForCount(currentInvokeCount + 1,
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
         assertAudioRoute(connection, CallAudioState.ROUTE_SPEAKER);
         assertAudioRoute(inCallService, CallAudioState.ROUTE_SPEAKER);
 
         inCallService.setAudioRoute(CallAudioState.ROUTE_EARPIECE);
+        mOnCallAudioStateChangedCounter.waitForCount(currentInvokeCount + 2,
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
         assertAudioRoute(connection, CallAudioState.ROUTE_EARPIECE);
         assertAudioRoute(inCallService, CallAudioState.ROUTE_EARPIECE);
     }
@@ -112,7 +124,7 @@
      * @see {@link Call#stopDtmfTone()}
      */
     public void testPlayAndStopDtmfTones() {
-        if (!shouldTestTelecom(mContext)) {
+        if (!mShouldTestTelecom) {
             return;
         }
 
@@ -122,7 +134,7 @@
         final MockInCallService inCallService = mInCallCallbacks.getService();
 
         final Call call = inCallService.getLastCall();
-        assertCallState(call, Call.STATE_ACTIVE);
+        assertCallState(call, Call.STATE_DIALING);
 
         assertDtmfString(connection, "");
 
@@ -145,7 +157,7 @@
     }
 
     public void testHoldAndUnholdCall() {
-        if (!shouldTestTelecom(mContext)) {
+        if (!mShouldTestTelecom) {
             return;
         }
 
@@ -156,6 +168,10 @@
 
         final Call call = inCallService.getLastCall();
 
+        assertCallState(call, Call.STATE_DIALING);
+
+        connection.setActive();
+
         assertCallState(call, Call.STATE_ACTIVE);
 
         call.hold();
@@ -168,6 +184,10 @@
     }
 
     public void testAnswerIncomingCallAudioOnly() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         addAndVerifyNewIncomingCall(getTestNumber(), null);
         final MockConnection connection = verifyConnectionForIncomingCall();
 
@@ -185,6 +205,10 @@
     }
 
     public void testAnswerIncomingCallAsVideo_SendsCorrectVideoState() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         addAndVerifyNewIncomingCall(getTestNumber(), null);
         final MockConnection connection = verifyConnectionForIncomingCall();
 
@@ -204,6 +228,10 @@
     }
 
     public void testRejectIncomingCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         addAndVerifyNewIncomingCall(getTestNumber(), null);
         final MockConnection connection = verifyConnectionForIncomingCall();
 
@@ -219,4 +247,232 @@
         assertCallState(call, Call.STATE_DISCONNECTED);
         assertConnectionState(connection, Connection.STATE_DISCONNECTED);
     }
+
+    public void testCanAddCall_CannotAddForExistingDialingCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        placeAndVerifyCall();
+        verifyConnectionForOutgoingCall();
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+
+        final Call call = inCallService.getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+
+        assertCanAddCall(inCallService, false,
+                "Should not be able to add call with existing dialing call");
+    }
+
+    public void testCanAddCall_CanAddForExistingActiveCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        placeAndVerifyCall();
+        final MockConnection connection = verifyConnectionForOutgoingCall();
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+
+        final Call call = inCallService.getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+
+        connection.setActive();
+
+        assertCallState(call, Call.STATE_ACTIVE);
+
+        assertCanAddCall(inCallService, true,
+                "Should be able to add call with only one active call");
+    }
+
+    public void testCanAddCall_CannotAddIfTooManyCalls() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        placeAndVerifyCall();
+        final MockConnection connection1 = verifyConnectionForOutgoingCall(0);
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        final Call call1 = inCallService.getLastCall();
+        assertCallState(call1, Call.STATE_DIALING);
+
+        connection1.setActive();
+
+        assertCallState(call1, Call.STATE_ACTIVE);
+
+        placeAndVerifyCall();
+        final MockConnection connection2 = verifyConnectionForOutgoingCall(1);
+
+        final Call call2 = inCallService.getLastCall();
+        assertCallState(call2, Call.STATE_DIALING);
+        connection2.setActive();
+        assertCallState(call2, Call.STATE_ACTIVE);
+
+        assertEquals("InCallService should have 2 calls", 2, inCallService.getCallCount());
+
+        assertCanAddCall(inCallService, false,
+                "Should not be able to add call with two calls already present");
+
+        call1.hold();
+        assertCallState(call1, Call.STATE_HOLDING);
+
+        assertCanAddCall(inCallService, false,
+                "Should not be able to add call with two calls already present");
+    }
+
+    public void testOnBringToForeground() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        placeAndVerifyCall();
+        verifyConnectionForOutgoingCall();
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+
+        final Call call = inCallService.getLastCall();
+
+        assertCallState(call, Call.STATE_DIALING);
+
+        assertEquals(0, mOnBringToForegroundCounter.getInvokeCount());
+
+        final TelecomManager tm =
+            (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
+
+        tm.showInCallScreen(false);
+
+        mOnBringToForegroundCounter.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+
+        assertFalse((Boolean) mOnBringToForegroundCounter.getArgs(0)[0]);
+
+        tm.showInCallScreen(true);
+
+        mOnBringToForegroundCounter.waitForCount(2, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+
+        assertTrue((Boolean) mOnBringToForegroundCounter.getArgs(1)[0]);
+    }
+
+    public void testOnPostDialWaitAndContinue() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        placeAndVerifyCall();
+        final MockConnection connection = verifyConnectionForOutgoingCall();
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        final Call call = inCallService.getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+
+        connection.setActive();
+        assertCallState(call, Call.STATE_ACTIVE);
+
+        final String postDialString = "12345";
+        ((Connection) connection).setPostDialWait(postDialString);
+        mOnPostDialWaitCounter.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+
+        assertEquals(postDialString, mOnPostDialWaitCounter.getArgs(0)[1]);
+        assertEquals(postDialString, call.getRemainingPostDialSequence());
+
+        final InvokeCounter counter = connection.getInvokeCounter(MockConnection.ON_POST_DIAL_WAIT);
+
+        call.postDialContinue(true);
+        counter.waitForCount(1);
+        assertTrue((Boolean) counter.getArgs(0)[0]);
+
+        call.postDialContinue(false);
+        counter.waitForCount(2);
+        assertFalse((Boolean) counter.getArgs(1)[0]);
+    }
+
+    public void testOnCannedTextResponsesLoaded() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        addAndVerifyNewIncomingCall(getTestNumber(), null);
+        verifyConnectionForIncomingCall();
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+
+        final Call call = inCallService.getLastCall();
+
+        assertCallState(call, Call.STATE_RINGING);
+
+        // We can't do much to enforce the number and type of responses that are preloaded on
+        // device, so the best we can do is to make sure that the call back is called and
+        // that the returned list is non-empty.
+
+        // This test should also verify that the callback is called as well, but unfortunately it
+        // is never called right now (b/22952515).
+        // mOnCannedTextResponsesLoadedCounter.waitForCount(1);
+
+        assertGetCannedTextResponsesNotEmpty(call);
+    }
+
+    public void testGetCalls() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        placeAndVerifyCall();
+        final MockConnection connection1 = verifyConnectionForOutgoingCall(0);
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        final Call call1 = inCallService.getLastCall();
+        assertCallState(call1, Call.STATE_DIALING);
+
+        connection1.setActive();
+
+        assertCallState(call1, Call.STATE_ACTIVE);
+
+        List<Call> calls = inCallService.getCalls();
+        assertEquals("InCallService.getCalls() should return list with 1 call.", 1, calls.size());
+        assertEquals(call1, calls.get(0));
+
+        addAndVerifyNewIncomingCall(getTestNumber(), null);
+        verifyConnectionForIncomingCall();
+
+        final Call call2 = inCallService.getLastCall();
+        calls = inCallService.getCalls();
+        assertEquals("InCallService.getCalls() should return list with 2 calls.", 2, calls.size());
+        assertEquals(call1, calls.get(0));
+        assertEquals(call2, calls.get(1));
+    }
+
+    private void assertGetCannedTextResponsesNotEmpty(final Call call) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return true;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return call.getCannedTextResponses() != null
+                                && !call.getCannedTextResponses().isEmpty();
+                    }
+
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call.getCannedTextResponses should not be empty");
+    }
+
+    private void assertCanAddCall(final InCallService inCallService, final boolean canAddCall,
+            String message) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return canAddCall;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return inCallService.canAddCall();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                message
+        );
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockConference.java b/tests/tests/telecom/src/android/telecom/cts/MockConference.java
new file mode 100644
index 0000000..647d039
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/MockConference.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.telecom.DisconnectCause;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConference;
+import android.telecom.TelecomManager;
+
+/**
+ * {@link Conference} subclass that immediately performs any state changes that are a result of
+ * callbacks sent from Telecom.
+ */
+public class MockConference extends Conference {
+
+    private RemoteConference mRemoteConference = null;
+    private String mDtmfString = "";
+
+    public MockConference(PhoneAccountHandle phoneAccount) {
+        super(phoneAccount);
+    }
+
+    public MockConference(MockConnection a, MockConnection b) {
+        super(a.getPhoneAccountHandle());
+        addConnection(a);
+        addConnection(b);
+        // a is the primary connection, so inherit the properties from it.
+        setConnectionCapabilities(a.getConnectionCapabilities());
+        setStatusHints(a.getStatusHints());
+        setExtras(a.getExtras());
+    }
+
+    @Override
+    public void onDisconnect() {
+        super.onDisconnect();
+        for (Connection c : getConnections()) {
+            c.setDisconnected(new DisconnectCause(DisconnectCause.REMOTE));
+            c.destroy();
+        }
+        destroy();
+        if (mRemoteConference != null) {
+            mRemoteConference.disconnect();
+        }
+    }
+
+    @Override
+    public void onSeparate(Connection connection) {
+        super.onSeparate(connection);
+        if (getConnections().contains(connection)) {
+            removeConnection(connection);
+        }
+        if (mRemoteConference != null) {
+            mRemoteConference.separate(((MockConnection)connection).getRemoteConnection());
+        }
+    }
+
+    @Override
+    public void onMerge() {
+        super.onMerge();
+        // Let's just change the connection display name for testing that onMerge was invoked.
+        for (Connection c : getConnections()) {
+            c.setCallerDisplayName(
+                    TestUtils.MERGE_CALLER_NAME, TelecomManager.PRESENTATION_ALLOWED);
+        }
+        if (mRemoteConference != null) {
+            mRemoteConference.merge();
+        }
+    }
+
+    @Override
+    public void onSwap() {
+        super.onSwap();
+        // Let's just change the connection display name for testing that onSwap was invoked.
+        for (Connection c : getConnections()) {
+            c.setCallerDisplayName(
+                    TestUtils.SWAP_CALLER_NAME, TelecomManager.PRESENTATION_ALLOWED);
+        }
+        if (mRemoteConference != null) {
+            mRemoteConference.swap();
+        }
+    }
+
+    @Override
+    public void onHold() {
+        super.onHold();
+        for (Connection c : getConnections()) {
+            c.setOnHold();
+        }
+        setOnHold();
+        if (mRemoteConference != null) {
+            mRemoteConference.hold();
+        }
+    }
+
+    @Override
+    public void onUnhold() {
+        super.onUnhold();
+        for (Connection c : getConnections()) {
+            c.setActive();
+        }
+        setActive();
+        if (mRemoteConference != null) {
+            mRemoteConference.unhold();
+        }
+    }
+
+    @Override
+    public void onPlayDtmfTone(char c) {
+        super.onPlayDtmfTone(c);
+        mDtmfString += c;
+        if (mRemoteConference != null) {
+            mRemoteConference.playDtmfTone(c);
+        }
+    }
+
+    @Override
+    public void onStopDtmfTone() {
+        super.onStopDtmfTone();
+        mDtmfString += ".";
+        if (mRemoteConference != null) {
+            mRemoteConference.stopDtmfTone();
+        }
+    }
+
+    public void setRemoteConference(RemoteConference remoteConference) {
+        mRemoteConference = remoteConference;
+    }
+
+    public RemoteConference getRemoteConference() {
+        return mRemoteConference;
+    }
+
+    public String getDtmfString() {
+        return mDtmfString;
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockConnection.java b/tests/tests/telecom/src/android/telecom/cts/MockConnection.java
index bf9d730..d556baa 100644
--- a/tests/tests/telecom/src/android/telecom/cts/MockConnection.java
+++ b/tests/tests/telecom/src/android/telecom/cts/MockConnection.java
@@ -20,14 +20,18 @@
 import android.telecom.CallAudioState;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConnection;
 import android.telecom.VideoProfile;
-import android.util.Log;
+import android.telecom.cts.BaseTelecomTestWithMockServices.InvokeCounter;
+import android.util.SparseArray;
 
 /**
  * {@link Connection} subclass that immediately performs any state changes that are a result of
  * callbacks sent from Telecom.
  */
 public class MockConnection extends Connection {
+    public static final int ON_POST_DIAL_WAIT = 1;
 
     private CallAudioState mCallAudioState =
             new CallAudioState(false, CallAudioState.ROUTE_EARPIECE, ROUTE_EARPIECE | ROUTE_SPEAKER);
@@ -35,63 +39,112 @@
     public int videoState = VideoProfile.STATE_AUDIO_ONLY;
     private String mDtmfString = "";
     private MockVideoProvider mMockVideoProvider;
+    private PhoneAccountHandle mPhoneAccountHandle;
+    private RemoteConnection mRemoteConnection = null;
+
+    private SparseArray<InvokeCounter> mInvokeCounterMap = new SparseArray<>(10);
 
     @Override
     public void onAnswer() {
-        onAnswer(VideoProfile.STATE_AUDIO_ONLY);
+        super.onAnswer();
     }
 
     @Override
     public void onAnswer(int videoState) {
+        super.onAnswer(videoState);
         this.videoState = videoState;
         setActive();
+        if (mRemoteConnection != null) {
+            mRemoteConnection.answer();
+        }
     }
 
     @Override
     public void onReject() {
+        super.onReject();
         setDisconnected(new DisconnectCause(DisconnectCause.REJECTED));
+        if (mRemoteConnection != null) {
+            mRemoteConnection.reject();
+        }
     }
 
     @Override
     public void onHold() {
+        super.onHold();
         setOnHold();
+        if (mRemoteConnection != null) {
+            mRemoteConnection.hold();
+        }
     }
 
     @Override
     public void onUnhold() {
+        super.onUnhold();
         setActive();
+        if (mRemoteConnection != null) {
+            mRemoteConnection.unhold();
+        }
     }
 
     @Override
     public void onDisconnect() {
+        super.onDisconnect();
         setDisconnected(new DisconnectCause(DisconnectCause.LOCAL));
         destroy();
+        if (mRemoteConnection != null) {
+            mRemoteConnection.disconnect();
+        }
     }
 
     @Override
     public void onAbort() {
+        super.onAbort();
+        if (mRemoteConnection != null) {
+            mRemoteConnection.abort();
+        }
     }
 
     @Override
     public void onPlayDtmfTone(char c) {
+        super.onPlayDtmfTone(c);
         mDtmfString += c;
+        if (mRemoteConnection != null) {
+            mRemoteConnection.playDtmfTone(c);
+        }
     }
 
     @Override
     public void onStopDtmfTone() {
+        super.onStopDtmfTone();
         mDtmfString += ".";
+        if (mRemoteConnection != null) {
+            mRemoteConnection.stopDtmfTone();
+        }
     }
 
     @Override
     public void onCallAudioStateChanged(CallAudioState state) {
+        super.onCallAudioStateChanged(state);
         mCallAudioState = state;
+        if (mRemoteConnection != null) {
+            mRemoteConnection.setCallAudioState(state);
+        }
     }
 
     @Override
     public void onStateChanged(int state) {
+        super.onStateChanged(state);
         mState = state;
     }
 
+    @Override
+    public void onPostDialContinue(boolean proceed) {
+        super.onPostDialContinue(proceed);
+        if (mInvokeCounterMap.get(ON_POST_DIAL_WAIT) != null) {
+            mInvokeCounterMap.get(ON_POST_DIAL_WAIT).invoke(proceed);
+        }
+    }
+
     public int getCurrentState()  {
         return mState;
     }
@@ -104,6 +157,14 @@
         return mDtmfString;
     }
 
+    public InvokeCounter getInvokeCounter(int counterIndex) {
+        if (mInvokeCounterMap.get(counterIndex) == null) {
+            mInvokeCounterMap.put(counterIndex,
+                    new InvokeCounter(getCounterLabel(counterIndex)));
+        }
+        return mInvokeCounterMap.get(counterIndex);
+    }
+
     /**
      * Creates a mock video provider for this connection.
      */
@@ -144,4 +205,29 @@
     public MockVideoProvider getMockVideoProvider() {
         return mMockVideoProvider;
     }
+
+    public void setPhoneAccountHandle(PhoneAccountHandle handle)  {
+        mPhoneAccountHandle = handle;
+    }
+
+    public PhoneAccountHandle getPhoneAccountHandle()  {
+        return mPhoneAccountHandle;
+    }
+
+    public void setRemoteConnection(RemoteConnection remoteConnection)  {
+        mRemoteConnection = remoteConnection;
+    }
+
+    public RemoteConnection getRemoteConnection()  {
+        return mRemoteConnection;
+    }
+
+    private static String getCounterLabel(int counterIndex) {
+        switch (counterIndex) {
+            case ON_POST_DIAL_WAIT:
+                return "onPostDialWait";
+            default:
+                return "Callback";
+        }
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java b/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java
index 250f197..ad64e5c 100644
--- a/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java
+++ b/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java
@@ -18,9 +18,14 @@
 
 import android.telecom.Connection;
 import android.telecom.ConnectionRequest;
+import android.telecom.ConnectionService;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConference;
+import android.telecom.RemoteConnection;
 import android.telecom.TelecomManager;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.Semaphore;
 
 /**
@@ -28,7 +33,7 @@
  * of Telecom CTS tests that simply require that a outgoing call is placed, or incoming call is
  * received.
  */
-public class MockConnectionService extends CtsConnectionService {
+public class MockConnectionService extends ConnectionService {
     public static final int CONNECTION_PRESENTATION =  TelecomManager.PRESENTATION_ALLOWED;
 
     /**
@@ -39,14 +44,18 @@
     private boolean mCreateVideoProvider = true;
 
     public Semaphore lock = new Semaphore(0);
-    public MockConnection outgoingConnection;
-    public MockConnection incomingConnection;
+    public List<MockConnection> outgoingConnections = new ArrayList<MockConnection>();
+    public List<MockConnection> incomingConnections = new ArrayList<MockConnection>();
+    public List<RemoteConnection> remoteConnections = new ArrayList<RemoteConnection>();
+    public List<MockConference> conferences = new ArrayList<MockConference>();
+    public List<RemoteConference> remoteConferences = new ArrayList<RemoteConference>();
 
     @Override
     public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount,
             ConnectionRequest request) {
         final MockConnection connection = new MockConnection();
         connection.setAddress(request.getAddress(), CONNECTION_PRESENTATION);
+        connection.setPhoneAccountHandle(connectionManagerPhoneAccount);
         if (mCreateVideoProvider) {
             connection.createMockVideoProvider();
         } else {
@@ -54,7 +63,7 @@
         }
         connection.setVideoState(request.getVideoState());
 
-        outgoingConnection = connection;
+        outgoingConnections.add(connection);
         lock.release();
         return connection;
     }
@@ -65,13 +74,37 @@
         final MockConnection connection = new MockConnection();
         connection.setAddress(request.getAddress(), CONNECTION_PRESENTATION);
         connection.createMockVideoProvider();
-        connection.setVideoState(request.getVideoState());
+        ((Connection) connection).setVideoState(request.getVideoState());
 
-        incomingConnection = connection;
+        incomingConnections.add(connection);
         lock.release();
         return connection;
     }
 
+    @Override
+    public void onConference(Connection connection1, Connection connection2) {
+        // Make sure that these connections are already not conferenced.
+        if (connection1.getConference() == null && connection2.getConference() == null) {
+            MockConference conference = new MockConference(
+                    (MockConnection)connection1, (MockConnection)connection2);
+            CtsConnectionService.addConferenceToTelecom(conference);
+            conferences.add(conference);
+            lock.release();
+        }
+    }
+
+    @Override
+    public void onRemoteExistingConnectionAdded(RemoteConnection connection) {
+        // Keep track of the remote connections added to the service
+        remoteConnections.add(connection);
+    }
+
+    @Override
+    public void onRemoteConferenceAdded(RemoteConference conference) {
+        // Keep track of the remote connections added to the service
+        remoteConferences.add(conference);
+    }
+
     public void setCreateVideoProvider(boolean createVideoProvider) {
         mCreateVideoProvider = createVideoProvider;
     }
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java b/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java
index e725466..1856603 100644
--- a/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java
+++ b/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java
@@ -17,6 +17,7 @@
 package android.telecom.cts;
 
 import android.telecom.Call;
+import android.telecom.CallAudioState;
 import android.telecom.InCallService;
 import android.util.ArrayMap;
 
@@ -27,6 +28,7 @@
 
 public class MockInCallService extends InCallService {
     private ArrayList<Call> mCalls = new ArrayList<>();
+    private ArrayList<Call> mConferenceCalls = new ArrayList<>();
     private static InCallServiceCallbacks sCallbacks;
     private Map<Call, MockVideoCallCallback> mVideoCallCallbacks =
             new ArrayMap<Call, MockVideoCallCallback>();
@@ -40,6 +42,16 @@
         public void onCallAdded(Call call, int numCalls) {};
         public void onCallRemoved(Call call, int numCalls) {};
         public void onCallStateChanged(Call call, int state) {};
+        public void onParentChanged(Call call, Call parent) {};
+        public void onChildrenChanged(Call call, List<Call> children) {};
+        public void onConferenceableCallsChanged(Call call, List<Call> conferenceableCalls) {};
+        public void onCallDestroyed(Call call) {};
+        public void onDetailsChanged(Call call, Call.Details details) {};
+        public void onCanAddCallsChanged(boolean canAddCalls) {}
+        public void onBringToForeground(boolean showDialpad) {}
+        public void onCallAudioStateChanged(CallAudioState audioState) {}
+        public void onPostDialWait(Call call, String remainingPostDialSequence) {}
+        public void onCannedTextResponsesLoaded(Call call, List<String> cannedTextResponses) {}
 
         final public MockInCallService getService() {
             return mService;
@@ -68,6 +80,62 @@
             super.onVideoCallChanged(call, videoCall);
             saveVideoCall(call, videoCall);
         }
+
+        @Override
+        public void onParentChanged(Call call, Call parent) {
+            super.onParentChanged(call, parent);
+            if (getCallbacks() != null) {
+                getCallbacks().onParentChanged(call, parent);
+            }
+        }
+
+        @Override
+        public void onChildrenChanged(Call call, List<Call> children) {
+            super.onChildrenChanged(call, children);
+            if (getCallbacks() != null) {
+                getCallbacks().onChildrenChanged(call, children);
+            }
+        }
+
+        @Override
+        public void onConferenceableCallsChanged(Call call, List<Call> conferenceableCalls) {
+            super.onConferenceableCallsChanged(call, conferenceableCalls);
+            if (getCallbacks() != null) {
+                getCallbacks().onConferenceableCallsChanged(call, conferenceableCalls);
+            }
+        }
+
+        @Override
+        public void onCallDestroyed(Call call) {
+            super.onCallDestroyed(call);
+            if (getCallbacks() != null) {
+                getCallbacks().onCallDestroyed(call);
+            }
+        }
+
+        @Override
+        public void onDetailsChanged(Call call, Call.Details details) {
+            super.onDetailsChanged(call, details);
+            if (getCallbacks() != null) {
+                getCallbacks().onDetailsChanged(call, details);
+            }
+        }
+
+        @Override
+        public void onPostDialWait(Call call, String remainingPostDialSequence) {
+            super.onPostDialWait(call, remainingPostDialSequence);
+            if (getCallbacks() != null) {
+                getCallbacks().onPostDialWait(call, remainingPostDialSequence);
+            }
+        }
+
+        @Override
+        public void onCannedTextResponsesLoaded(Call call, List<String> cannedTextResponses) {
+            super.onCannedTextResponsesLoaded(call, cannedTextResponses);
+            if (getCallbacks() != null) {
+                getCallbacks().onCannedTextResponsesLoaded(call, cannedTextResponses);
+            }
+        }
     };
 
     private void saveVideoCall(Call call, VideoCall videoCall) {
@@ -93,30 +161,64 @@
     @Override
     public void onCallAdded(Call call) {
         super.onCallAdded(call);
-        if (!mCalls.contains(call)) {
-            mCalls.add(call);
-            call.registerCallback(mCallCallback);
-
-            VideoCall videoCall = call.getVideoCall();
-            if (videoCall != null) {
-                saveVideoCall(call, videoCall);
+        if (call.getDetails().hasProperty(Call.Details.PROPERTY_CONFERENCE) == true) {
+            if (!mConferenceCalls.contains(call)) {
+                mConferenceCalls.add(call);
+                call.registerCallback(mCallCallback);
+            }
+        } else {
+            if (!mCalls.contains(call)) {
+                mCalls.add(call);
+                call.registerCallback(mCallCallback);
+                VideoCall videoCall = call.getVideoCall();
+                if (videoCall != null) {
+                    saveVideoCall(call, videoCall);
+                }
             }
         }
         if (getCallbacks() != null) {
-            getCallbacks().onCallAdded(call, mCalls.size());
+            getCallbacks().onCallAdded(call, mCalls.size() + mConferenceCalls.size());
         }
     }
 
     @Override
     public void onCallRemoved(Call call) {
         super.onCallRemoved(call);
-        mCalls.remove(call);
+        if (call.getDetails().hasProperty(Call.Details.PROPERTY_CONFERENCE) == true) {
+            mConferenceCalls.remove(call);
+        } else {
+            mCalls.remove(call);
+        }
         if (getCallbacks() != null) {
-            getCallbacks().onCallRemoved(call, mCalls.size());
+            getCallbacks().onCallRemoved(call, mCalls.size() + mConferenceCalls.size());
             saveVideoCall(call, null /* remove videoCall */);
         }
     }
 
+    @Override
+    public void onCanAddCallChanged(boolean canAddCall) {
+        super.onCanAddCallChanged(canAddCall);
+        if (getCallbacks() != null) {
+            getCallbacks().onCanAddCallsChanged(canAddCall);
+        }
+    }
+
+    @Override
+    public void onBringToForeground(boolean showDialpad) {
+        super.onBringToForeground(showDialpad);
+        if (getCallbacks() != null) {
+            getCallbacks().onBringToForeground(showDialpad);
+        }
+    }
+
+    @Override
+    public void onCallAudioStateChanged(CallAudioState audioState) {
+        super.onCallAudioStateChanged(audioState);
+        if (getCallbacks() != null) {
+            getCallbacks().onCallAudioStateChanged(audioState);
+        }
+    }
+
     /**
      * @return the number of calls currently added to the {@code InCallService}.
      */
@@ -125,15 +227,32 @@
     }
 
     /**
+     * @return the number of conference calls currently added to the {@code InCallService}.
+     */
+    public int getConferenceCallCount() {
+        return mConferenceCalls.size();
+    }
+
+    /**
      * @return the most recently added call that exists inside the {@code InCallService}
      */
     public Call getLastCall() {
-        if (mCalls.size() >= 1) {
+        if (!mCalls.isEmpty()) {
             return mCalls.get(mCalls.size() - 1);
         }
         return null;
     }
 
+    /**
+     * @return the most recently added conference call that exists inside the {@code InCallService}
+     */
+    public Call getLastConferenceCall() {
+        if (!mConferenceCalls.isEmpty()) {
+            return mConferenceCalls.get(mConferenceCalls.size() - 1);
+        }
+        return null;
+    }
+
     public void disconnectLastCall() {
         final Call call = getLastCall();
         if (call != null) {
@@ -141,6 +260,25 @@
         }
     }
 
+    public void disconnectLastConferenceCall() {
+        final Call call = getLastConferenceCall();
+        if (call != null) {
+            call.disconnect();
+        }
+    }
+
+    public void disconnectAllCalls() {
+        for (final Call call: mCalls) {
+            call.disconnect();
+        }
+    }
+
+    public void disconnectAllConferenceCalls() {
+        for (final Call call: mConferenceCalls) {
+            call.disconnect();
+        }
+    }
+
     public static void setCallbacks(InCallServiceCallbacks callbacks) {
         synchronized (sLock) {
             sCallbacks = callbacks;
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockVideoProvider.java b/tests/tests/telecom/src/android/telecom/cts/MockVideoProvider.java
index 8ed422f..a1b6b65 100644
--- a/tests/tests/telecom/src/android/telecom/cts/MockVideoProvider.java
+++ b/tests/tests/telecom/src/android/telecom/cts/MockVideoProvider.java
@@ -87,7 +87,7 @@
      */
     @Override
     public void onSendSessionModifyRequest(VideoProfile fromProfile, VideoProfile toProfile) {
-        receiveSessionModifyResponse(Connection.VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS,
+        super.receiveSessionModifyResponse(Connection.VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS,
                 toProfile, toProfile);
         mMockConnection.setVideoState(toProfile.getVideoState());
     }
@@ -111,7 +111,7 @@
      */
     @Override
     public void onRequestConnectionDataUsage() {
-        setCallDataUsage(DATA_USAGE);
+        super.setCallDataUsage(DATA_USAGE);
     }
 
     @Override
@@ -126,11 +126,11 @@
     private void handleCameraChange(String cameraId) {
         mCameraId = cameraId;
         if (CAMERA_FRONT.equals(mCameraId)) {
-            changeCameraCapabilities(new VideoProfile.CameraCapabilities(CAMERA_FRONT_DIMENSIONS,
-                    CAMERA_FRONT_DIMENSIONS));
+            super.changeCameraCapabilities(new VideoProfile.CameraCapabilities(
+                    CAMERA_FRONT_DIMENSIONS, CAMERA_FRONT_DIMENSIONS));
         } else if (CAMERA_BACK.equals(mCameraId)) {
-            changeCameraCapabilities(new VideoProfile.CameraCapabilities(CAMERA_BACK_DIMENSIONS,
-                    CAMERA_BACK_DIMENSIONS));
+            super.changeCameraCapabilities(new VideoProfile.CameraCapabilities(
+                    CAMERA_BACK_DIMENSIONS, CAMERA_BACK_DIMENSIONS));
         }
     }
 
@@ -140,7 +140,7 @@
      * @param videoQuality The video quality.
      */
     public void sendMockVideoQuality(int videoQuality) {
-        changeVideoQuality(videoQuality);
+        super.changeVideoQuality(videoQuality);
     }
 
     /**
@@ -149,7 +149,7 @@
      * @param event The call session event.
      */
     public void sendMockCallSessionEvent(int event) {
-        handleCallSessionEvent(event);
+        super.handleCallSessionEvent(event);
     }
 
     /**
@@ -158,7 +158,7 @@
      * @param width The peer width.
      */
     public void sendMockPeerWidth(int width) {
-        changePeerDimensions(width, width);
+        super.changePeerDimensions(width, width);
     }
 
     /**
@@ -167,7 +167,7 @@
      * @param request The requested profile.
      */
     public void sendMockSessionModifyRequest(VideoProfile request) {
-        receiveSessionModifyRequest(request);
+        super.receiveSessionModifyRequest(request);
     }
 
     public int getDeviceOrientation() {
diff --git a/tests/tests/telecom/src/android/telecom/cts/NumberDialingTest.java b/tests/tests/telecom/src/android/telecom/cts/NumberDialingTest.java
index 673013f..8ffcf48 100644
--- a/tests/tests/telecom/src/android/telecom/cts/NumberDialingTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/NumberDialingTest.java
@@ -35,7 +35,7 @@
     private static final int CS_WAIT_MILLIS = 2000;
 
     public void testEndInPound() throws Exception {
-        if (!shouldTestTelecom(mContext)) {
+        if (!mShouldTestTelecom) {
             return;
         }
 
@@ -63,6 +63,6 @@
         }
         assertEquals(address, res[0]);
 
-        tearDownConnectionService(account);
+        tearDownConnectionService(account.getAccountHandle());
     }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java b/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java
index b1c77fd..f2422c9 100644
--- a/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java
@@ -30,7 +30,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        if (TestUtils.shouldTestTelecom(mContext)) {
+        if (mShouldTestTelecom) {
             setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
         }
     }
@@ -52,6 +52,10 @@
      * @see {@link TelecomManager#EXTRA_START_CALL_WITH_SPEAKERPHONE}
      */
     public void testStartCallWithSpeakerphoneTrue_SpeakerphoneOnInCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         final Bundle extras = new Bundle();
         extras.putBoolean(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, true);
         placeAndVerifyCall(extras);
@@ -60,6 +64,10 @@
     }
 
     public void testStartCallWithSpeakerphoneFalse_SpeakerphoneOffInCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         final Bundle extras = new Bundle();
         extras.putBoolean(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, false);
         placeAndVerifyCall(extras);
@@ -68,6 +76,10 @@
     }
 
     public void testStartCallWithSpeakerphoneNotProvided_SpeakerphoneOffByDefault() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall();
         verifyConnectionForOutgoingCall();
         assertAudioRoute(mInCallCallbacks.getService(), CallAudioState.ROUTE_EARPIECE);
diff --git a/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java
index fd554ef..cc03288 100644
--- a/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java
@@ -40,23 +40,37 @@
             new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID);
 
     public static final PhoneAccount TEST_SIM_PHONE_ACCOUNT = PhoneAccount.builder(
-            TEST_PHONE_ACCOUNT_HANDLE, LABEL)
+            TEST_PHONE_ACCOUNT_HANDLE, ACCOUNT_LABEL)
             .setAddress(Uri.parse("tel:555-TEST"))
             .setSubscriptionAddress(Uri.parse("tel:555-TEST"))
             .setCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)
             .setHighlightColor(Color.RED)
-            .setShortDescription(LABEL)
-            .setSupportedUriSchemes(Arrays.asList("tel"))
+            .setShortDescription(ACCOUNT_LABEL)
+            .setSupportedUriSchemes(Arrays.asList(PhoneAccount.SCHEME_TEL))
             .build();
 
     public static final PhoneAccount TEST_NO_SIM_PHONE_ACCOUNT = PhoneAccount.builder(
-            TEST_PHONE_ACCOUNT_HANDLE, LABEL)
+            TEST_PHONE_ACCOUNT_HANDLE, ACCOUNT_LABEL)
             .setAddress(Uri.parse("tel:555-TEST"))
             .setSubscriptionAddress(Uri.parse("tel:555-TEST"))
-            .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)
+            .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER |
+                    PhoneAccount.CAPABILITY_VIDEO_CALLING)
             .setHighlightColor(Color.RED)
-            .setShortDescription(LABEL)
-            .setSupportedUriSchemes(Arrays.asList("tel"))
+            .setShortDescription(ACCOUNT_LABEL)
+            .setSupportedUriSchemes(Arrays.asList(
+                    PhoneAccount.SCHEME_TEL, PhoneAccount.SCHEME_VOICEMAIL))
+            .build();
+
+    public static final PhoneAccount TEST_CALL_MANAGER_PHONE_ACCOUNT = PhoneAccount.builder(
+            TEST_PHONE_ACCOUNT_HANDLE, ACCOUNT_LABEL)
+            .setAddress(Uri.parse("tel:555-TEST"))
+            .setSubscriptionAddress(Uri.parse("tel:555-TEST"))
+            .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER |
+                    PhoneAccount.CAPABILITY_CONNECTION_MANAGER)
+            .setHighlightColor(Color.RED)
+            .setShortDescription(ACCOUNT_LABEL)
+            .setSupportedUriSchemes(Arrays.asList(
+                    PhoneAccount.SCHEME_TEL, PhoneAccount.SCHEME_VOICEMAIL))
             .build();
 
     private Context mContext;
@@ -74,6 +88,9 @@
 
     @Override
     protected void tearDown() throws Exception {
+        if (!TestUtils.shouldTestTelecom(mContext)) {
+            return;
+        }
         mTelecomManager.unregisterPhoneAccount(TEST_PHONE_ACCOUNT_HANDLE);
         PhoneAccount retrievedPhoneAccount = mTelecomManager.getPhoneAccount(
                 TEST_PHONE_ACCOUNT_HANDLE);
@@ -113,12 +130,12 @@
         }
         Method setIsEnabled = null;
         PhoneAccount.Builder phoneAccountBuilder = PhoneAccount.builder(
-                TEST_PHONE_ACCOUNT_HANDLE, LABEL)
+                TEST_PHONE_ACCOUNT_HANDLE, ACCOUNT_LABEL)
                 .setAddress(Uri.parse("tel:555-TEST"))
                 .setSubscriptionAddress(Uri.parse("tel:555-TEST"))
                 .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)
                 .setHighlightColor(Color.RED)
-                .setShortDescription(LABEL)
+                .setShortDescription(ACCOUNT_LABEL)
                 .setSupportedUriSchemes(Arrays.asList("tel"));
         try {
             setIsEnabled = PhoneAccount.Builder.class.getDeclaredMethod(
@@ -151,9 +168,33 @@
         final List<PhoneAccountHandle> newAccounts = mTelecomManager.getCallCapablePhoneAccounts();
         assertNotNull("No enabled Phone account found.", newAccounts);
         assertEquals("1 new enabled Phone account expected.", newAccounts.size(),
-                oldAccountsListSize+1);
+                oldAccountsListSize + 1);
         assertTrue("Enabled Phone accounts do not contain the test account.",
                 newAccounts.contains(TEST_PHONE_ACCOUNT_HANDLE));
     }
 
+    public void testRegisterPhoneAccount_CheckCapabilities() throws Exception {
+        if (!shouldTestTelecom(mContext)) {
+            return;
+        }
+        mTelecomManager.registerPhoneAccount(TEST_NO_SIM_PHONE_ACCOUNT);
+        PhoneAccount retrievedPhoneAccount = mTelecomManager.getPhoneAccount(
+                TEST_PHONE_ACCOUNT_HANDLE);
+        assertTrue("Phone account should have call provider & video calling capability.",
+                retrievedPhoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER |
+                        PhoneAccount.CAPABILITY_VIDEO_CALLING));
+    }
+
+    public void testRegisterPhoneAccount_CheckURISchemeSupported() throws Exception {
+        if (!shouldTestTelecom(mContext)) {
+            return;
+        }
+        mTelecomManager.registerPhoneAccount(TEST_NO_SIM_PHONE_ACCOUNT);
+        PhoneAccount retrievedPhoneAccount = mTelecomManager.getPhoneAccount(
+                TEST_PHONE_ACCOUNT_HANDLE);
+        assertTrue("Phone account should support tel URI scheme.",
+                retrievedPhoneAccount.supportsUriScheme(PhoneAccount.SCHEME_TEL));
+        assertTrue("Phone account should support voicemail URI scheme.",
+                retrievedPhoneAccount.supportsUriScheme(PhoneAccount.SCHEME_VOICEMAIL));
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/RemoteConferenceTest.java b/tests/tests/telecom/src/android/telecom/cts/RemoteConferenceTest.java
new file mode 100644
index 0000000..3fc65ea
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/RemoteConferenceTest.java
@@ -0,0 +1,586 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import static android.telecom.cts.TestUtils.*;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.telecom.Call;
+import android.telecom.Connection;
+import android.telecom.ConnectionRequest;
+import android.telecom.DisconnectCause;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConference;
+import android.telecom.RemoteConnection;
+import android.telecom.TelecomManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Extended suite of tests that use {@link CtsConnectionService} and {@link MockInCallService} to
+ * verify the functionality of Remote Conferences.
+ * We make 2 connections on the {@link CtsConnectionService} & we create 2 connections on the
+ * {@link CtsRemoteConnectionService} via the {@link RemoteConnection} object. We store this
+ * corresponding RemoteConnection object on the connections to plumb the modifications on
+ * the connections in {@link CtsConnectionService} to the connections on
+ * {@link CtsRemoteConnectionService}. Then we create a remote conference on the
+ * {@link CtsRemoteConnectionService} and control it via the {@link RemoteConference}
+ * object. The onConference method on the managerConnectionService will initiate a remote conference
+ * creation on the remoteConnectionService and once that is completed, we create a local conference
+ * on the managerConnectionService.
+ */
+public class RemoteConferenceTest extends BaseRemoteTelecomTest {
+
+    public static final int CONF_CAPABILITIES = Connection.CAPABILITY_SEPARATE_FROM_CONFERENCE |
+            Connection.CAPABILITY_DISCONNECT_FROM_CONFERENCE | Connection.CAPABILITY_HOLD |
+            Connection.CAPABILITY_MERGE_CONFERENCE | Connection.CAPABILITY_SWAP_CONFERENCE;
+
+    MockConnection mConnection1, mConnection2;
+    MockConnection mRemoteConnection1, mRemoteConnection2;
+    Call mCall1, mCall2;
+    MockConference mConference, mRemoteConference;
+    RemoteConference mRemoteConferenceObject;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+        if (mShouldTestTelecom) {
+            addRemoteConferenceCall();
+            verifyRemoteConferenceObject(mRemoteConferenceObject, mRemoteConference, mConference);
+        }
+    }
+
+    public void testRemoteConferenceCreate() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call confCall = mInCallCallbacks.getService().getLastConferenceCall();
+        assertCallState(confCall, Call.STATE_ACTIVE);
+
+        if (mCall1.getParent() != confCall || mCall2.getParent() != confCall) {
+            fail("The 2 participating calls should contain the conference call as its parent");
+        }
+        if (!(confCall.getChildren().contains(mCall1) && confCall.getChildren().contains(mCall2))) {
+            fail("The conference call should contain the 2 participating calls as its children");
+        }
+
+        assertConnectionState(mConnection1, Connection.STATE_ACTIVE);
+        assertConnectionState(mConnection2, Connection.STATE_ACTIVE);
+        assertConnectionState(mRemoteConnection1, Connection.STATE_ACTIVE);
+        assertConnectionState(mRemoteConnection2, Connection.STATE_ACTIVE);
+        assertConferenceState(mConference, Connection.STATE_ACTIVE);
+        assertConferenceState(mRemoteConference, Connection.STATE_ACTIVE);
+        assertRemoteConferenceState(mRemoteConferenceObject, Connection.STATE_ACTIVE);
+    }
+
+    public void testRemoteConferenceSplit() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call confCall = mInCallCallbacks.getService().getLastConferenceCall();
+        assertCallState(confCall, Call.STATE_ACTIVE);
+
+        if (!(mCall1.getParent() == confCall) && (confCall.getChildren().contains(mCall1))) {
+            fail("Call 1 not conferenced");
+        }
+        assertTrue(mConference.getConnections().contains(mConnection1));
+        assertTrue(mRemoteConference.getConnections().contains(mRemoteConnection1));
+
+        splitFromConferenceCall(mCall1);
+
+        if ((mCall1.getParent() == confCall) || (confCall.getChildren().contains(mCall1))) {
+            fail("Call 1 should not be still conferenced");
+        }
+        assertFalse(mConference.getConnections().contains(mConnection1));
+        assertFalse(mRemoteConference.getConnections().contains(mRemoteConnection1));
+    }
+
+    public void testRemoteConferenceHoldAndUnhold() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call confCall = mInCallCallbacks.getService().getLastConferenceCall();
+        assertCallState(confCall, Call.STATE_ACTIVE);
+
+        confCall.hold();
+        assertCallState(confCall, Call.STATE_HOLDING);
+        assertCallState(mCall1, Call.STATE_HOLDING);
+        assertCallState(mCall2, Call.STATE_HOLDING);
+        assertConnectionState(mConnection1, Connection.STATE_HOLDING);
+        assertConnectionState(mConnection2, Connection.STATE_HOLDING);
+        assertConnectionState(mRemoteConnection1, Connection.STATE_HOLDING);
+        assertConnectionState(mRemoteConnection2, Connection.STATE_HOLDING);
+        assertConferenceState(mConference, Connection.STATE_HOLDING);
+        assertConferenceState(mRemoteConference, Connection.STATE_HOLDING);
+        assertRemoteConferenceState(mRemoteConferenceObject, Connection.STATE_HOLDING);
+
+        confCall.unhold();
+        assertCallState(confCall, Call.STATE_ACTIVE);
+        assertCallState(mCall1, Call.STATE_ACTIVE);
+        assertCallState(mCall2, Call.STATE_ACTIVE);
+        assertConnectionState(mConnection1, Connection.STATE_ACTIVE);
+        assertConnectionState(mConnection2, Connection.STATE_ACTIVE);
+        assertConnectionState(mRemoteConnection1, Connection.STATE_ACTIVE);
+        assertConnectionState(mRemoteConnection2, Connection.STATE_ACTIVE);
+        assertConferenceState(mConference, Connection.STATE_ACTIVE);
+        assertConferenceState(mRemoteConference, Connection.STATE_ACTIVE);
+        assertRemoteConferenceState(mRemoteConferenceObject, Connection.STATE_ACTIVE);
+    }
+
+    public void testRemoteConferenceMergeAndSwap() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call confCall = mInCallCallbacks.getService().getLastConferenceCall();
+        assertCallState(confCall, Call.STATE_ACTIVE);
+
+        confCall.mergeConference();
+        assertCallDisplayName(mCall1, TestUtils.MERGE_CALLER_NAME);
+        assertCallDisplayName(mCall2, TestUtils.MERGE_CALLER_NAME);
+        assertConnectionCallDisplayName(mConnection1,
+                TestUtils.MERGE_CALLER_NAME);
+        assertConnectionCallDisplayName(mConnection2,
+                TestUtils.MERGE_CALLER_NAME);
+        assertConnectionCallDisplayName(mRemoteConnection1,
+                TestUtils.MERGE_CALLER_NAME);
+        assertConnectionCallDisplayName(mRemoteConnection2,
+                TestUtils.MERGE_CALLER_NAME);
+
+        confCall.swapConference();
+        assertCallDisplayName(mCall1, TestUtils.SWAP_CALLER_NAME);
+        assertCallDisplayName(mCall2, TestUtils.SWAP_CALLER_NAME);
+        assertConnectionCallDisplayName(mConnection1,
+                TestUtils.SWAP_CALLER_NAME);
+        assertConnectionCallDisplayName(mConnection2,
+                TestUtils.SWAP_CALLER_NAME);
+        assertConnectionCallDisplayName(mRemoteConnection1,
+                TestUtils.SWAP_CALLER_NAME);
+        assertConnectionCallDisplayName(mRemoteConnection2,
+                TestUtils.SWAP_CALLER_NAME);
+    }
+
+    public void testRemoteConferenceDTMFTone() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        final Call confCall = mInCallCallbacks.getService().getLastConferenceCall();
+        assertCallState(confCall, Call.STATE_ACTIVE);
+
+        assertTrue(mConference.getDtmfString().isEmpty());
+        assertTrue(mRemoteConference.getDtmfString().isEmpty());
+        confCall.playDtmfTone('1');
+        assertDtmfString(mConference, "1");
+        assertDtmfString(mRemoteConference, "1");
+        confCall.stopDtmfTone();
+        assertDtmfString(mConference, "1.");
+        assertDtmfString(mRemoteConference, "1.");
+        confCall.playDtmfTone('3');
+        assertDtmfString(mConference, "1.3");
+        assertDtmfString(mRemoteConference, "1.3");
+        confCall.stopDtmfTone();
+        assertDtmfString(mConference, "1.3.");
+        assertDtmfString(mRemoteConference, "1.3.");
+    }
+
+    public void testRemoteConferenceCallbacks_StateChange() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_StateChange");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onStateChanged(RemoteConference conference, int oldState, int newState) {
+                super.onStateChanged(conference, oldState, newState);
+                callbackInvoker.invoke(conference, oldState, newState);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        mRemoteConference.setOnHold();
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(Connection.STATE_ACTIVE, callbackInvoker.getArgs(0)[1]);
+        assertEquals(Connection.STATE_HOLDING, callbackInvoker.getArgs(0)[2]);
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConferenceCallbacks_Disconnect() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_Disconnect");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onDisconnected(RemoteConference conference,
+                                       DisconnectCause disconnectCause) {
+                super.onDisconnected(conference, disconnectCause);
+                callbackInvoker.invoke(conference, disconnectCause);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        DisconnectCause cause = new DisconnectCause(DisconnectCause.LOCAL);
+        mRemoteConference.setDisconnected(cause);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(cause, callbackInvoker.getArgs(0)[1]);
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConferenceCallbacks_ConnectionAdd() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_ConnectionAdd");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onConnectionAdded(RemoteConference conference,
+                                          RemoteConnection connection) {
+                super.onConnectionAdded(conference, connection);
+                callbackInvoker.invoke(conference, connection);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        placeAndVerifyCall();
+        RemoteConnection newRemoteConnectionObject =
+                verifyConnectionForOutgoingCall(1).getRemoteConnection();
+        MockConnection newConnection = verifyConnectionForOutgoingCallOnRemoteCS(2);
+        mRemoteConference.addConnection(newConnection);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        // No "equals" method in RemoteConnection
+        //assertEquals(newRemoteConnectionObject, callbackInvoker.getArgs(0)[1]);
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConferenceCallbacks_ConnectionRemove() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_ConnectionRemove");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onConnectionRemoved(RemoteConference conference,
+                                            RemoteConnection connection) {
+                super.onConnectionRemoved(conference, connection);
+                callbackInvoker.invoke(conference, connection);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        placeAndVerifyCall();
+        RemoteConnection newRemoteConnectionObject =
+                verifyConnectionForOutgoingCall(1).getRemoteConnection();
+        MockConnection newConnection = verifyConnectionForOutgoingCallOnRemoteCS(2);
+        mRemoteConference.addConnection(newConnection);
+        mRemoteConference.removeConnection(newConnection);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        //assertEquals(newRemoteConnectionObject, callbackInvoker.getArgs(0)[1]);
+        // No "equals" method in RemoteConnection
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConferenceCallbacks_ConnectionCapabilities() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_ConnectionCapabilities");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onConnectionCapabilitiesChanged(
+                    RemoteConference conference,
+                    int connectionCapabilities) {
+                super.onConnectionCapabilitiesChanged(conference, connectionCapabilities);
+                callbackInvoker.invoke(conference, connectionCapabilities);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        int capabilities = mRemoteConference.getConnectionCapabilities() | Connection.CAPABILITY_MUTE;
+        mRemoteConference.setConnectionCapabilities(capabilities);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(capabilities, callbackInvoker.getArgs(0)[1]);
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConferenceCallbacks_ConferenceableConnections() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_ConferenceableConnections");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onConferenceableConnectionsChanged(
+                    RemoteConference conference,
+                    List<RemoteConnection> conferenceableConnections) {
+                super.onConferenceableConnectionsChanged(conference, conferenceableConnections);
+                callbackInvoker.invoke(conference, conferenceableConnections);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        placeAndVerifyCall();
+        RemoteConnection newRemoteConnectionObject =
+            verifyConnectionForOutgoingCall(1).getRemoteConnection();
+        MockConnection newConnection = verifyConnectionForOutgoingCallOnRemoteCS(1);
+        ArrayList<Connection> confList = new ArrayList<>();
+        confList.add(newConnection);
+        mRemoteConference.setConferenceableConnections(confList);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        // No "equals" method in RemoteConnection
+        //assertTrue(((List<RemoteConnection>)callbackInvoker.getArgs(0)[1]).contains(
+                //newRemoteConnectionObject));
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConferenceCallbacks_Destroy() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_Destroy");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onDestroyed(RemoteConference conference) {
+                super.onDestroyed(conference);
+                callbackInvoker.invoke(conference);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        mRemoteConference.destroy();
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConferenceCallbacks_Extras() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        Handler handler = setupRemoteConferenceCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConferenceCallbacks_Extras");
+        RemoteConference.Callback callback;
+
+        callback = new RemoteConference.Callback() {
+            @Override
+            public void onExtrasChanged(RemoteConference conference, Bundle extras) {
+                super.onExtrasChanged(conference, extras);
+                callbackInvoker.invoke(conference, extras);
+            }
+        };
+        mRemoteConferenceObject.registerCallback(callback, handler);
+        Bundle extras = new Bundle();
+        extras.putString(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE, "Test");
+        mRemoteConference.setExtras(extras);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConferenceObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(extras, callbackInvoker.getArgs(0)[1]);
+        mRemoteConferenceObject.unregisterCallback(callback);
+    }
+
+    private void verifyRemoteConferenceObject(RemoteConference remoteConferenceObject,
+            MockConference remoteConference, MockConference conference) {
+        assertEquals(remoteConference.getConnectionCapabilities(),
+                remoteConferenceObject.getConnectionCapabilities());
+        assertTrue(remoteConferenceObject.getConferenceableConnections().isEmpty());
+        List<RemoteConnection> remoteConnections = new ArrayList<>();
+        for (Connection c: conference.getConnections()) {
+            remoteConnections.add(((MockConnection)c).getRemoteConnection());
+        }
+        assertEquals(remoteConnections, remoteConferenceObject.getConnections());
+        assertEquals(remoteConference.getDisconnectCause(), remoteConferenceObject.getDisconnectCause());
+        assertEquals(remoteConference.getExtras(), remoteConferenceObject.getExtras());
+    }
+
+    private void addRemoteConnectionOutgoingCalls() {
+        try {
+            MockConnectionService managerConnectionService = new MockConnectionService() {
+                @Override
+                public Connection onCreateOutgoingConnection(
+                        PhoneAccountHandle connectionManagerPhoneAccount,
+                        ConnectionRequest request) {
+                    MockConnection connection = (MockConnection)super.onCreateOutgoingConnection(
+                            connectionManagerPhoneAccount, request);
+                    ConnectionRequest remoteRequest = new ConnectionRequest(
+                            TEST_REMOTE_PHONE_ACCOUNT_HANDLE,
+                            request.getAddress(),
+                            request.getExtras());
+                    RemoteConnection remoteConnection =
+                            CtsConnectionService.createRemoteOutgoingConnectionToTelecom(
+                                    TEST_REMOTE_PHONE_ACCOUNT_HANDLE, remoteRequest);
+                    connection.setRemoteConnection(remoteConnection);
+                    // Modify the connection object created with local values.
+                    int capabilities = connection.getConnectionCapabilities();
+                    connection.setConnectionCapabilities(capabilities | CONF_CAPABILITIES);
+                    return connection;
+                }
+                @Override
+                public void onConference(Connection connection1, Connection connection2) {
+                    /**
+                     * Fetch the corresponding remoteConnection objects and instantiate a remote
+                     * conference creation on the remoteConnectionService instead of this
+                     * managerConnectionService.
+                     */
+                    RemoteConnection remoteConnection1 =
+                            ((MockConnection)connection1).getRemoteConnection();
+                    RemoteConnection remoteConnection2 =
+                            ((MockConnection)connection2).getRemoteConnection();
+                    if (remoteConnection1.getConference() == null &&
+                            remoteConnection2.getConference() == null) {
+                        conferenceRemoteConnections(remoteConnection1, remoteConnection2);
+                    }
+                }
+                @Override
+                public void onRemoteConferenceAdded(RemoteConference remoteConference) {
+                    /**
+                     * Now that the remote conference has been created,
+                     * let's create a local conference on this ConnectionService.
+                     */
+                    MockConference conference = new MockConference(mConnection1, mConnection2);
+                    conference.setRemoteConference(remoteConference);
+                    CtsConnectionService.addConferenceToTelecom(conference);
+                    conferences.add(conference);
+                    lock.release();
+                }
+            };
+            /**
+             * We want the conference to be instantiated on the remoteConnectionService registered
+             * with telecom.
+             */
+            MockConnectionService remoteConnectionService= new MockConnectionService() {
+                @Override
+                public Connection onCreateOutgoingConnection(
+                        PhoneAccountHandle connectionManagerPhoneAccount,
+                        ConnectionRequest request) {
+                    Connection connection = super.onCreateOutgoingConnection(
+                            connectionManagerPhoneAccount,
+                            request);
+                    // Modify the connection object created with local values.
+                    int capabilities = connection.getConnectionCapabilities();
+                    connection.setConnectionCapabilities(capabilities | CONF_CAPABILITIES);
+                    return connection;
+                }
+                @Override
+                public void onConference(Connection connection1, Connection connection2) {
+                    // Make sure that these connections are already not conferenced.
+                    if (connection1.getConference() == null &&
+                            connection2.getConference() == null) {
+                        MockConference conference = new MockConference(
+                                (MockConnection)connection1, (MockConnection)connection2);
+                        CtsRemoteConnectionService.addConferenceToTelecom(conference);
+                        conferences.add(conference);
+                        lock.release();
+                    }
+                }
+            };
+            setupConnectionServices(managerConnectionService, remoteConnectionService,
+                    FLAG_REGISTER | FLAG_ENABLE);
+        } catch(Exception e) {
+            fail("Error in setting up the connection services");
+        }
+
+        placeAndVerifyCall();
+        mConnection1 = verifyConnectionForOutgoingCall(0);
+        mRemoteConnection1 = verifyConnectionForOutgoingCallOnRemoteCS(0);
+        mCall1 = mInCallCallbacks.getService().getLastCall();
+        assertCallState(mCall1, Call.STATE_DIALING);
+        mConnection1.setActive();
+        mRemoteConnection1.setActive();
+        assertCallState(mCall1, Call.STATE_ACTIVE);
+
+        placeAndVerifyCall();
+        mConnection2 = verifyConnectionForOutgoingCall(1);
+        mRemoteConnection2 = verifyConnectionForOutgoingCallOnRemoteCS(1);
+        mCall2 = mInCallCallbacks.getService().getLastCall();
+        assertCallState(mCall2, Call.STATE_DIALING);
+        mConnection2.setActive();
+        mRemoteConnection2.setActive();
+        assertCallState(mCall2, Call.STATE_ACTIVE);
+
+        setAndVerifyConferenceablesForOutgoingConnection(0);
+        setAndVerifyConferenceablesForOutgoingConnection(1);
+        setAndVerifyConferenceablesForOutgoingConnectionOnRemoteCS(0);
+        setAndVerifyConferenceablesForOutgoingConnectionOnRemoteCS(1);
+    }
+
+    private void addRemoteConferenceCall() {
+        addRemoteConnectionOutgoingCalls();
+        /**
+         * We've 2 connections on the local connectionService which have 2 corresponding
+         * connections on the remoteConnectionService controlled via 2 RemoteConnection objects
+         * on the connectionService. We now create a conference on the local two connections
+         * which triggers a creation of conference on the remoteConnectionService via the
+         * RemoteConference object.
+         */
+
+        addConferenceCall(mCall1, mCall2);
+        mConference = verifyConferenceForOutgoingCall();
+        mRemoteConference = verifyConferenceForOutgoingCallOnRemoteCS();
+        mRemoteConferenceObject = mConference.getRemoteConference();
+        mRemoteConnection1 = (MockConnection)mRemoteConference.getConnections().get(0);
+        mRemoteConnection2 = (MockConnection)mRemoteConference.getConnections().get(1);
+    }
+
+    private Handler setupRemoteConferenceCallbacksTest() {
+        final Call confCall = mInCallCallbacks.getService().getLastConferenceCall();
+        assertCallState(confCall, Call.STATE_ACTIVE);
+
+        // Create a looper thread for the callbacks.
+        HandlerThread workerThread = new HandlerThread("CallbackThread");
+        workerThread.start();
+        Handler handler = new Handler(workerThread.getLooper());
+        return handler;
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/RemoteConnectionTest.java b/tests/tests/telecom/src/android/telecom/cts/RemoteConnectionTest.java
new file mode 100644
index 0000000..79fb592
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/RemoteConnectionTest.java
@@ -0,0 +1,1247 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import static android.telecom.cts.TestUtils.*;
+
+import android.graphics.SurfaceTexture;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.telecom.Call;
+import android.telecom.Connection;
+import android.telecom.ConnectionRequest;
+import android.telecom.DisconnectCause;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.RemoteConnection;
+import android.telecom.RemoteConnection.VideoProvider;
+import android.telecom.StatusHints;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+import android.view.Surface;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Extended suite of tests that use {@link CtsConnectionService} and {@link MockInCallService} to
+ * verify the functionality of Remote Connections.
+ * We make 2 connections on the {@link CtsConnectionService} & we create 2 connections on the
+ * {@link CtsRemoteConnectionService} via the {@link RemoteConnection} object. We store this
+ * corresponding RemoteConnection object on the connections to plumb the modifications on
+ * the connections in {@link CtsConnectionService} to the connections on
+ * {@link CtsRemoteConnectionService}.
+ */
+public class RemoteConnectionTest extends BaseRemoteTelecomTest {
+
+    MockConnection mConnection;
+    MockConnection mRemoteConnection;
+    RemoteConnection mRemoteConnectionObject;
+
+    public void testRemoteConnectionOutgoingCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        addRemoteConnectionOutgoingCall();
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+
+        verifyRemoteConnectionObject(mRemoteConnectionObject, mRemoteConnection);
+
+        mConnection.setActive();
+        mRemoteConnection.setActive();
+
+        assertCallState(call, Call.STATE_ACTIVE);
+        assertConnectionState(mConnection, Connection.STATE_ACTIVE);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_ACTIVE);
+        assertConnectionState(mRemoteConnection, Connection.STATE_ACTIVE);
+
+        call.hold();
+        assertCallState(call, Call.STATE_HOLDING);
+        assertConnectionState(mConnection, Connection.STATE_HOLDING);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_HOLDING);
+        assertConnectionState(mRemoteConnection, Connection.STATE_HOLDING);
+
+        call.unhold();
+        assertCallState(call, Call.STATE_ACTIVE);
+        assertConnectionState(mConnection, Connection.STATE_ACTIVE);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_ACTIVE);
+        assertConnectionState(mRemoteConnection, Connection.STATE_ACTIVE);
+
+        call.disconnect();
+        assertCallState(call, Call.STATE_DISCONNECTED);
+        assertConnectionState(mConnection, Connection.STATE_DISCONNECTED);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_DISCONNECTED);
+        assertConnectionState(mRemoteConnection, Connection.STATE_DISCONNECTED);
+    }
+
+    public void testRemoteConnectionIncomingCallAccept() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        addRemoteConnectionIncomingCall();
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_RINGING);
+
+        verifyRemoteConnectionObject(mRemoteConnectionObject, mRemoteConnection);
+
+        assertConnectionState(mConnection, Connection.STATE_RINGING);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_RINGING);
+        assertConnectionState(mRemoteConnection, Connection.STATE_RINGING);
+
+        call.answer(VideoProfile.STATE_AUDIO_ONLY);
+        assertCallState(call, Call.STATE_ACTIVE);
+        assertConnectionState(mConnection, Connection.STATE_ACTIVE);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_ACTIVE);
+        assertConnectionState(mRemoteConnection, Connection.STATE_ACTIVE);
+    }
+
+    public void testRemoteConnectionIncomingCallReject() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        addRemoteConnectionIncomingCall();
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_RINGING);
+
+        verifyRemoteConnectionObject(mRemoteConnectionObject, mRemoteConnection);
+
+        assertConnectionState(mConnection, Connection.STATE_RINGING);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_RINGING);
+        assertConnectionState(mRemoteConnection, Connection.STATE_RINGING);
+
+        call.reject(false, null);
+        assertCallState(call, Call.STATE_DISCONNECTED);
+        assertConnectionState(mConnection, Connection.STATE_DISCONNECTED);
+        assertRemoteConnectionState(mRemoteConnectionObject, Connection.STATE_DISCONNECTED);
+        assertConnectionState(mRemoteConnection, Connection.STATE_DISCONNECTED);
+    }
+
+    public void testRemoteConnectionDTMFTone() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        addRemoteConnectionIncomingCall();
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_RINGING);
+
+        verifyRemoteConnectionObject(mRemoteConnectionObject, mRemoteConnection);
+
+        assertTrue(mConnection.getDtmfString().isEmpty());
+        assertTrue(mRemoteConnection.getDtmfString().isEmpty());
+        call.playDtmfTone('1');
+        assertDtmfString(mConnection, "1");
+        assertDtmfString(mRemoteConnection, "1");
+        call.stopDtmfTone();
+        assertDtmfString(mConnection, "1.");
+        assertDtmfString(mRemoteConnection, "1.");
+        call.playDtmfTone('3');
+        assertDtmfString(mConnection, "1.3");
+        assertDtmfString(mRemoteConnection, "1.3");
+        call.stopDtmfTone();
+        assertDtmfString(mConnection, "1.3.");
+        assertDtmfString(mRemoteConnection, "1.3.");
+    }
+
+    public void testRemoteConnectionCallbacks_StateChange() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_StateChange");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onStateChanged(RemoteConnection connection, int state) {
+                super.onStateChanged(connection, state);
+                callbackInvoker.invoke(connection, state);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.setActive();
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(Connection.STATE_ACTIVE, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_RingbackRequest() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_RingbackRequest");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onRingbackRequested(RemoteConnection connection, boolean ringback) {
+                super.onRingbackRequested(connection, ringback);
+                callbackInvoker.invoke(connection, ringback);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.setRingbackRequested(true);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertTrue((boolean) callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_ConnectionCapabilities() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_ConnectionCapabilities");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onConnectionCapabilitiesChanged(
+                    RemoteConnection connection,
+                    int connectionCapabilities) {
+                super.onConnectionCapabilitiesChanged(connection, connectionCapabilities);
+                callbackInvoker.invoke(connection, connectionCapabilities);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        int capabilities = mRemoteConnection.getConnectionCapabilities() | Connection.CAPABILITY_MUTE;
+        mRemoteConnection.setConnectionCapabilities(capabilities);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(capabilities, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+
+    }
+
+    public void testRemoteConnectionCallbacks_PostDialWait() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_PostDialWait");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onPostDialWait(RemoteConnection connection,
+                                       String remainingPostDialSequence) {
+                super.onPostDialWait(connection, remainingPostDialSequence);
+                callbackInvoker.invoke(connection, remainingPostDialSequence);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        String postDialSequence = "test";
+        mRemoteConnection.setPostDialWait(postDialSequence);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(postDialSequence, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_PostDialChar() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_PostDialChar");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onPostDialChar(RemoteConnection connection, char nextChar) {
+                super.onPostDialChar(connection, nextChar);
+                callbackInvoker.invoke(connection, nextChar);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        char postDialChar = '3';
+        ((Connection) mRemoteConnection).setNextPostDialChar(postDialChar);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(postDialChar, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_VoipAudio() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_VoipAudio");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onVoipAudioChanged(RemoteConnection connection, boolean isVoip) {
+                super.onVoipAudioChanged(connection, isVoip);
+                callbackInvoker.invoke(connection, isVoip);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.setAudioModeIsVoip(true);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertTrue((boolean) callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_StatusHints() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_StatusHints");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onStatusHintsChanged(RemoteConnection connection, StatusHints statusHints) {
+                super.onStatusHintsChanged(connection, statusHints);
+                callbackInvoker.invoke(connection, statusHints);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        StatusHints hints = new StatusHints("test", null, null);
+        mRemoteConnection.setStatusHints(hints);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(hints, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_AddressChange() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_AddressChange");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onAddressChanged(RemoteConnection connection, Uri address,
+                                         int presentation) {
+                super.onAddressChanged(connection, address, presentation);
+                callbackInvoker.invoke(connection, address, presentation);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        Uri address = Uri.parse("tel:555");
+        mRemoteConnection.setAddress(address, TelecomManager.PRESENTATION_ALLOWED);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(address, callbackInvoker.getArgs(0)[1]);
+        assertEquals(TelecomManager.PRESENTATION_ALLOWED, callbackInvoker.getArgs(0)[2]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_CallerDisplayName() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_CallerDisplayName");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onCallerDisplayNameChanged(
+                    RemoteConnection connection, String callerDisplayName, int presentation) {
+                super.onCallerDisplayNameChanged(connection, callerDisplayName, presentation);
+                callbackInvoker.invoke(connection, callerDisplayName, presentation);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        String callerDisplayName = "test";
+        mRemoteConnection.setCallerDisplayName(callerDisplayName, TelecomManager.PRESENTATION_ALLOWED);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(callerDisplayName, callbackInvoker.getArgs(0)[1]);
+        assertEquals(TelecomManager.PRESENTATION_ALLOWED, callbackInvoker.getArgs(0)[2]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_VideoState() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_VideoState");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onVideoStateChanged(RemoteConnection connection, int videoState) {
+                super.onVideoStateChanged(connection, videoState);
+                callbackInvoker.invoke(connection, videoState);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.setVideoState(VideoProfile.STATE_BIDIRECTIONAL);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(VideoProfile.STATE_BIDIRECTIONAL, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_ConferenceableConnections() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_ConferenceableConnections");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onConferenceableConnectionsChanged(
+                    RemoteConnection connection,
+                    List<RemoteConnection> conferenceableConnections) {
+                super.onConferenceableConnectionsChanged(connection, conferenceableConnections);
+                callbackInvoker.invoke(connection, conferenceableConnections);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        //Make the existing call active to add a new call
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        mConnection.setActive();
+        mRemoteConnection.setActive();
+        assertCallState(call, Call.STATE_ACTIVE);
+        placeAndVerifyCall();
+        RemoteConnection newRemoteConnectionObject =
+                verifyConnectionForOutgoingCall(1).getRemoteConnection();
+        MockConnection newConnection = verifyConnectionForOutgoingCallOnRemoteCS(1);
+        ArrayList<Connection> confList = new ArrayList<>();
+        confList.add(newConnection);
+        mRemoteConnection.setConferenceableConnections(confList);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        //assertTrue(((List<RemoteConnection>)callbackInvoker.getArgs(0)[1]).contains(
+                //newRemoteConnectionObject)); No "equals" method in RemoteConnection
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_VideoProvider() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_VideoProvider");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onVideoProviderChanged(
+                    RemoteConnection connection, VideoProvider videoProvider) {
+                super.onVideoProviderChanged(connection, videoProvider);
+                callbackInvoker.invoke(connection, videoProvider);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.createMockVideoProvider();
+        MockVideoProvider mockVideoProvider = mRemoteConnection.getMockVideoProvider();
+        mRemoteConnection.setVideoProvider(mockVideoProvider);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_Extras() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_Extras");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onExtrasChanged(RemoteConnection connection, Bundle extras) {
+                super.onExtrasChanged(connection, extras);
+                callbackInvoker.invoke(connection, extras);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        Bundle extras = new Bundle();
+        extras.putString(TelecomManager.EXTRA_CALL_DISCONNECT_MESSAGE, "Test");
+        mRemoteConnection.setExtras(extras);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(extras, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+
+    }
+
+    public void testRemoteConnectionCallbacks_Disconnect() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_Disconnect");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onDisconnected(
+                    RemoteConnection connection,
+                    DisconnectCause disconnectCause) {
+                super.onDisconnected(connection, disconnectCause);
+                callbackInvoker.invoke(connection, disconnectCause);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        DisconnectCause cause = new DisconnectCause(DisconnectCause.LOCAL);
+        mRemoteConnection.setDisconnected(cause);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        assertEquals(cause, callbackInvoker.getArgs(0)[1]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionCallbacks_Destroy() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Handler handler = setupRemoteConnectionCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionCallbacks_Destroy");
+        RemoteConnection.Callback callback;
+
+        callback = new RemoteConnection.Callback() {
+            @Override
+            public void onDestroyed(RemoteConnection connection) {
+                super.onDestroyed(connection);
+                callbackInvoker.invoke(connection);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.destroy();
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+    }
+
+    public void testRemoteConnectionVideoCallbacks_SessionModify() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        setupRemoteConnectionVideoCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideoCallbacks_SessionModify");
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        final MockVideoProvider mockVideoProvider = mRemoteConnection.getMockVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onSessionModifyRequestReceived(
+                    VideoProvider videoProvider,
+                    VideoProfile videoProfile) {
+                super.onSessionModifyRequestReceived(videoProvider, videoProfile);
+                callbackInvoker.invoke(videoProvider, videoProfile);
+            }
+
+            @Override
+            public void onSessionModifyResponseReceived(
+                    VideoProvider videoProvider,
+                    int status,
+                    VideoProfile requestedProfile,
+                    VideoProfile responseProfile) {
+                super.onSessionModifyResponseReceived(videoProvider, status, requestedProfile,
+                        responseProfile);
+                callbackInvoker.invoke(videoProvider, status, requestedProfile, responseProfile);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        VideoProfile videoProfile = new VideoProfile(VideoProfile.STATE_BIDIRECTIONAL);
+        mockVideoProvider.sendMockSessionModifyRequest(videoProfile);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(0)[0]);
+        assertEquals(videoProfile, callbackInvoker.getArgs(0)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideoCallbacks_SessionEvent() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        setupRemoteConnectionVideoCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideoCallbacks_SessionEvent");
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        final MockVideoProvider mockVideoProvider = mRemoteConnection.getMockVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onCallSessionEvent(VideoProvider videoProvider, int event) {
+                super.onCallSessionEvent(videoProvider, event);
+                callbackInvoker.invoke(videoProvider, event);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        mockVideoProvider.handleCallSessionEvent(Connection.VideoProvider.SESSION_EVENT_RX_PAUSE);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(0)[0]);
+        assertEquals(Connection.VideoProvider.SESSION_EVENT_RX_PAUSE, callbackInvoker.getArgs(0)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideoCallbacks_PeerDimensions() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        setupRemoteConnectionVideoCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideoCallbacks_PeerDimensions");
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        final MockVideoProvider mockVideoProvider = mRemoteConnection.getMockVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onPeerDimensionsChanged(VideoProvider videoProvider, int width,
+                                                int height) {
+                super.onPeerDimensionsChanged(videoProvider, width, height);
+                callbackInvoker.invoke(videoProvider, width, height);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        final int width = 100, heigth = 20;
+        mockVideoProvider.changePeerDimensions(width, heigth);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(0)[0]);
+        assertEquals(width, callbackInvoker.getArgs(0)[1]);
+        assertEquals(heigth, callbackInvoker.getArgs(0)[2]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideoCallbacks_CallDataUsage() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        setupRemoteConnectionVideoCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideoCallbacks_CallDataUsage");
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        final MockVideoProvider mockVideoProvider = mRemoteConnection.getMockVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onCallDataUsageChanged(VideoProvider videoProvider, long dataUsage) {
+                super.onCallDataUsageChanged(videoProvider, dataUsage);
+                callbackInvoker.invoke(videoProvider, dataUsage);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        long callDataUsage = 10000;
+        mockVideoProvider.setCallDataUsage(callDataUsage);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(0)[0]);
+        assertEquals(callDataUsage, callbackInvoker.getArgs(0)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideoCallbacks_CameraCapabilities() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        setupRemoteConnectionVideoCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideoCallbacks_CameraCapabilities");
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        final MockVideoProvider mockVideoProvider = mRemoteConnection.getMockVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onCameraCapabilitiesChanged(
+                    VideoProvider videoProvider,
+                    VideoProfile.CameraCapabilities cameraCapabilities) {
+                super.onCameraCapabilitiesChanged(videoProvider, cameraCapabilities);
+                callbackInvoker.invoke(videoProvider, cameraCapabilities);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        VideoProfile.CameraCapabilities capabilities = new VideoProfile.CameraCapabilities(100, 200);
+        mockVideoProvider.changeCameraCapabilities(capabilities);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(0)[0]);
+        assertEquals(capabilities, callbackInvoker.getArgs(0)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideoCallbacks_VideoQuality() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        setupRemoteConnectionVideoCallbacksTest();
+
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideoCallbacks_VideoQuality");
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        final MockVideoProvider mockVideoProvider = mRemoteConnection.getMockVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onVideoQualityChanged(VideoProvider videoProvider, int videoQuality) {
+                super.onVideoQualityChanged(videoProvider, videoQuality);
+                callbackInvoker.invoke(videoProvider, videoQuality);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        final int videoQuality = 10;
+        mockVideoProvider.changeVideoQuality(videoQuality);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(0)[0]);
+        assertEquals(videoQuality, callbackInvoker.getArgs(0)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideo_RequestCallDataUsage() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final long callDataUsage = 10000;
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_RequestCallDataUsage");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onRequestConnectionDataUsage() {
+                callbackInvoker.invoke();
+                super.setCallDataUsage(callDataUsage);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onCallDataUsageChanged(VideoProvider videoProvider, long dataUsage) {
+                super.onCallDataUsageChanged(videoProvider, dataUsage);
+                callbackInvoker.invoke(videoProvider, dataUsage);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        remoteVideoProvider.requestCallDataUsage();
+        callbackInvoker.waitForCount(2, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(1)[0]);
+        assertEquals(callDataUsage, callbackInvoker.getArgs(1)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideo_RequestCameraCapabilities() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final VideoProfile.CameraCapabilities capabilities =
+                new VideoProfile.CameraCapabilities(100, 200);
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_RequestCameraCapabilities");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onRequestCameraCapabilities() {
+                callbackInvoker.invoke();
+                super.changeCameraCapabilities(capabilities);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onCameraCapabilitiesChanged(
+                    VideoProvider videoProvider,
+                    VideoProfile.CameraCapabilities cameraCapabilities) {
+                super.onCameraCapabilitiesChanged(videoProvider, cameraCapabilities);
+                callbackInvoker.invoke(videoProvider, cameraCapabilities);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        remoteVideoProvider.requestCameraCapabilities();
+        callbackInvoker.waitForCount(2, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(1)[0]);
+        assertEquals(capabilities, callbackInvoker.getArgs(1)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideo_SendSessionModifyRequest() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        VideoProfile fromVideoProfile = new VideoProfile(VideoProfile.STATE_AUDIO_ONLY);
+        VideoProfile toVideoProfile =  new VideoProfile(VideoProfile.STATE_BIDIRECTIONAL);
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SendSessionModifyRequest");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSendSessionModifyRequest(VideoProfile fromProfile,
+                                                   VideoProfile toProfile) {
+                callbackInvoker.invoke(fromProfile, toProfile);
+                super.receiveSessionModifyRequest(toProfile);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onSessionModifyRequestReceived(
+                    VideoProvider videoProvider,
+                    VideoProfile videoProfile) {
+                super.onSessionModifyRequestReceived(videoProvider, videoProfile);
+                callbackInvoker.invoke(videoProvider, videoProfile);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        remoteVideoProvider.sendSessionModifyRequest(fromVideoProfile, toVideoProfile);
+        callbackInvoker.waitForCount(2, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(fromVideoProfile, callbackInvoker.getArgs(0)[0]);
+        assertEquals(toVideoProfile, callbackInvoker.getArgs(0)[1]);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(1)[0]);
+        assertEquals(toVideoProfile, callbackInvoker.getArgs(1)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideo_SendSessionModifyResponse() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        VideoProfile toVideoProfile =  new VideoProfile(VideoProfile.STATE_BIDIRECTIONAL);
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SendSessionModifyResponse");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSendSessionModifyResponse(VideoProfile responseProfile) {
+                callbackInvoker.invoke(responseProfile);
+                super.receiveSessionModifyResponse(
+                        Connection.VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS,
+                        responseProfile, responseProfile);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onSessionModifyResponseReceived(
+                    VideoProvider videoProvider,
+                    int status,
+                    VideoProfile requestedProfile,
+                    VideoProfile responseProfile) {
+                super.onSessionModifyResponseReceived(videoProvider, status, requestedProfile,
+                        responseProfile);
+                callbackInvoker.invoke(videoProvider, status, requestedProfile, responseProfile);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        remoteVideoProvider.sendSessionModifyResponse(toVideoProfile);
+        callbackInvoker.waitForCount(2, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(toVideoProfile, callbackInvoker.getArgs(0)[0]);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(1)[0]);
+        assertEquals(toVideoProfile, callbackInvoker.getArgs(1)[2]);
+        assertEquals(Connection.VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS,
+            callbackInvoker.getArgs(1)[1]);
+        assertEquals(toVideoProfile, callbackInvoker.getArgs(1)[3]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideo_SetCamera() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final String newCameraId = "5";
+        final VideoProfile.CameraCapabilities capabilities =
+            new VideoProfile.CameraCapabilities(100, 200);
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SetCamera");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSetCamera(String cameraId) {
+                callbackInvoker.invoke(cameraId);
+                super.changeCameraCapabilities(capabilities);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+        RemoteConnection.VideoProvider.Callback videoCallback;
+
+        videoCallback = new RemoteConnection.VideoProvider.Callback() {
+            @Override
+            public void onCameraCapabilitiesChanged(
+                    VideoProvider videoProvider,
+                    VideoProfile.CameraCapabilities cameraCapabilities) {
+                super.onCameraCapabilitiesChanged(videoProvider, cameraCapabilities);
+                callbackInvoker.invoke(videoProvider, cameraCapabilities);
+            }
+        };
+        remoteVideoProvider.registerCallback(videoCallback);
+        remoteVideoProvider.setCamera(newCameraId);
+        callbackInvoker.waitForCount(2, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(newCameraId, callbackInvoker.getArgs(0)[0]);
+        assertEquals(remoteVideoProvider, callbackInvoker.getArgs(1)[0]);
+        assertEquals(capabilities, callbackInvoker.getArgs(1)[1]);
+        remoteVideoProvider.unregisterCallback(videoCallback);
+    }
+
+    public void testRemoteConnectionVideo_SetDeviceOrientation() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final int newRotation = 5;
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SetDeviceOrientation");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSetDeviceOrientation(int rotation) {
+                callbackInvoker.invoke(rotation);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+
+        remoteVideoProvider.setDeviceOrientation(newRotation);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(newRotation, callbackInvoker.getArgs(0)[0]);
+    }
+
+    public void testRemoteConnectionVideo_SetDisplaySurface() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final Surface newSurface = new Surface(new SurfaceTexture(1));
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SetDisplaySurface");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSetDisplaySurface(Surface surface) {
+                callbackInvoker.invoke(surface);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+
+        remoteVideoProvider.setDisplaySurface(newSurface);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(newSurface, callbackInvoker.getArgs(0)[0]);
+    }
+
+    public void testRemoteConnectionVideo_SetPauseImage() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final Uri newUri = Uri.parse("content://");
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SetPauseImage");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSetPauseImage(Uri uri) {
+                callbackInvoker.invoke(uri);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+
+        remoteVideoProvider.setPauseImage(newUri);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(newUri, callbackInvoker.getArgs(0)[0]);
+    }
+
+    public void testRemoteConnectionVideo_SetPreviewSurface() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final Surface newSurface = new Surface(new SurfaceTexture(1));
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SetPreviewSurface");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSetPreviewSurface(Surface surface) {
+                callbackInvoker.invoke(surface);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+
+        remoteVideoProvider.setPreviewSurface(newSurface);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(newSurface, callbackInvoker.getArgs(0)[0]);
+    }
+
+    public void testRemoteConnectionVideo_SetZoom() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        final float newZoom = 1.0f;
+        final InvokeCounter callbackInvoker =
+                new InvokeCounter("testRemoteConnectionVideo_SetPreviewSurface");
+        final MockVideoProvider mockVideoProvider = new MockVideoProvider(mRemoteConnection) {
+            @Override
+            public void onSetZoom(float value) {
+                callbackInvoker.invoke(value);
+            }
+        };
+        setupRemoteConnectionVideoTest(mockVideoProvider);
+
+        final VideoProvider remoteVideoProvider = mRemoteConnectionObject.getVideoProvider();
+
+        remoteVideoProvider.setZoom(newZoom);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(newZoom, callbackInvoker.getArgs(0)[0]);
+    }
+
+    private void verifyRemoteConnectionObject(RemoteConnection remoteConnection,
+            Connection connection) {
+        assertEquals(connection.getAddress(), remoteConnection.getAddress());
+        assertEquals(connection.getAddressPresentation(),
+                remoteConnection.getAddressPresentation());
+        assertEquals(connection.getCallerDisplayName(), remoteConnection.getCallerDisplayName());
+        assertEquals(connection.getCallerDisplayNamePresentation(),
+                remoteConnection.getCallerDisplayNamePresentation());
+        assertEquals(connection.getConnectionCapabilities(),
+                remoteConnection.getConnectionCapabilities());
+        assertEquals(connection.getDisconnectCause(), remoteConnection.getDisconnectCause());
+        assertEquals(connection.getExtras(), remoteConnection.getExtras());
+        assertEquals(connection.getStatusHints(), remoteConnection.getStatusHints());
+        assertEquals(VideoProfile.STATE_AUDIO_ONLY, remoteConnection.getVideoState());
+        assertNull(remoteConnection.getVideoProvider());
+        assertTrue(remoteConnection.getConferenceableConnections().isEmpty());
+    }
+
+    private void addRemoteConnectionOutgoingCall() {
+        try {
+            MockConnectionService managerConnectionService = new MockConnectionService() {
+                @Override
+                public Connection onCreateOutgoingConnection(
+                        PhoneAccountHandle connectionManagerPhoneAccount,
+                        ConnectionRequest request) {
+                    MockConnection connection = (MockConnection)super.onCreateOutgoingConnection(
+                            connectionManagerPhoneAccount, request);
+                    ConnectionRequest remoteRequest = new ConnectionRequest(
+                            TEST_REMOTE_PHONE_ACCOUNT_HANDLE,
+                            request.getAddress(),
+                            request.getExtras());
+                    RemoteConnection remoteConnection =
+                            CtsConnectionService.createRemoteOutgoingConnectionToTelecom(
+                                    TEST_REMOTE_PHONE_ACCOUNT_HANDLE, remoteRequest);
+                    connection.setRemoteConnection(remoteConnection);
+                    return connection;
+                }
+            };
+            setupConnectionServices(managerConnectionService, null, FLAG_REGISTER | FLAG_ENABLE);
+        } catch(Exception e) {
+            fail("Error in setting up the connection services");
+        }
+        placeAndVerifyCall();
+        /**
+         * Retrieve the connection from both the connection services and see if the plumbing via
+         * RemoteConnection object is working.
+         */
+        mConnection = verifyConnectionForOutgoingCall();
+        mRemoteConnection = verifyConnectionForOutgoingCallOnRemoteCS();
+        mRemoteConnectionObject = mConnection.getRemoteConnection();
+    }
+
+    private void addRemoteConnectionIncomingCall() {
+        try {
+            MockConnectionService managerConnectionService = new MockConnectionService() {
+                @Override
+                public Connection onCreateIncomingConnection(
+                        PhoneAccountHandle connectionManagerPhoneAccount,
+                        ConnectionRequest request) {
+                    MockConnection connection = (MockConnection)super.onCreateIncomingConnection(
+                            connectionManagerPhoneAccount, request);
+                    ConnectionRequest remoteRequest = new ConnectionRequest(
+                            TEST_REMOTE_PHONE_ACCOUNT_HANDLE,
+                            request.getAddress(),
+                            request.getExtras());
+                    RemoteConnection remoteConnection =
+                            CtsConnectionService.createRemoteIncomingConnectionToTelecom(
+                                    TEST_REMOTE_PHONE_ACCOUNT_HANDLE, remoteRequest);
+                    connection.setRemoteConnection(remoteConnection);
+                    return connection;
+                }
+            };
+            setupConnectionServices(managerConnectionService, null, FLAG_REGISTER | FLAG_ENABLE);
+        } catch(Exception e) {
+            fail("Error in setting up the connection services");
+        }
+        addAndVerifyNewIncomingCall(createTestNumber(), null);
+        /**
+         * Retrieve the connection from both the connection services and see if the plumbing via
+         * RemoteConnection object is working.
+         */
+        mConnection = verifyConnectionForIncomingCall();
+        mRemoteConnection = verifyConnectionForIncomingCallOnRemoteCS();
+        mRemoteConnectionObject = mConnection.getRemoteConnection();
+    }
+
+    private Handler setupRemoteConnectionCallbacksTest() {
+        addRemoteConnectionOutgoingCall();
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+        verifyRemoteConnectionObject(mRemoteConnectionObject, mRemoteConnection);
+
+        // Create a looper thread for the callbacks.
+        HandlerThread workerThread = new HandlerThread("CallbackThread");
+        workerThread.start();
+        Handler handler = new Handler(workerThread.getLooper());
+        return handler;
+    }
+
+    private Handler setupRemoteConnectionVideoCallbacksTest() {
+        addRemoteConnectionOutgoingCall();
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+        verifyRemoteConnectionObject(mRemoteConnectionObject, mRemoteConnection);
+
+        // Create a looper thread for the callbacks.
+        HandlerThread workerThread = new HandlerThread("CallbackThread");
+        workerThread.start();
+        Handler handler = new Handler(workerThread.getLooper());
+
+        final InvokeCounter callbackInvoker = new InvokeCounter("RemoteConnectionCallbacks");
+
+        RemoteConnection.Callback callback = new RemoteConnection.Callback() {
+            @Override
+            public void onVideoProviderChanged(
+                    RemoteConnection connection, VideoProvider videoProvider) {
+                callbackInvoker.invoke(connection, videoProvider);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.createMockVideoProvider();
+        mRemoteConnection.setVideoProvider(mRemoteConnection.getMockVideoProvider());
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+        return handler;
+    }
+
+    private Handler setupRemoteConnectionVideoTest(MockVideoProvider mockVideoProvider) {
+        addRemoteConnectionOutgoingCall();
+        final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+        verifyRemoteConnectionObject(mRemoteConnectionObject, mRemoteConnection);
+
+        // Create a looper thread for the callbacks.
+        HandlerThread workerThread = new HandlerThread("CallbackThread");
+        workerThread.start();
+        Handler handler = new Handler(workerThread.getLooper());
+
+        final InvokeCounter callbackInvoker = new InvokeCounter("RemoteConnectionCallbacks");
+
+        RemoteConnection.Callback callback = new RemoteConnection.Callback() {
+            @Override
+            public void onVideoProviderChanged(
+                    RemoteConnection connection, VideoProvider videoProvider) {
+                callbackInvoker.invoke(connection, videoProvider);
+            }
+        };
+        mRemoteConnectionObject.registerCallback(callback, handler);
+        mRemoteConnection.setVideoProvider(mockVideoProvider);
+        callbackInvoker.waitForCount(1, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS);
+        assertEquals(mRemoteConnectionObject, callbackInvoker.getArgs(0)[0]);
+        mRemoteConnectionObject.unregisterCallback(callback);
+        return handler;
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/SimCallManagerTest.java b/tests/tests/telecom/src/android/telecom/cts/SimCallManagerTest.java
new file mode 100644
index 0000000..a7961c3
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/SimCallManagerTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telecom.cts;
+
+import static android.telecom.cts.TestUtils.ACCOUNT_ID;
+import static android.telecom.cts.TestUtils.ACCOUNT_LABEL;
+import static android.telecom.cts.TestUtils.COMPONENT;
+import static android.telecom.cts.TestUtils.PACKAGE;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.graphics.Color;
+import android.net.Uri;
+import android.os.PersistableBundle;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.test.InstrumentationTestCase;
+import android.text.TextUtils;
+
+import java.util.Arrays;
+
+/**
+ * Verifies the behavior of TelecomManager.getSimCallManager() with respect to the default dialer
+ */
+public class SimCallManagerTest extends InstrumentationTestCase {
+    public static final PhoneAccountHandle TEST_PHONE_ACCOUNT_HANDLE =
+            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID);
+
+    public static final PhoneAccount TEST_SIM_CALL_MANAGER_ACCOUNT = PhoneAccount.builder(
+            TEST_PHONE_ACCOUNT_HANDLE, ACCOUNT_LABEL)
+            .setAddress(Uri.parse("tel:555-TEST"))
+            .setSubscriptionAddress(Uri.parse("tel:555-TEST"))
+            .setCapabilities(PhoneAccount.CAPABILITY_CONNECTION_MANAGER)
+            .setHighlightColor(Color.RED)
+            .setShortDescription(ACCOUNT_LABEL)
+            .setSupportedUriSchemes(Arrays.asList("tel"))
+            .build();
+
+    private Context mContext;
+    private TelecomManager mTelecomManager;
+    private String mPreviousDefaultDialer = null;
+    private String mSystemDialer = null;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+
+        if (!TestUtils.shouldTestTelecom(mContext)) {
+            return;
+        }
+        mPreviousDefaultDialer = TestUtils.getDefaultDialer(getInstrumentation());
+        // Reset the current dialer to the system dialer, to ensure that we start each test
+        // without being the default dialer.
+        mSystemDialer = TestUtils.getSystemDialer(getInstrumentation());
+        if (!TextUtils.isEmpty(mSystemDialer)) {
+            TestUtils.setDefaultDialer(getInstrumentation(), mSystemDialer);
+        }
+        mTelecomManager = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (!TextUtils.isEmpty(mPreviousDefaultDialer)) {
+            // Restore the default dialer to whatever the default dialer was before the tests
+            // were started. This may or may not be the system dialer.
+            TestUtils.setDefaultDialer(getInstrumentation(), mPreviousDefaultDialer);
+        }
+        super.tearDown();
+    }
+
+    public void testGetSimCallManager() throws Exception {
+        if (!TestUtils.shouldTestTelecom(mContext)) {
+            return;
+        }
+
+        // By default, getSimCallManager should return either the carrier configured sim call
+        // manager or the system dialer's sim call manager.
+        assertEquals(mSystemDialer, mTelecomManager.getDefaultDialerPackage());
+        assertNotSame(TEST_PHONE_ACCOUNT_HANDLE, mTelecomManager.getSimCallManager());
+
+        ComponentName carrierConfigSimCallManager = null;
+        CarrierConfigManager configManager = (CarrierConfigManager) mContext.getSystemService(
+                Context.CARRIER_CONFIG_SERVICE);
+        PersistableBundle configBundle = configManager.getConfig();
+        if (configBundle != null) {
+            final String componentString = configBundle.getString(
+                    CarrierConfigManager.KEY_DEFAULT_SIM_CALL_MANAGER_STRING);
+            if (!TextUtils.isEmpty(componentString)) {
+                carrierConfigSimCallManager = ComponentName.unflattenFromString(componentString);
+            }
+        }
+
+        // If the default dialer has not registered a sim call manager, getSimCallManager should
+        // return the carrier configured sim call manager (which can be null).
+        PhoneAccountHandle simCallManager = mTelecomManager.getSimCallManager();
+        TestUtils.setDefaultDialer(getInstrumentation(), TestUtils.PACKAGE);
+        assertEquals(TestUtils.PACKAGE, mTelecomManager.getDefaultDialerPackage());
+        assertNotSame(TEST_PHONE_ACCOUNT_HANDLE, mTelecomManager.getSimCallManager());
+        assertEquals("Sim call manager should be the carrier configured value if no default-dialer"
+                + " provided value",
+                carrierConfigSimCallManager,
+                simCallManager == null ? null : simCallManager.getComponentName());
+
+        // Once the default dialer has registered a sim call manager, getSimCallManager should
+        // return the new sim call manager.
+        mTelecomManager.registerPhoneAccount(TEST_SIM_CALL_MANAGER_ACCOUNT);
+        assertEquals("Sim call manager should be default dialer's sim call manager if provided"
+                + " by default dialer",
+                TEST_PHONE_ACCOUNT_HANDLE,
+                mTelecomManager.getSimCallManager());
+
+        // If the dialer is no longer the default dialer, it is no longer the sim call manager.
+        TestUtils.setDefaultDialer(getInstrumentation(), mSystemDialer);
+        assertNotSame(TEST_PHONE_ACCOUNT_HANDLE, mTelecomManager.getSimCallManager());
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/TestUtils.java b/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
index 3356be0..962df59 100644
--- a/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
+++ b/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
@@ -30,7 +30,7 @@
 import java.nio.charset.StandardCharsets;
 
 public class TestUtils {
-    static final String TAG = "TelecomXTSTests";
+    static final String TAG = "TelecomCTSTests";
     static final boolean HAS_TELECOM = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
     static final long WAIT_FOR_STATE_CHANGE_TIMEOUT_MS = 10000;
 
@@ -38,9 +38,12 @@
     // tests in the Telecom2 test package.
     public static String PACKAGE = "com.android.cts.telecom";
     public static final String COMPONENT = "android.telecom.cts.CtsConnectionService";
+    public static final String REMOTE_COMPONENT = "android.telecom.cts.CtsRemoteConnectionService";
     public static final String ACCOUNT_ID = "xtstest_CALL_PROVIDER_ID";
+    public static final String REMOTE_ACCOUNT_ID = "xtstest_REMOTE_CALL_PROVIDER_ID";
 
-    public static final String LABEL = "CTSConnectionService";
+    public static final String ACCOUNT_LABEL = "CTSConnectionService";
+    public static final String REMOTE_ACCOUNT_LABEL = "CTSRemoteConnectionService";
 
     private static final String COMMAND_SET_DEFAULT_DIALER = "telecom set-default-dialer ";
 
@@ -50,6 +53,11 @@
 
     private static final String COMMAND_ENABLE = "telecom set-phone-account-enabled ";
 
+    private static final String COMMAND_REGISTER_SIM = "telecom register-sim-phone-account ";
+
+    public static final String MERGE_CALLER_NAME = "calls-merged";
+    public static final String SWAP_CALLER_NAME = "calls-swapped";
+
     public static boolean shouldTestTelecom(Context context) {
         if (!HAS_TELECOM) {
             return false;
@@ -79,6 +87,14 @@
                 + handle.getId());
     }
 
+    public static void registerSimPhoneAccount(Instrumentation instrumentation,
+            PhoneAccountHandle handle, String label, String address) throws Exception {
+        final ComponentName component = handle.getComponentName();
+        executeShellCommand(instrumentation, COMMAND_REGISTER_SIM
+                + component.getPackageName() + "/" + component.getClassName() + " "
+                + handle.getId() + " " + label + " " + address);
+    }
+
     /**
      * Executes the given shell command and returns the output in a string. Note that even
      * if we don't care about the output, we have to read the stream completely to make the
diff --git a/tests/tests/telecom/src/android/telecom/cts/VideoCallTest.java b/tests/tests/telecom/src/android/telecom/cts/VideoCallTest.java
index e62d125..fbfa998 100644
--- a/tests/tests/telecom/src/android/telecom/cts/VideoCallTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/VideoCallTest.java
@@ -47,7 +47,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        if (TestUtils.shouldTestTelecom(mContext)) {
+        if (mShouldTestTelecom) {
             setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
         }
     }
@@ -56,14 +56,20 @@
      * Tests ability to start a 2-way video call and retrieve its video state.
      */
     public void testMakeTwoWayVideoCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
 
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
-        verifyConnectionForOutgoingCall();
+        final MockConnection connection = verifyConnectionForOutgoingCall();
 
         final MockInCallService inCallService = mInCallCallbacks.getService();
         final Call call = inCallService.getLastCall();
 
+        assertCallState(call, Call.STATE_DIALING);
+        connection.setActive();
         assertCallState(call, Call.STATE_ACTIVE);
+
         assertVideoState(call, VideoProfile.STATE_BIDIRECTIONAL);
         assertVideoCallbackRegistered(inCallService, call, true);
     }
@@ -72,6 +78,10 @@
      * Tests ability to start a 1-way video call and retrieve its video state.
      */
     public void testMakeOneWayVideoCall() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_TX_ENABLED);
         verifyConnectionForOutgoingCall();
 
@@ -86,6 +96,10 @@
      * Tests ability to upgrade an audio-only call to a video call.
      */
     public void testUpgradeToVideo() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_AUDIO_ONLY);
         verifyConnectionForOutgoingCall();
 
@@ -106,6 +120,10 @@
      * Tests ability to receive a session modification request.
      */
     public void testReceiveSessionModifyRequest() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_AUDIO_ONLY);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -131,6 +149,10 @@
      * Tests ability to send a session modification response.
      */
     public void testSendSessionModifyResponse() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_AUDIO_ONLY);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -153,6 +175,10 @@
      * the call.
      */
     public void testVideoCallDelayProvider() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         // Don't create video provider when call is created initially; we will do this later.
         try {
             connectionService.setCreateVideoProvider(false);
@@ -184,6 +210,10 @@
      * back in response.
      */
     public void testChangeCamera() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         verifyConnectionForOutgoingCall();
 
@@ -205,6 +235,10 @@
      * Tests ability to request the camera capabilities from the video provider.
      */
     public void testRequestCameraCapabilities() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         verifyConnectionForOutgoingCall();
 
@@ -229,6 +263,10 @@
      * Tests ability to request data usage from the video provider.
      */
     public void testRequestDataUsage() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         verifyConnectionForOutgoingCall();
 
@@ -246,6 +284,10 @@
      * Tests ability to receive changes to the video quality from the video provider.
      */
     public void testReceiveVideoQuality() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -278,6 +320,10 @@
      * Tests ability to receive call session events from the video provider.
      */
     public void testReceiveCallSessionEvent() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -300,6 +346,10 @@
      * Tests ability to receive changes to the peer dimensions from the video provider.
      */
     public void testReceivePeerDimensionChange() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -321,6 +371,10 @@
      * Tests ability to set the device orientation via the provider.
      */
     public void testSetDeviceOrientation() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -339,6 +393,10 @@
      * Tests ability to set the preview surface via the provider.
      */
     public void testSetPreviewSurface() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -362,6 +420,10 @@
      * Tests ability to set the display surface via the provider.
      */
     public void testSetDisplaySurface() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
@@ -385,6 +447,10 @@
      * Tests ability to set the camera zoom via the provider.
      */
     public void testSetZoom() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall(VideoProfile.STATE_BIDIRECTIONAL);
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
diff --git a/tests/tests/telecom/src/android/telecom/cts/WiredHeadsetTest.java b/tests/tests/telecom/src/android/telecom/cts/WiredHeadsetTest.java
index f2e62dc..466a90b 100644
--- a/tests/tests/telecom/src/android/telecom/cts/WiredHeadsetTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/WiredHeadsetTest.java
@@ -30,7 +30,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        if (TestUtils.shouldTestTelecom(mContext)) {
+        if (mShouldTestTelecom) {
             setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
         }
     }
@@ -45,6 +45,10 @@
     }
 
     public void testIncomingCallShortPress_acceptsCall() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         addAndVerifyNewIncomingCall(getTestNumber(), null);
         final MockConnection connection = verifyConnectionForIncomingCall();
 
@@ -58,6 +62,10 @@
     }
 
     public void testIncomingCallLongPress_rejectsCall() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         addAndVerifyNewIncomingCall(getTestNumber(), null);
         final MockConnection connection = verifyConnectionForIncomingCall();
 
@@ -71,6 +79,10 @@
     }
 
     public void testInCallShortPress_togglesMute() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall();
         final MockConnection connection = verifyConnectionForOutgoingCall();
         final MockInCallService incallService = mInCallCallbacks.getService();
@@ -89,12 +101,18 @@
     }
 
     public void testInCallLongPress_hangupCall() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall();
         final MockConnection connection = verifyConnectionForOutgoingCall();
 
         final Call call = mInCallCallbacks.getService().getLastCall();
+        assertCallState(call, Call.STATE_DIALING);
+
+        connection.setActive();
         assertCallState(call, Call.STATE_ACTIVE);
-        assertConnectionState(connection, Connection.STATE_ACTIVE);
 
         sendMediaButtonLongPress();
         assertCallState(call, Call.STATE_DISCONNECTED);
@@ -102,6 +120,10 @@
     }
 
     public void testStartCallWithSpeakerphoneNotProvided_SpeakerphoneOffByDefault() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
         placeAndVerifyCall();
         verifyConnectionForOutgoingCall();
         assertAudioRoute(mInCallCallbacks.getService(), CallAudioState.ROUTE_EARPIECE);
diff --git a/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java
index 67d75c9..4ca35b8 100644
--- a/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java
@@ -17,6 +17,7 @@
 package android.telephony.cts;
 
 import android.content.Context;
+import android.net.ConnectivityManager;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
@@ -36,8 +37,16 @@
                 getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
     }
 
-    private boolean hasValidPhone() {
-        return mTelephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE;
+    /**
+     * Checks whether the telephony stack should be running on this device.
+     *
+     * Note: "Telephony" means only SMS/MMS and voice calls in some contexts, but we also care if
+     * the device supports cellular data.
+     */
+    private boolean hasTelephony() {
+        ConnectivityManager mgr =
+                (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+        return mgr.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
     }
 
     private boolean isSimCardPresent() {
@@ -46,16 +55,15 @@
     }
 
     private void checkConfig(PersistableBundle config) {
-        if (!hasValidPhone()) {
-            assertNull(config);
+        if (config == null) {
+            assertFalse("Config should only be null when telephony is not running.", hasTelephony());
             return;
         }
-        if (isSimCardPresent()) {
-            assertNotNull(config);
-        } else {
+        assertNotNull("CarrierConfigManager should not return null config", config);
+        if (!isSimCardPresent()) {
             // Static default in CarrierConfigManager will be returned when no sim card present.
-            assertEquals(config.getBoolean(CarrierConfigManager.KEY_ADDITIONAL_CALL_SETTING_BOOL),
-                         true);
+            assertEquals("Config doesn't match static default.",
+                    config.getBoolean(CarrierConfigManager.KEY_ADDITIONAL_CALL_SETTING_BOOL), true);
         }
     }
 
diff --git a/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java b/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java
index 5b88525..9a93a60 100644
--- a/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java
@@ -18,7 +18,9 @@
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.telephony.CellInfo;
-import android.telephony.PhoneStateListener;
+import android.telephony.CellInfoGsm;
+import android.telephony.CellInfoLte;
+import android.telephony.CellInfoWcdma;
 import android.telephony.TelephonyManager;
 import android.test.AndroidTestCase;
 import android.util.Log;
@@ -36,6 +38,9 @@
     private TelephonyManager mTelephonyManager;
     private static ConnectivityManager mCm;
     private static final String TAG = "android.telephony.cts.CellInfoTest";
+    // Maximum and minimum possible RSSI values(in dbm).
+    private static final int MAX_RRSI = -10;
+    private static final int MIN_RSSI = -150;
 
     @Override
     protected void setUp() throws Exception {
@@ -57,5 +62,66 @@
         assertNotNull("TelephonyManager.getAllCellInfo() returned NULL!", allCellInfo);
         assertTrue("TelephonyManager.getAllCellInfo() returned zero-length list!",
             allCellInfo.size() > 0);
+
+        int numRegisteredCells = 0;
+        for (CellInfo cellInfo : allCellInfo) {
+            if (cellInfo.isRegistered()) {
+                ++numRegisteredCells;
+            }
+            if (cellInfo instanceof CellInfoLte) {
+                verifyLteInfo((CellInfoLte) cellInfo);
+            } else if (cellInfo instanceof CellInfoWcdma) {
+                verifyWcdmaInfo((CellInfoWcdma) cellInfo);
+            } else if (cellInfo instanceof CellInfoGsm) {
+                verifyGsmInfo((CellInfoGsm) cellInfo);
+            }
+        }
+        // At most two cells could be registered.
+        assertTrue("None or too many registered cells : " + numRegisteredCells,
+                numRegisteredCells > 0 && numRegisteredCells <= 2);
+    }
+
+    // Verify lte cell information is within correct range.
+    private void verifyLteInfo(CellInfoLte lte) {
+        verifyRssiDbm(lte.getCellSignalStrength().getDbm());
+        // Verify LTE neighbor information.
+        if (!lte.isRegistered()) {
+            // Only physical cell id is available for LTE neighbor.
+            int pci = lte.getCellIdentity().getPci();
+            // Physical cell id should be within [0, 503].
+            assertTrue("getPci() out of range [0, 503]", pci >= 0 && pci <= 503);
+        }
+    }
+
+    // Verify wcdma cell information is within correct range.
+    private void verifyWcdmaInfo(CellInfoWcdma wcdma) {
+        verifyRssiDbm(wcdma.getCellSignalStrength().getDbm());
+        // Verify wcdma neighbor.
+        if (!wcdma.isRegistered()) {
+            // For wcdma neighbor, only primary scrambling code is available.
+            // Primary scrambling code should be within [0, 511].
+            int psc = wcdma.getCellIdentity().getPsc();
+            assertTrue("getPsc() out of range [0, 511]", psc >= 0 && psc <= 511);
+        }
+    }
+
+    // Verify gsm cell information is within correct range.
+    private void verifyGsmInfo(CellInfoGsm gsm) {
+        verifyRssiDbm(gsm.getCellSignalStrength().getDbm());
+        // Verify gsm neighbor.
+        if (!gsm.isRegistered()) {
+            // lac and cid are available in GSM neighbor information.
+            // Local area code and cellid should be with [0, 65535].
+            int lac = gsm.getCellIdentity().getLac();
+            assertTrue("getLac() out of range [0, 65535]", lac >= 0 && lac <= 65535);
+            int cid = gsm.getCellIdentity().getCid();
+            assertTrue("getCid() out range [0, 65535]", cid >= 0 && cid <= 65535);
+        }
+    }
+
+    // Rssi(in dbm) should be within [MIN_RSSI, MAX_RSSI].
+    private void verifyRssiDbm(int dbm) {
+        assertTrue("getCellSignalStrength().getDbm() out of range",
+                dbm >= MIN_RSSI && dbm <= MAX_RRSI);
     }
 }
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
index 26e0c54..5a80802 100755
--- a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
@@ -84,6 +84,8 @@
                     "51502",    // Globe Telecoms
                     "51503",    // Smart Communications
                     "51505",    // Sun Cellular
+                    "53001",    // Vodafone New Zealand
+                    "53024",    // NZC
                     "311870",   // Boost Mobile
                     "311220",   // USCC
                     "311225",   // USCC LTE
@@ -100,6 +102,7 @@
                     "310600",    // Cellcom
                     "31000",     // Republic Wireless US
                     "310026",     // T-Mobile US
+                    "330120", // OpenMobile communication
                     // Verizon
                     "310004",
                     "310012",
diff --git a/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
index ce3fe78..41fe996 100644
--- a/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
+++ b/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
@@ -177,7 +177,7 @@
                 assertTrue("Phone count should be > 0", phoneCount > 0);
                 break;
             case TelephonyManager.PHONE_TYPE_NONE:
-                assertTrue("Phone count should be 0", phoneCount == 0);
+                assertTrue("Phone count should be 0", phoneCount == 0 || phoneCount == 1);
                 break;
             default:
                 throw new IllegalArgumentException("Did you add a new phone type? " + phoneType);
diff --git a/tests/tests/telephony2/Android.mk b/tests/tests/telephony2/Android.mk
new file mode 100644
index 0000000..f405210
--- /dev/null
+++ b/tests/tests/telephony2/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 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.
+
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsTelephony2TestCases
+
+LOCAL_JAVA_LIBRARIES += android.test.runner
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telephony2/AndroidManifest.xml b/tests/tests/telephony2/AndroidManifest.xml
new file mode 100644
index 0000000..369f75e
--- /dev/null
+++ b/tests/tests/telephony2/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.telephony2">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="com.android.cts.telephony2">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/telephony2/src/android/telephony2/cts/PhoneNumberTest.java b/tests/tests/telephony2/src/android/telephony2/cts/PhoneNumberTest.java
new file mode 100644
index 0000000..65392c4
--- /dev/null
+++ b/tests/tests/telephony2/src/android/telephony2/cts/PhoneNumberTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.telephony2.cts;
+
+import android.os.ParcelFileDescriptor;
+import android.telephony.TelephonyManager;
+import android.test.InstrumentationTestCase;
+import android.util.Log;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class PhoneNumberTest extends InstrumentationTestCase {
+    private static final String TAG = "PhoneNumberTest";
+
+    private void setDefaultSmsApp(boolean setToSmsApp) {
+        StringBuilder command = new StringBuilder();
+        command.append("appops set ");
+        command.append(getInstrumentation().getContext().getPackageName());
+        command.append(" WRITE_SMS ");
+        command.append(setToSmsApp ? "allow" : "default");
+
+        ParcelFileDescriptor pfd = getInstrumentation().getUiAutomation()
+                .executeShellCommand(command.toString());
+
+        InputStream is = new FileInputStream(pfd.getFileDescriptor());
+        try {
+            final byte[] buffer = new byte[8192];
+            while ((is.read(buffer)) != -1);
+        } catch (IOException e) {
+            Log.e(TAG, "Error managing default SMS app", e);
+        }
+    }
+
+    public void testGetLine1Number() {
+        TelephonyManager tm = getInstrumentation().getContext().getSystemService(
+                TelephonyManager.class);
+
+        setDefaultSmsApp(true);
+
+        // This shouldn't crash.
+        tm.getLine1Number();
+
+        setDefaultSmsApp(false);
+
+        // This should throw now.
+        try {
+            tm.getLine1Number();
+            fail("Should throw SecurityException");
+        } catch (SecurityException expected) {
+        }
+    }
+}
diff --git a/tests/tests/text/src/android/text/format/cts/DateFormatTest.java b/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
index 61fa37d..8ca1fea 100644
--- a/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
+++ b/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
@@ -19,19 +19,23 @@
 
 import android.content.ContentResolver;
 import android.content.Context;
+import android.os.ParcelFileDescriptor;
 import android.provider.Settings;
-import android.test.AndroidTestCase;
+import android.test.InstrumentationTestCase;
 import android.text.format.DateFormat;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.io.FileInputStream;
+import java.io.InputStream;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.Locale;
+import java.util.Scanner;
 import java.util.TimeZone;
 
-public class DateFormatTest extends AndroidTestCase {
+public class DateFormatTest extends InstrumentationTestCase {
 
     private Context mContext;
     private ContentResolver mContentResolver;
@@ -50,12 +54,41 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        mContext = getContext();
+        enableAppOps();
+        mContext = getInstrumentation().getContext();
         mContentResolver = mContext.getContentResolver();
         mIs24HourFormat = DateFormat.is24HourFormat(mContext);
         mDefaultLocale = Locale.getDefault();
     }
 
+    private void enableAppOps() {
+        StringBuilder cmd = new StringBuilder();
+        cmd.append("appops set ");
+        cmd.append(getInstrumentation().getContext().getPackageName());
+        cmd.append(" android:write_settings allow");
+        getInstrumentation().getUiAutomation().executeShellCommand(cmd.toString());
+
+        StringBuilder query = new StringBuilder();
+        query.append("appops get ");
+        query.append(getInstrumentation().getContext().getPackageName());
+        query.append(" android:write_settings");
+        String queryStr = query.toString();
+
+        String result = "No operations.";
+        while (result.contains("No operations")) {
+            ParcelFileDescriptor pfd = getInstrumentation().getUiAutomation().executeShellCommand(
+                                        queryStr);
+            InputStream inputStream = new FileInputStream(pfd.getFileDescriptor());
+            result = convertStreamToString(inputStream);
+        }
+    }
+
+    private String convertStreamToString(InputStream is) {
+        try (Scanner scanner = new Scanner(is).useDelimiter("\\A")) {
+            return scanner.hasNext() ? scanner.next() : "";
+        }
+    }
+
     @Override
     protected void tearDown() throws Exception {
         if (!mIs24HourFormat) {
diff --git a/tests/tests/tv/AndroidManifest.xml b/tests/tests/tv/AndroidManifest.xml
index 41ec835..79406e0 100644
--- a/tests/tests/tv/AndroidManifest.xml
+++ b/tests/tests/tv/AndroidManifest.xml
@@ -22,6 +22,9 @@
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
     <uses-permission android:name="android.permission.INJECT_EVENTS" />
 
+    <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
+    <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
+
     <application>
         <uses-library android:name="android.test.runner" />
 
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/PictureTest.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/PictureTest.java
new file mode 100644
index 0000000..6619b11
--- /dev/null
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/PictureTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.uirendering.cts.testclasses;
+
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Picture;
+import android.graphics.Rect;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.uirendering.cts.bitmapverifiers.ColorVerifier;
+import android.uirendering.cts.bitmapverifiers.RectVerifier;
+import android.uirendering.cts.testinfrastructure.ActivityTestBase;
+import android.uirendering.cts.testinfrastructure.CanvasClient;
+
+public class PictureTest extends ActivityTestBase {
+
+    private static final Rect sRect = new Rect(0, 0, 40, 40);
+    private static final Rect sOffsetRect = new Rect(40, 0, 80, 40);
+
+    private static final Picture greenSquare() {
+        Paint pt = new Paint();
+        pt.setColor(Color.GREEN);
+        Picture pic = new Picture();
+        Canvas subcanvas = pic.beginRecording(ActivityTestBase.TEST_WIDTH,
+                                              ActivityTestBase.TEST_HEIGHT);
+        subcanvas.drawRect(sRect, pt);
+        pic.endRecording();
+
+        return pic;
+    }
+
+    public void testPictureRespectsClip() throws Exception {
+        createTest()
+            .addCanvasClient(
+                new CanvasClient() {
+                    @Override
+                    public void draw(Canvas canvas, int width, int height) {
+                        Picture pic = greenSquare();
+                        canvas.clipRect(sOffsetRect);
+                        pic.draw(canvas);  // should be clipped out
+                    }
+                }
+            ).runWithVerifier(new ColorVerifier(Color.WHITE));
+    }
+
+    public void testPictureRespectsTranslate() throws Exception {
+        createTest()
+            .addCanvasClient(
+                new CanvasClient() {
+                    @Override
+                    public void draw(Canvas canvas, int width, int height) {
+                        Picture pic = greenSquare();
+                        canvas.translate(40, 0);
+                        pic.draw(canvas);  // should be offset
+                    }
+                }
+            ).runWithVerifier(
+                new RectVerifier(Color.WHITE, Color.GREEN, sOffsetRect));
+    }
+}
+
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ShaderTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ShaderTests.java
new file mode 100644
index 0000000..85764a6
--- /dev/null
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ShaderTests.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.uirendering.cts.testclasses;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ComposeShader;
+import android.graphics.Paint;
+import android.graphics.PorterDuff;
+import android.graphics.RadialGradient;
+import android.graphics.Shader;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.uirendering.cts.bitmapcomparers.MSSIMComparer;
+import android.uirendering.cts.bitmapverifiers.ColorVerifier;
+import android.uirendering.cts.testinfrastructure.ActivityTestBase;
+import android.uirendering.cts.testinfrastructure.CanvasClient;
+import com.android.cts.uirendering.R;
+
+public class ShaderTests extends ActivityTestBase {
+    @SmallTest
+    public void testSinglePixelBitmapShader() {
+        createTest()
+                .addCanvasClient(new CanvasClient() {
+                    Paint mPaint = new Paint();
+                    @Override
+                    public void draw(Canvas canvas, int width, int height) {
+                        if (mPaint.getShader() == null) {
+                            Bitmap shaderBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+                            shaderBitmap.eraseColor(Color.BLUE);
+                            mPaint.setShader(new BitmapShader(shaderBitmap,
+                                    Shader.TileMode.REPEAT, Shader.TileMode.REPEAT));
+                        }
+                        canvas.drawRect(0, 0, width, height, mPaint);
+                    }
+                })
+                .runWithVerifier(new ColorVerifier(Color.BLUE));
+    }
+
+    @SmallTest
+    public void testSinglePixelComposeShader() {
+        createTest()
+                .addCanvasClient(new CanvasClient() {
+                    Paint mPaint = new Paint();
+
+                    @Override
+                    public void draw(Canvas canvas, int width, int height) {
+                        if (mPaint.getShader() == null) {
+                            // BLUE as SRC for Compose
+                            Bitmap shaderBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+                            shaderBitmap.eraseColor(Color.BLUE);
+                            BitmapShader bitmapShader = new BitmapShader(shaderBitmap,
+                                    Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
+
+                            // Fully opaque gradient mask (via DST_IN).
+                            // In color array, only alpha channel will matter.
+                            RadialGradient gradientShader = new RadialGradient(
+                                    10, 10, 10,
+                                    new int[] { Color.RED, Color.GREEN, Color.BLUE }, null,
+                                    Shader.TileMode.CLAMP);
+
+                            mPaint.setShader(new ComposeShader(
+                                    bitmapShader, gradientShader, PorterDuff.Mode.DST_IN));
+                        }
+                        canvas.drawRect(0, 0, width, height, mPaint);
+                    }
+                })
+                .runWithVerifier(new ColorVerifier(Color.BLUE));
+    }
+
+    @SmallTest
+    public void testComplexShaderUsage() {
+        /*
+         * This test not only builds a very complex drawing operation, but also tests an
+         * implementation detail of HWUI, using the largest number of texture sample sources
+         * possible - 4.
+         *
+         * 1) Bitmap passed to canvas.drawBitmap
+         * 2) gradient color lookup
+         * 3) gradient dither lookup
+         * 4) Bitmap in BitmapShader
+          */
+        createTest()
+                .addCanvasClient(new CanvasClient() {
+                    Paint mPaint = new Paint();
+                    Bitmap mBitmap;
+
+                    @Override
+                    public void draw(Canvas canvas, int width, int height) {
+                        if (mBitmap == null) {
+                            mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8);
+                            // Primary content mask
+                            Canvas bitmapCanvas = new Canvas(mBitmap);
+                            final float radius = width / 2.0f;
+                            bitmapCanvas.drawCircle(width / 2, height / 2, radius, mPaint);
+
+                            // Bitmap shader mask, partially overlapping content
+                            Bitmap shaderBitmap = Bitmap.createBitmap(
+                                    width, height, Bitmap.Config.ALPHA_8);
+                            bitmapCanvas = new Canvas(shaderBitmap);
+                            bitmapCanvas.drawCircle(width / 2, 0, radius, mPaint);
+                            bitmapCanvas.drawCircle(width / 2, height, radius, mPaint);
+                            BitmapShader bitmapShader = new BitmapShader(shaderBitmap,
+                                    Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
+
+                            // Gradient fill
+                            RadialGradient gradientShader = new RadialGradient(
+                                    width / 2, height / 2, radius,
+                                    new int[] { Color.RED, Color.BLUE, Color.GREEN },
+                                    null, Shader.TileMode.CLAMP);
+
+                            mPaint.setShader(new ComposeShader(gradientShader, bitmapShader,
+                                    PorterDuff.Mode.DST_IN));
+                        }
+                        canvas.drawBitmap(mBitmap, 0, 0, mPaint);
+                    }
+                })
+                // expect extremely similar rendering results between SW and HW, since there's no AA
+                .runWithComparer(new MSSIMComparer(0.98f));
+    }
+}
diff --git a/tests/tests/util/src/android/util/cts/ArrayMapTest.java b/tests/tests/util/src/android/util/cts/ArrayMapTest.java
index 7fdd0da..130b354 100644
--- a/tests/tests/util/src/android/util/cts/ArrayMapTest.java
+++ b/tests/tests/util/src/android/util/cts/ArrayMapTest.java
@@ -310,7 +310,7 @@
 
     private static void dump(ArrayMap map1, ArrayMap map2) {
         Log.e("test", "ArrayMap of " + map1.size() + " entries:");
-        for (int i=0; i<map2.size(); i++) {
+        for (int i=0; i<map1.size(); i++) {
             Log.e("test", "    " + map1.keyAt(i) + " -> " + map1.valueAt(i));
         }
         Log.e("test", "ArrayMap of " + map2.size() + " entries:");
diff --git a/tests/tests/util/src/android/util/cts/ArraySetTest.java b/tests/tests/util/src/android/util/cts/ArraySetTest.java
new file mode 100644
index 0000000..112459c
--- /dev/null
+++ b/tests/tests/util/src/android/util/cts/ArraySetTest.java
@@ -0,0 +1,495 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.util.cts;
+
+import android.test.AndroidTestCase;
+import android.util.ArraySet;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+// As is the case with ArraySet itself, ArraySetTest borrows heavily from ArrayMapTest.
+
+public class ArraySetTest extends AndroidTestCase {
+    private static final String TAG = "ArraySetTest";
+
+    private static final boolean DEBUG = false;
+
+    private static final int OP_ADD = 1;
+    private static final int OP_REM = 2;
+
+    private static int[] OPS = new int[] {
+            OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD,
+            OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD,
+            OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM,
+            OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM,
+
+            OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD,
+            OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM,
+
+            OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD,
+            OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM,
+
+            OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD,
+            OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM,
+
+            OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD,
+            OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD, OP_ADD,
+            OP_ADD, OP_ADD, OP_ADD,
+            OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM,
+            OP_REM, OP_REM, OP_REM,
+            OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM, OP_REM,
+    };
+
+    private static int[] KEYS = new int[] {
+            // General adding and removing.
+              -1,   1900,    600,    200,   1200,   1500,   1800,    100,   1900,
+            2100,    300,    800,    600,   1100,   1300,   2000,   1000,   1400,
+             600,     -1,   1900,    600,    300,   2100,    200,    800,    800,
+            1800,   1500,   1300,   1100,   2000,   1400,   1000,   1200,   1900,
+
+            // Shrink when removing item from end.
+             100,    200,    300,    400,    500,    600,    700,    800,    900,
+             900,    800,    700,    600,    500,    400,    300,    200,    100,
+
+            // Shrink when removing item from middle.
+             100,    200,    300,    400,    500,    600,    700,    800,    900,
+             900,    800,    700,    600,    500,    400,    200,    300,    100,
+
+            // Shrink when removing item from front.
+             100,    200,    300,    400,    500,    600,    700,    800,    900,
+             900,    800,    700,    600,    500,    400,    100,    200,    300,
+
+            // Test hash collisions.
+             105,    106,    108,    104,    102,    102,    107,      5,    205,
+               4,    202,    203,      3,      5,    101,    109,    200,    201,
+               0,     -1,    100,
+             106,    108,    104,    102,    103,    105,    107,    101,    109,
+              -1,    100,      0,
+               4,      5,      3,      5,    200,    203,    202,    201,    205,
+    };
+
+    public static class ControlledHash {
+        final int mValue;
+
+        ControlledHash(int value) {
+            mValue = value;
+        }
+
+        @Override
+        public final boolean equals(Object o) {
+            if (o == null) {
+                return false;
+            }
+            return mValue == ((ControlledHash)o).mValue;
+        }
+
+        @Override
+        public final int hashCode() {
+            return mValue/100;
+        }
+
+        @Override
+        public final String toString() {
+            return Integer.toString(mValue);
+        }
+    }
+
+    private static boolean compare(Object v1, Object v2) {
+        if (v1 == null) {
+            return v2 == null;
+        }
+        if (v2 == null) {
+            return false;
+        }
+        return v1.equals(v2);
+    }
+
+    private static <E> void compareSets(HashSet<E> set, ArraySet<E> array) {
+        assertEquals("Bad size", set.size(), array.size());
+
+        // Check that every entry in HashSet is in ArraySet.
+        for (E entry : set) {
+            assertTrue("ArraySet missing value: " + entry, array.contains(entry));
+        }
+
+        // Check that every entry in ArraySet is in HashSet using ArraySet.iterator().
+        for (E entry : array) {
+            assertTrue("ArraySet (via iterator) has unexpected value: " + entry,
+                    set.contains(entry));
+        }
+
+        // Check that every entry in ArraySet is in HashSet using ArraySet.valueAt().
+        for (int i = 0; i < array.size(); ++i) {
+            E entry = array.valueAt(i);
+            assertTrue("ArraySet (via valueAt) has unexpected value: " + entry,
+                    set.contains(entry));
+        }
+
+        if (set.hashCode() != array.hashCode()) {
+            assertEquals("Set hash codes differ", set.hashCode(), array.hashCode());
+        }
+
+        assertTrue("HashSet.equals(ArraySet) failed", set.equals(array));
+        assertTrue("ArraySet.equals(HashSet) failed", array.equals(set));
+
+        assertTrue("HashSet.containsAll(ArraySet) failed", set.containsAll(array));
+        assertTrue("ArraySet.containsAll(HashSet) failed", array.containsAll(set));
+    }
+
+    private static <E> void compareArraySetAndRawArray(ArraySet<E> arraySet, Object[] rawArray) {
+        assertEquals("Bad size", arraySet.size(), rawArray.length);
+        for (int i = 0; i < rawArray.length; ++i) {
+            assertEquals("ArraySet<E> and raw array unequal at index " + i,
+                    arraySet.valueAt(i), rawArray[i]);
+        }
+    }
+
+    private static <E> void validateArraySet(ArraySet<E> array) {
+        int index = 0;
+        Iterator<E> iter = array.iterator();
+        while (iter.hasNext()) {
+            E value = iter.next();
+            E realValue = array.valueAt(index);
+            if (!compare(realValue, value)) {
+                fail("Bad array set entry: expected " + realValue
+                        + ", got " + value + " at index " + index);
+            }
+            index++;
+        }
+
+        assertEquals("Length of iteration was unequal to size()", array.size(), index);
+    }
+
+    private static <E> void dump(HashSet<E> set, ArraySet<E> array) {
+        Log.e(TAG, "HashSet of " + set.size() + " entries:");
+        for (E entry : set) {
+            Log.e(TAG, "    " + entry);
+        }
+        Log.e(TAG, "ArraySet of " + array.size() + " entries:");
+        for (int i = 0; i < array.size(); i++) {
+            Log.e(TAG, "    " + array.valueAt(i));
+        }
+    }
+
+    private static void dump(ArraySet set1, ArraySet set2) {
+        Log.e(TAG, "ArraySet of " + set1.size() + " entries:");
+        for (int i = 0; i < set1.size(); i++) {
+            Log.e(TAG, "    " + set1.valueAt(i));
+        }
+        Log.e(TAG, "ArraySet of " + set2.size() + " entries:");
+        for (int i = 0; i < set2.size(); i++) {
+            Log.e(TAG, "    " + set2.valueAt(i));
+        }
+    }
+
+    public void testTest() {
+        assertEquals("OPS and KEYS must be equal length", OPS.length, KEYS.length);
+    }
+
+    public void testBasicArraySet() {
+        HashSet<ControlledHash> hashSet = new HashSet<ControlledHash>();
+        ArraySet<ControlledHash> arraySet = new ArraySet<ControlledHash>();
+
+        for (int i = 0; i < OPS.length; i++) {
+            ControlledHash key = KEYS[i] < 0 ? null : new ControlledHash(KEYS[i]);
+            String strKey = KEYS[i] < 0 ? null : Integer.toString(KEYS[i]);
+            switch (OPS[i]) {
+                case OP_ADD:
+                    if (DEBUG) Log.i(TAG, "Adding key: " + key);
+                    boolean hashAdded = hashSet.add(key);
+                    boolean arrayAdded = arraySet.add(key);
+                    assertEquals("Adding key " + key + " was not symmetric in HashSet and "
+                            + "ArraySet", hashAdded, arrayAdded);
+                    break;
+                case OP_REM:
+                    if (DEBUG) Log.i(TAG, "Removing key: " + key);
+                    boolean hashRemoved = hashSet.remove(key);
+                    boolean arrayRemoved = arraySet.remove(key);
+                    assertEquals("Removing key " + key + " was not symmetric in HashSet and "
+                            + "ArraySet", hashRemoved, arrayRemoved);
+                    break;
+                default:
+                    fail("Bad operation " + OPS[i] + " @ " + i);
+                    return;
+            }
+            if (DEBUG) dump(hashSet, arraySet);
+
+            try {
+                validateArraySet(arraySet);
+            } catch (Throwable e) {
+                Log.e(TAG, e.getMessage());
+                dump(hashSet, arraySet);
+                throw e;
+            }
+
+            try {
+                compareSets(hashSet, arraySet);
+            } catch (Throwable e) {
+                Log.e(TAG, e.getMessage());
+                dump(hashSet, arraySet);
+                throw e;
+            }
+        }
+
+        // Check to see if HashSet.iterator().remove() works as expected.
+        arraySet.add(new ControlledHash(50000));
+        ControlledHash lookup = new ControlledHash(50000);
+        Iterator<ControlledHash> it = arraySet.iterator();
+        while (it.hasNext()) {
+            if (it.next().equals(lookup)) {
+                it.remove();
+            }
+        }
+        if (arraySet.contains(lookup)) {
+            String msg = "Bad ArraySet iterator: didn't remove test key";
+            Log.e(TAG, msg);
+            dump(hashSet, arraySet);
+            fail(msg);
+        }
+
+        Log.e(TAG, "Test successful; printing final map.");
+        dump(hashSet, arraySet);
+    }
+
+    public void testCopyArraySet() {
+        // set copy constructor test
+        ArraySet newSet = new ArraySet<Integer>();
+        for (int i = 0; i < 10; ++i) {
+            newSet.add(i);
+        }
+
+        ArraySet copySet = new ArraySet(newSet);
+        if (!compare(copySet, newSet)) {
+            String msg = "ArraySet copy constructor failure: expected " +
+                    newSet + ", got " + copySet;
+            Log.e(TAG, msg);
+            dump(newSet, copySet);
+            fail(msg);
+            return;
+        }
+    }
+
+    public void testEqualsArrayMap() {
+        ArraySet<Integer> set1 = new ArraySet<Integer>();
+        ArraySet<Integer> set2 = new ArraySet<Integer>();
+        HashSet<Integer> set3 = new HashSet<Integer>();
+        if (!compare(set1, set2) || !compare(set1, set3) || !compare(set3, set2)) {
+            fail("ArraySet equals failure for empty sets " + set1 + ", " +
+                    set2 + ", " + set3);
+        }
+
+        for (int i = 0; i < 10; ++i) {
+            set1.add(i);
+            set2.add(i);
+            set3.add(i);
+        }
+        if (!compare(set1, set2) || !compare(set1, set3) || !compare(set3, set2)) {
+            fail("ArraySet equals failure for populated sets " + set1 + ", " +
+                    set2 + ", " + set3);
+        }
+
+        set1.remove(0);
+        if (compare(set1, set2) || compare(set1, set3) || compare(set3, set1)) {
+            fail("ArraySet equals failure for set size " + set1 + ", " +
+                    set2 + ", " + set3);
+        }
+    }
+
+    public void testIsEmpty() {
+        ArraySet<Integer> set = new ArraySet<Integer>();
+        assertEquals("New ArraySet should have size==0", 0, set.size());
+        assertTrue("New ArraySet should be isEmptry", set.isEmpty());
+
+        set.add(3);
+        assertEquals("ArraySet has incorrect size", 1, set.size());
+        assertFalse("ArraySet should not be isEmptry", set.isEmpty());
+
+        set.remove(3);
+        assertEquals("ArraySet should have size==0", 0, set.size());
+        assertTrue("ArraySet should be isEmptry", set.isEmpty());
+    }
+
+    public void testRemoveAt() {
+        ArraySet<Integer> set = new ArraySet<Integer>();
+
+        for (int i = 0; i < 10; ++i) {
+            set.add(i * 10);
+        }
+
+        int indexToDelete = 6;
+        assertEquals(10, set.size());
+        assertEquals(indexToDelete * 10, set.valueAt(indexToDelete).intValue());
+        assertEquals(indexToDelete * 10, set.removeAt(indexToDelete).intValue());
+        assertEquals(9, set.size());
+
+        for (int i = 0; i < 9; ++i) {
+            int expectedValue = ((i >= indexToDelete) ? (i + 1) : i) * 10;
+            assertEquals(expectedValue, set.valueAt(i).intValue());
+        }
+
+        for (int i = 9; i > 0; --i) {
+            set.removeAt(0);
+            assertEquals(i - 1, set.size());
+        }
+
+        assertTrue(set.isEmpty());
+
+        try {
+            set.removeAt(0);
+            fail("Expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException expected) {
+            // expected
+        }
+    }
+
+    public void testIndexOf() {
+        ArraySet<Integer> set = new ArraySet<Integer>();
+
+        for (int i = 0; i < 10; ++i) {
+            set.add(i * 10);
+        }
+
+        for (int i = 0; i < 10; ++i) {
+            assertEquals("indexOf(" + (i * 10) + ")", i, set.indexOf(i * 10));
+        }
+    }
+
+    public void testAddAll() {
+        ArraySet<Integer> arraySet = new ArraySet<Integer>();
+        ArraySet<Integer> testArraySet = new ArraySet<Integer>();
+        ArrayList<Integer> testArrayList = new ArrayList<Integer>();
+
+        for (int i = 0; i < 10; ++i) {
+            testArraySet.add(i * 10);
+            testArrayList.add(i * 10);
+        }
+
+        assertTrue(arraySet.isEmpty());
+
+        // addAll(ArraySet) has no return value.
+        arraySet.addAll(testArraySet);
+        assertTrue("ArraySet.addAll(ArraySet) failed", arraySet.containsAll(testArraySet));
+
+        arraySet.clear();
+        assertTrue(arraySet.isEmpty());
+
+        // addAll(Collection) returns true if any items were added.
+        assertTrue(arraySet.addAll(testArrayList));
+        assertTrue("ArraySet.addAll(Container) failed", arraySet.containsAll(testArrayList));
+        assertTrue("ArraySet.addAll(Container) failed", arraySet.containsAll(testArraySet));
+        // Adding the same Collection should return false.
+        assertFalse(arraySet.addAll(testArrayList));
+        assertTrue("ArraySet.addAll(Container) failed", arraySet.containsAll(testArrayList));
+    }
+
+    public void testRemoveAll() {
+        ArraySet<Integer> arraySet = new ArraySet<Integer>();
+        ArraySet<Integer> arraySetToRemove = new ArraySet<Integer>();
+        ArrayList<Integer> arrayListToRemove = new ArrayList<Integer>();
+
+        for (int i = 0; i < 10; ++i) {
+            arraySet.add(i * 10);
+        }
+
+        for (int i = 6; i < 15; ++i) {
+            arraySetToRemove.add(i * 10);
+        }
+
+        for (int i = 3; i > -3; --i) {
+            arrayListToRemove.add(i * 10);
+        }
+
+        assertEquals(10, arraySet.size());
+
+        // Remove [6,14] (really [6,9]) via another ArraySet.
+        assertTrue(arraySet.removeAll(arraySetToRemove));
+        assertEquals(6, arraySet.size());
+        assertFalse(arraySet.removeAll(arraySetToRemove));
+        assertEquals(6, arraySet.size());
+
+        // Remove [-2,3] (really [0,3]) via an ArrayList (ie Collection).
+        assertTrue(arraySet.removeAll(arrayListToRemove));
+        assertEquals(2, arraySet.size());
+        assertFalse(arraySet.removeAll(arrayListToRemove));
+        assertEquals(2, arraySet.size());
+
+        // Remove the rest of the items.
+        ArraySet<Integer> copy = new ArraySet<Integer>(arraySet);
+        assertTrue(arraySet.removeAll(copy));
+        assertEquals(0, arraySet.size());
+        assertFalse(arraySet.removeAll(copy));
+        assertEquals(0, arraySet.size());
+    }
+
+    public void testRetainAll() {
+        ArraySet<Integer> arraySet = new ArraySet<Integer>();
+        ArrayList<Integer> arrayListToRetain = new ArrayList<Integer>();
+
+        for (int i = 0; i < 10; ++i) {
+            arraySet.add(i * 10);
+        }
+
+        arrayListToRetain.add(30);
+        arrayListToRetain.add(50);
+        arrayListToRetain.add(51); // bogus value
+
+        assertEquals(10, arraySet.size());
+
+        assertTrue(arraySet.retainAll(arrayListToRetain));
+        assertEquals(2, arraySet.size());
+
+        assertTrue(arraySet.contains(30));
+        assertTrue(arraySet.contains(50));
+        assertFalse(arraySet.contains(51));
+
+        // Nothing should change.
+        assertFalse(arraySet.retainAll(arrayListToRetain));
+        assertEquals(2, arraySet.size());
+    }
+
+    public void testToArray() {
+        ArraySet<Integer> arraySet = new ArraySet<Integer>();
+        for (int i = 0; i < 10; ++i) {
+            arraySet.add(i * 10);
+        }
+
+        // Allocate a new array with the right type given a zero-length ephemeral array.
+        Integer[] copiedArray = arraySet.toArray(new Integer[0]);
+        compareArraySetAndRawArray(arraySet, copiedArray);
+
+        // Allocate a new array with the right type given an undersized array.
+        Integer[] undersizedArray = new Integer[5];
+        copiedArray = arraySet.toArray(undersizedArray);
+        compareArraySetAndRawArray(arraySet, copiedArray);
+        assertNotSame(undersizedArray, copiedArray);
+
+        // Use the passed array that is large enough to hold the ArraySet.
+        Integer[] rightSizedArray = new Integer[10];
+        copiedArray = arraySet.toArray(rightSizedArray);
+        compareArraySetAndRawArray(arraySet, copiedArray);
+        assertSame(rightSizedArray, copiedArray);
+
+        // Create a new Object[] array.
+        Object[] objectArray = arraySet.toArray();
+        compareArraySetAndRawArray(arraySet, objectArray);
+    }
+}
diff --git a/tests/tests/view/AndroidManifest.xml b/tests/tests/view/AndroidManifest.xml
index 9ccbeb4..b7e0076 100644
--- a/tests/tests/view/AndroidManifest.xml
+++ b/tests/tests/view/AndroidManifest.xml
@@ -92,7 +92,7 @@
         </activity>
 
         <activity android:name="android.view.animation.cts.GridLayoutAnimCtsActivity"
-            android:label="GridLayoutAnimCtsActivity">
+            android:label="GridLayoutAnimCtsActivity" android:configChanges="orientation|screenSize">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
@@ -100,7 +100,7 @@
         </activity>
 
         <activity android:name="android.view.animation.cts.LayoutAnimCtsActivity"
-            android:label="LayoutAnimCtsActivity">
+            android:label="LayoutAnimCtsActivity" android:configChanges="orientation|screenSize">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
@@ -150,7 +150,11 @@
         <activity android:name="android.view.cts.GestureDetectorCtsActivity"
             android:label="GestureDetectorCtsActivity"
             android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
-            
+
+        <activity android:name="android.view.cts.ScaleGestureDetectorCtsActivity"
+            android:label="ScaleGestureDetectorCtsActivity"
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
+
         <activity android:name="android.view.cts.GLSurfaceViewCtsActivity"
             android:label="GLSurfaceViewCts"/>
 
@@ -171,6 +175,14 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="android.view.cts.SearchEventActivity"
+            android:label="SearchEventActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
+            </intent-filter>
+        </activity>
+
         <activity android:name="android.view.cts.CtsActivity"
             android:label="CtsActivity">
             <intent-filter>
diff --git a/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java b/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java
index f02a0d6..1c02a89 100644
--- a/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java
+++ b/tests/tests/view/src/android/view/cts/GestureDetectorCtsActivity.java
@@ -25,6 +25,7 @@
 import android.view.ViewGroup;
 import android.view.GestureDetector.SimpleOnGestureListener;
 import android.view.View.OnTouchListener;
+import android.view.View.OnGenericMotionListener;
 import android.widget.Button;
 
 public class GestureDetectorCtsActivity extends Activity {
@@ -38,6 +39,7 @@
     public boolean onDoubleTap;
     public boolean onDoubleTapEvent;
     public boolean onSingleTapConfirmed;
+    public boolean onContextClick;
 
     private GestureDetector mGestureDetector;
     private MockOnGestureListener mOnGestureListener;
@@ -56,6 +58,7 @@
 
         mGestureDetector = new GestureDetector(this, mOnGestureListener, mHandler);
         mGestureDetector.setOnDoubleTapListener(mOnGestureListener);
+        mGestureDetector.setContextClickListener(mOnGestureListener);
         mView = new View(this);
         mButton = new Button(this);
         mTop = new Button(this);
@@ -86,7 +89,13 @@
         return mGestureDetector;
     }
 
+    public MockOnGestureListener getListener() {
+        return mOnGestureListener;
+    }
+
     public class MockOnGestureListener extends SimpleOnGestureListener {
+        private MotionEvent mPreviousContextClickEvent;
+
         public boolean onDown(MotionEvent e) {
             isDown = true;
             return true;
@@ -129,14 +138,29 @@
             onSingleTapConfirmed = true;
             return false;
         }
+
+        public boolean onContextClick(MotionEvent e) {
+            onContextClick = true;
+            mPreviousContextClickEvent = e;
+            return false;
+        }
+
+        public MotionEvent getPreviousContextClickEvent() {
+            return mPreviousContextClickEvent;
+        }
     }
 
-    class MockOnTouchListener implements OnTouchListener {
+    class MockOnTouchListener implements OnTouchListener, OnGenericMotionListener {
 
         public boolean onTouch(View v, MotionEvent event) {
             mGestureDetector.onTouchEvent(event);
             return true;
         }
+
+        public boolean onGenericMotion(View v, MotionEvent event) {
+            mGestureDetector.onGenericMotionEvent(event);
+            return true;
+        }
     }
 
 }
diff --git a/tests/tests/view/src/android/view/cts/GestureDetectorTest.java b/tests/tests/view/src/android/view/cts/GestureDetectorTest.java
index c568cf1..f06455d 100644
--- a/tests/tests/view/src/android/view/cts/GestureDetectorTest.java
+++ b/tests/tests/view/src/android/view/cts/GestureDetectorTest.java
@@ -19,18 +19,31 @@
 import android.content.Context;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.SystemClock;
 import android.test.ActivityInstrumentationTestCase2;
 import android.test.UiThreadTest;
+import android.view.cts.GestureDetectorCtsActivity.MockOnGestureListener;
 import android.view.GestureDetector;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
 import android.view.GestureDetector.SimpleOnGestureListener;
 
 public class GestureDetectorTest extends
         ActivityInstrumentationTestCase2<GestureDetectorCtsActivity> {
 
+    private static final float X_3F = 3.0f;
+    private static final float Y_4F = 4.0f;
+
     private GestureDetector mGestureDetector;
     private GestureDetectorCtsActivity mActivity;
+    private MockOnGestureListener mListener;
     private Context mContext;
 
+    private long mDownTime;
+    private long mEventTime;
+    private MotionEvent mButtonPressPrimaryMotionEvent;
+    private MotionEvent mButtonPressSecondaryMotionEvent;
+
     public GestureDetectorTest() {
         super("com.android.cts.view", GestureDetectorCtsActivity.class);
     }
@@ -40,6 +53,7 @@
         super.setUp();
         mActivity = getActivity();
         mGestureDetector = mActivity.getGestureDetector();
+        mListener = mActivity.getListener();
         mContext = getInstrumentation().getTargetContext();
         mActivity.isDown = false;
         mActivity.isScroll = false;
@@ -50,6 +64,17 @@
         mActivity.onDoubleTap = false;
         mActivity.onDoubleTapEvent = false;
         mActivity.onSingleTapConfirmed = false;
+        mActivity.onContextClick = false;
+
+        mDownTime = SystemClock.uptimeMillis();
+        mEventTime = SystemClock.uptimeMillis();
+        mButtonPressPrimaryMotionEvent = MotionEvent.obtain(mDownTime, mEventTime,
+                MotionEvent.ACTION_BUTTON_PRESS, X_3F, Y_4F, 0);
+        mButtonPressPrimaryMotionEvent.setActionButton(MotionEvent.BUTTON_STYLUS_PRIMARY);
+
+        mButtonPressSecondaryMotionEvent = MotionEvent.obtain(mDownTime, mEventTime,
+                MotionEvent.ACTION_BUTTON_PRESS, X_3F, Y_4F, 0);
+        mButtonPressSecondaryMotionEvent.setActionButton(MotionEvent.BUTTON_SECONDARY);
     }
 
     @UiThreadTest
@@ -75,4 +100,35 @@
         mGestureDetector.setIsLongpressEnabled(false);
         assertFalse(mGestureDetector.isLongpressEnabled());
     }
+
+    public void testOnSetContextClickListener() {
+        mActivity.onContextClick = false;
+        mGestureDetector.setContextClickListener(null);
+        mGestureDetector.onGenericMotionEvent(mButtonPressPrimaryMotionEvent);
+        assertFalse(mActivity.onContextClick);
+
+        mGestureDetector.setContextClickListener(mListener);
+        mGestureDetector.onGenericMotionEvent(mButtonPressPrimaryMotionEvent);
+        assertTrue(mActivity.onContextClick);
+        assertSame(mButtonPressPrimaryMotionEvent, mListener.getPreviousContextClickEvent());
+    }
+
+    public void testOnContextClick() {
+        mActivity.onContextClick = false;
+        mListener.onContextClick(mButtonPressPrimaryMotionEvent);
+        assertTrue(mActivity.onContextClick);
+        assertSame(mButtonPressPrimaryMotionEvent, mListener.getPreviousContextClickEvent());
+
+        mActivity.onContextClick = false;
+        mGestureDetector.onGenericMotionEvent(mButtonPressSecondaryMotionEvent);
+        assertTrue(mActivity.onContextClick);
+        assertSame(mButtonPressSecondaryMotionEvent, mListener.getPreviousContextClickEvent());
+    }
+
+    public void testOnGenericMotionEvent() {
+        mActivity.onContextClick = false;
+        mGestureDetector.onGenericMotionEvent(mButtonPressPrimaryMotionEvent);
+        assertTrue(mActivity.onContextClick);
+        assertSame(mButtonPressPrimaryMotionEvent, mListener.getPreviousContextClickEvent());
+    }
 }
diff --git a/tests/tests/view/src/android/view/cts/ScaleGestureDetectorCtsActivity.java b/tests/tests/view/src/android/view/cts/ScaleGestureDetectorCtsActivity.java
new file mode 100644
index 0000000..606d536
--- /dev/null
+++ b/tests/tests/view/src/android/view/cts/ScaleGestureDetectorCtsActivity.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.view.cts;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.ScaleGestureDetector;
+import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener;
+
+public class ScaleGestureDetectorCtsActivity extends Activity {
+
+    private ScaleGestureDetector mScaleGestureDetector;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mScaleGestureDetector = new ScaleGestureDetector(this, new SimpleOnScaleGestureListener(),
+                new Handler());
+    }
+
+    public ScaleGestureDetector getScaleGestureDetector() {
+        return mScaleGestureDetector;
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/view/src/android/view/cts/ScaleGestureDetectorTest.java b/tests/tests/view/src/android/view/cts/ScaleGestureDetectorTest.java
new file mode 100644
index 0000000..b8ba200
--- /dev/null
+++ b/tests/tests/view/src/android/view/cts/ScaleGestureDetectorTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.view.cts;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.UiThreadTest;
+import android.view.ScaleGestureDetector;
+import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener;
+
+public class ScaleGestureDetectorTest extends
+        ActivityInstrumentationTestCase2<ScaleGestureDetectorCtsActivity> {
+
+    private ScaleGestureDetector mScaleGestureDetector;
+    private ScaleGestureDetectorCtsActivity mActivity;
+    private Context mContext;
+
+    public ScaleGestureDetectorTest() {
+        super("com.android.cts.view", ScaleGestureDetectorCtsActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mActivity = getActivity();
+        mScaleGestureDetector = mActivity.getScaleGestureDetector();
+        mContext = getInstrumentation().getTargetContext();
+    }
+
+    @UiThreadTest
+    public void testConstructor() {
+        new ScaleGestureDetector(
+                mContext, new SimpleOnScaleGestureListener(), new Handler(Looper.getMainLooper()));
+        new ScaleGestureDetector(mContext, new SimpleOnScaleGestureListener());
+    }
+
+    public void testAccessStylusScaleEnabled() {
+        assertTrue(mScaleGestureDetector.isStylusScaleEnabled());
+        mScaleGestureDetector.setStylusScaleEnabled(true);
+
+        mScaleGestureDetector.setStylusScaleEnabled(false);
+        assertFalse(mScaleGestureDetector.isStylusScaleEnabled());
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/view/src/android/view/cts/SearchEventActivity.java b/tests/tests/view/src/android/view/cts/SearchEventActivity.java
new file mode 100644
index 0000000..6cc8c85
--- /dev/null
+++ b/tests/tests/view/src/android/view/cts/SearchEventActivity.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.view.cts;
+
+import com.android.cts.view.R;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.SearchEvent;
+
+public class SearchEventActivity extends Activity {
+
+    private static SearchEvent mSearchEvent;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.windowstub_layout);
+    }
+
+    @Override
+    public boolean onSearchRequested() {
+        mSearchEvent = getSearchEvent();
+        return true;
+    }
+
+    public SearchEvent getTestSearchEvent() {
+        return mSearchEvent;
+    }
+
+    public void reset() {
+        mSearchEvent = null;
+    }
+}
diff --git a/tests/tests/view/src/android/view/cts/SearchEventTest.java b/tests/tests/view/src/android/view/cts/SearchEventTest.java
new file mode 100644
index 0000000..4df52a1
--- /dev/null
+++ b/tests/tests/view/src/android/view/cts/SearchEventTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.view.cts;
+
+import com.android.cts.view.R;
+
+import android.app.Instrumentation;
+import android.test.ActivityInstrumentationTestCase2;
+import android.view.InputDevice;
+import android.view.KeyEvent;
+import android.view.SearchEvent;
+
+public class SearchEventTest extends ActivityInstrumentationTestCase2<SearchEventActivity> {
+
+    private Instrumentation mInstrumentation;
+    private SearchEventActivity mActivity;
+
+    public SearchEventTest() {
+        super(SearchEventActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mInstrumentation = getInstrumentation();
+        mActivity = getActivity();
+    }
+
+    public void testTest() throws Exception {
+        mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_SEARCH);
+        SearchEvent se = mActivity.getTestSearchEvent();
+        assertNotNull(se);
+        InputDevice id = se.getInputDevice();
+        assertNotNull(id);
+        assertEquals(-1, id.getId());
+    }
+}
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index e95236d..2c5b30a 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -1340,6 +1340,7 @@
 
         assertTrue(view.performContextClick());
         assertTrue(listener.hasOnContextClick());
+        assertSame(view, listener.getLastViewContextClicked());
     }
 
     public void testSetOnContextClickListener() {
@@ -3987,6 +3988,7 @@
 
     private static final class OnContextClickListenerImpl implements OnContextClickListener {
         private boolean mHasContextClick = false;
+        private View mLastViewContextClicked;
 
         public boolean hasOnContextClick() {
             return mHasContextClick;
@@ -3994,12 +3996,18 @@
 
         public void reset() {
             mHasContextClick = false;
+            mLastViewContextClicked = null;
         }
 
         public boolean onContextClick(View v) {
             mHasContextClick = true;
+            mLastViewContextClicked = v;
             return true;
         }
+
+        public View getLastViewContextClicked() {
+            return mLastViewContextClicked;
+        }
     }
 
     private static final class OnFocusChangeListenerImpl implements OnFocusChangeListener {
diff --git a/tests/tests/voiceinteraction/common/src/android/voiceinteraction/common/Utils.java b/tests/tests/voiceinteraction/common/src/android/voiceinteraction/common/Utils.java
index 4ef0c03..ff3bcfd 100644
--- a/tests/tests/voiceinteraction/common/src/android/voiceinteraction/common/Utils.java
+++ b/tests/tests/voiceinteraction/common/src/android/voiceinteraction/common/Utils.java
@@ -34,6 +34,7 @@
         PICKOPTION_REQUEST_CANCEL_TEST,
         COMMANDREQUEST_TEST,
         COMMANDREQUEST_CANCEL_TEST,
+        SUPPORTS_COMMANDS_TEST,
     }
     public static final String TESTCASE_TYPE = "testcase_type";
     public static final String TESTINFO = "testinfo";
@@ -51,6 +52,7 @@
     public static final String ABORT_REQUEST_SUCCESS = "abort ok";
     public static final String PICKOPTION_REQUEST_SUCCESS = "pickoption ok";
     public static final String COMMANDREQUEST_SUCCESS = "commandrequest ok";
+    public static final String SUPPORTS_COMMANDS_SUCCESS = "supportsCommands ok";
 
     public static final String CONFIRMATION_REQUEST_CANCEL_SUCCESS = "confirm cancel ok";
     public static final String COMPLETION_REQUEST_CANCEL_SUCCESS = "completion canel ok";
diff --git a/tests/tests/voiceinteraction/service/src/android/voiceinteraction/service/MainInteractionSession.java b/tests/tests/voiceinteraction/service/src/android/voiceinteraction/service/MainInteractionSession.java
index a5068e0..eeb4047 100644
--- a/tests/tests/voiceinteraction/service/src/android/voiceinteraction/service/MainInteractionSession.java
+++ b/tests/tests/voiceinteraction/service/src/android/voiceinteraction/service/MainInteractionSession.java
@@ -84,7 +84,7 @@
         Log.i(TAG, "in onGetSupportedCommands");
         for (int idx = 0; idx < commands.length; idx++) {
             results[idx] = Utils.TEST_COMMAND.equals(commands[idx]);
-            Log.i(TAG, "command is " + commands[idx]);
+            Log.i(TAG, "command " + commands[idx] + ", support = " + results[idx]);
         }
         return results;
     }
diff --git a/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/VoiceInteractionTest.java b/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/VoiceInteractionTest.java
index 2badb27..0fa89e1 100644
--- a/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/VoiceInteractionTest.java
+++ b/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/VoiceInteractionTest.java
@@ -91,7 +91,7 @@
                 verifySingleTestcaseResult(t, singleResult);
             }
         }
-        assertEquals(2, numFails);
+        assertEquals(0, numFails);
         mTestActivity.finish();
     }
 
@@ -128,6 +128,9 @@
           case PICKOPTION_REQUEST_TEST:
               assertTrue(result.equals(Utils.PICKOPTION_REQUEST_SUCCESS));
               break;
+          case SUPPORTS_COMMANDS_TEST:
+              assertTrue(result.equals(Utils.SUPPORTS_COMMANDS_SUCCESS));
+              break;
           default:
               Log.wtf(TAG, "not expected");
               break;
diff --git a/tests/tests/voiceinteraction/testapp/src/android/voiceinteraction/testapp/TestApp.java b/tests/tests/voiceinteraction/testapp/src/android/voiceinteraction/testapp/TestApp.java
index 47ec2236..1ef6a5c 100644
--- a/tests/tests/voiceinteraction/testapp/src/android/voiceinteraction/testapp/TestApp.java
+++ b/tests/tests/voiceinteraction/testapp/src/android/voiceinteraction/testapp/TestApp.java
@@ -92,6 +92,19 @@
 
           case COMMANDREQUEST_TEST:
           case COMMANDREQUEST_CANCEL_TEST:
+              commandRequest();
+              break;
+
+          case SUPPORTS_COMMANDS_TEST:
+              String[] commands = {Utils.TEST_COMMAND};
+              boolean[] supported = mInteractor.supportsCommands(commands);
+              Log.i(TAG, "from supportsCommands: " + supported);
+              if (supported.length == 1 && supported[0]) {
+                addTestResult(Utils.SUPPORTS_COMMANDS_SUCCESS);
+              } else {
+                addTestResult(Utils.TEST_ERROR + " supported commands failure!");
+              }
+              saveTestResults();
               continueTests();
               break;
         }
@@ -234,10 +247,6 @@
     }
 
     private void commandRequest() {
-        // uncomment these lines once CommandRequest is working. b/22124996
-//        Log.i(TAG, "from supportsCommands: " + mInteractor.supportsCommands(commands));
-//        String[] commands = {Utils.TEST_COMMAND};
-
         CommandRequest req = new VoiceInteractor.CommandRequest(Utils.TEST_COMMAND, mTestinfo) {
             @Override
             public void onCancel() {
diff --git a/tests/tests/voicesettings/Android.mk b/tests/tests/voicesettings/Android.mk
new file mode 100644
index 0000000..71fead6
--- /dev/null
+++ b/tests/tests/voicesettings/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := CtsVoiceSettingsCommon ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsVoiceSettingsTestCases
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/voicesettings/AndroidManifest.xml b/tests/tests/voicesettings/AndroidManifest.xml
new file mode 100644
index 0000000..bf938f9
--- /dev/null
+++ b/tests/tests/voicesettings/AndroidManifest.xml
@@ -0,0 +1,45 @@
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.voicesettings.cts">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.BIND_VOICE_INTERACTION" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+
+        <activity android:name="TestStartActivity"
+                  android:label="The Target Activity for VoiceSettings CTS Test">
+            <intent-filter>
+                <action android:name="android.intent.action.TEST_START_ACTIVITY_ZEN_MODE" />
+                <action android:name="android.intent.action.TEST_START_ACTIVITY_AIRPLANE_MODE" />
+                <action android:name="android.intent.action.TEST_START_ACTIVITY_BATTERYSAVER_MODE" />
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.voicesettings.cts"
+                     android:label="CTS tests of android.voicesettings">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+</manifest>
+
diff --git a/tests/tests/voicesettings/AndroidTest.xml b/tests/tests/voicesettings/AndroidTest.xml
new file mode 100644
index 0000000..0a3974d
--- /dev/null
+++ b/tests/tests/voicesettings/AndroidTest.xml
@@ -0,0 +1,23 @@
+<!-- Copyright (C) 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.
+-->
+<configuration description="Test module config for VoiceInteraction">
+    <include name="common-config" />
+    <option name="cts-apk-installer:test-file-name" value="CtsVoiceSettingsService.apk" />
+    <option name="run-command:run-command"
+         value="settings put secure voice_interaction_service android.voicesettings.service/.MainInteractionService" />
+    <option name="run-command:teardown-command"
+         value="settings put secure voice_interaction_service com.google.android.googlequicksearchbox/com.google.android.voiceinteraction.GsaVoiceInteractionService" />
+    <option name="cts-apk-installer:test-file-name" value="CtsVoiceSettingsTestCases.apk" />
+</configuration>
diff --git a/tests/tests/voicesettings/common/Android.mk b/tests/tests/voicesettings/common/Android.mk
new file mode 100644
index 0000000..1478ef2
--- /dev/null
+++ b/tests/tests/voicesettings/common/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE := CtsVoiceSettingsCommon
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/voicesettings/common/src/android/voicesettings/common/Utils.java b/tests/tests/voicesettings/common/src/android/voicesettings/common/Utils.java
new file mode 100644
index 0000000..44514b0
--- /dev/null
+++ b/tests/tests/voicesettings/common/src/android/voicesettings/common/Utils.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 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.
+ */
+package common.src.android.voicesettings.common;
+
+import android.os.Bundle;
+
+public class Utils {
+    public enum TestcaseType {
+        ZEN_MODE_ON,
+        ZEN_MODE_OFF,
+        AIRPLANE_MODE_ON,
+        AIRPLANE_MODE_OFF,
+        BATTERYSAVER_MODE_ON,
+        BATTERYSAVER_MODE_OFF,
+    }
+    public static final String TESTCASE_TYPE = "Testcase_type";
+    public static final String BROADCAST_INTENT =
+            "android.intent.action.FROM_VOICESETTINGS_CTS_TEST_";
+    public static final int NUM_MINUTES_FOR_ZENMODE = 10;
+
+    public static final String toBundleString(Bundle bundle) {
+        if (bundle == null) {
+            return "*** Bundle is null ****";
+        }
+        StringBuilder buf = new StringBuilder();
+        if (bundle != null) {
+            buf.append("extras: ");
+            for (String s : bundle.keySet()) {
+                buf.append("(" + s + " = " + bundle.get(s) + "), ");
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/tests/tests/voicesettings/res/xml/interaction_service.xml b/tests/tests/voicesettings/res/xml/interaction_service.xml
new file mode 100644
index 0000000..bf40892
--- /dev/null
+++ b/tests/tests/voicesettings/res/xml/interaction_service.xml
@@ -0,0 +1,20 @@
+<!-- Copyright (C) 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.
+-->
+
+<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:sessionService="android.voicesettings.service.MainInteractionSessionService"
+    android:recognitionService="android.voicesettings.service.MainRecognitionService"
+    android:settingsActivity="android.voicesettings.service.SettingsActivity"
+    android:supportsAssist="false" />
diff --git a/tests/tests/voicesettings/service/Android.mk b/tests/tests/voicesettings/service/Android.mk
new file mode 100644
index 0000000..97866d5
--- /dev/null
+++ b/tests/tests/voicesettings/service/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := CtsVoiceSettingsCommon ctstestrunner ctsdeviceutil
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsVoiceSettingsService
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/voicesettings/service/AndroidManifest.xml b/tests/tests/voicesettings/service/AndroidManifest.xml
new file mode 100644
index 0000000..13671b6
--- /dev/null
+++ b/tests/tests/voicesettings/service/AndroidManifest.xml
@@ -0,0 +1,65 @@
+<!--
+ * Copyright (C) 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.voicesettings.service">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <service android:name=".MainInteractionService"
+                android:label="CTS test voice interaction service"
+                android:permission="android.permission.BIND_VOICE_INTERACTION"
+                android:process=":interactor"
+                android:exported="true">
+            <meta-data android:name="android.voice_interaction"
+                       android:resource="@xml/interaction_service" />
+            <intent-filter>
+                <action android:name="android.service.voice.VoiceInteractionService" />
+            </intent-filter>
+        </service>
+        <activity android:name=".VoiceInteractionMain" >
+            <intent-filter>
+                <action android:name="android.intent.action.VIMAIN_ZEN_MODE_ON" />
+                <action android:name="android.intent.action.VIMAIN_ZEN_MODE_OFF" />
+                <action android:name="android.intent.action.VIMAIN_AIRPLANE_MODE_ON" />
+                <action android:name="android.intent.action.VIMAIN_AIRPLANE_MODE_OFF" />
+                <action android:name="android.intent.action.VIMAIN_BATTERYSAVER_MODE_ON" />
+                <action android:name="android.intent.action.VIMAIN_BATTERYSAVER_MODE_OFF" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity android:name=".SettingsActivity"
+                  android:label="Voice Interaction Settings">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <service android:name=".MainInteractionSessionService"
+                android:permission="android.permission.BIND_VOICE_INTERACTION"
+                android:process=":session">
+        </service>
+        <service android:name=".MainRecognitionService"
+                android:label="CTS Voice Recognition Service">
+            <intent-filter>
+                <action android:name="android.speech.RecognitionService" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="android.speech" android:resource="@xml/recognition_service" />
+        </service>
+    </application>
+</manifest>
+
diff --git a/tests/tests/voicesettings/service/res/xml/interaction_service.xml b/tests/tests/voicesettings/service/res/xml/interaction_service.xml
new file mode 100644
index 0000000..bf40892
--- /dev/null
+++ b/tests/tests/voicesettings/service/res/xml/interaction_service.xml
@@ -0,0 +1,20 @@
+<!-- Copyright (C) 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.
+-->
+
+<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:sessionService="android.voicesettings.service.MainInteractionSessionService"
+    android:recognitionService="android.voicesettings.service.MainRecognitionService"
+    android:settingsActivity="android.voicesettings.service.SettingsActivity"
+    android:supportsAssist="false" />
diff --git a/tests/tests/voicesettings/service/res/xml/recognition_service.xml b/tests/tests/voicesettings/service/res/xml/recognition_service.xml
new file mode 100644
index 0000000..9d80f24
--- /dev/null
+++ b/tests/tests/voicesettings/service/res/xml/recognition_service.xml
@@ -0,0 +1,17 @@
+<!-- Copyright (C) 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.
+-->
+
+<recognition-service xmlns:android="http://schemas.android.com/apk/res/android"
+    android:settingsActivity="android.voicesettings.service.SettingsActivity" />
diff --git a/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionService.java b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionService.java
new file mode 100644
index 0000000..6302b78
--- /dev/null
+++ b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionService.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.service;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionService;
+import android.util.Log;
+import common.src.android.voicesettings.common.Utils;
+
+public class MainInteractionService extends VoiceInteractionService {
+    static final String TAG = "MainInteractionService";
+    private Intent mIntent;
+    private boolean mReady = false;
+
+    @Override
+    public void onReady() {
+        super.onReady();
+        mReady = true;
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        Log.i(TAG, "onStartCommand received");
+        mIntent = intent;
+        Log.i(TAG, "received_testcasetype = " + mIntent.getStringExtra(Utils.TESTCASE_TYPE));
+        maybeStart();
+        return START_NOT_STICKY;
+    }
+
+    private void maybeStart() {
+       if (mIntent == null || !mReady) {
+            Log.wtf(TAG, "Can't start session because either intent is null or onReady() "
+                    + "is not called yet. mIntent = " + mIntent + ", mReady = " + mReady);
+        } else {
+            Log.i(TAG, "Yay! about to start MainInteractionSession");
+            if (isActiveService(this, new ComponentName(this, getClass()))) {
+                Bundle args = new Bundle();
+                args.putString(Utils.TESTCASE_TYPE, mIntent.getStringExtra(Utils.TESTCASE_TYPE));
+                Log.i(TAG, "xferring_testcasetype = " + args.getString(Utils.TESTCASE_TYPE));
+                showSession(args, 0);
+            } else {
+                Log.wtf(TAG, "**** Not starting MainInteractionService because" +
+                    " it is not set as the current voice interaction service");
+            }
+        }
+    }
+}
diff --git a/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionSession.java b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionSession.java
new file mode 100644
index 0000000..c2b7e18
--- /dev/null
+++ b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionSession.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.service;
+
+import static android.provider.Settings.ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE;
+import static android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_ENABLED;
+import static android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_MINUTES;
+import static android.provider.Settings.ACTION_VOICE_CONTROL_AIRPLANE_MODE;
+import static android.provider.Settings.EXTRA_AIRPLANE_MODE_ENABLED;
+import static android.provider.Settings.ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE;
+import static android.provider.Settings.EXTRA_BATTERY_SAVER_MODE_ENABLED;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionSession;
+import android.util.Log;
+
+import common.src.android.voicesettings.common.Utils;
+import common.src.android.voicesettings.common.Utils.TestcaseType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainInteractionSession extends VoiceInteractionSession {
+    static final String TAG = "MainInteractionSession";
+
+    List<MyTask> mUsedTasks = new ArrayList<MyTask>();
+    Context mContext;
+    TestcaseType mTestType;
+
+    MainInteractionSession(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+    }
+
+    @Override
+    public void onDestroy() {
+        Log.i(TAG, "Canceling the Asynctasks in onDestroy()");
+        for (MyTask t : mUsedTasks) {
+            t.cancel(true);
+        }
+        super.onDestroy();
+    }
+
+    @Override
+    public void onShow(Bundle args, int showFlags) {
+        super.onShow(args, showFlags);
+        String testCaseType = args.getString(Utils.TESTCASE_TYPE);
+        Log.i(TAG, "received_testcasetype = " + testCaseType);
+        try {
+            mTestType = TestcaseType.valueOf(testCaseType);
+        } catch (IllegalArgumentException e) {
+            Log.wtf(TAG, e);
+            return;
+        } catch (NullPointerException e) {
+            Log.wtf(TAG, e);
+            return;
+        }
+        Intent intent;
+        switch(mTestType) {
+            case ZEN_MODE_ON:
+                intent = new Intent(ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE);
+                intent.putExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED, true);
+                intent.putExtra(EXTRA_DO_NOT_DISTURB_MODE_MINUTES, Utils.NUM_MINUTES_FOR_ZENMODE);
+                break;
+            case ZEN_MODE_OFF:
+                intent = new Intent(ACTION_VOICE_CONTROL_DO_NOT_DISTURB_MODE);
+                intent.putExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED, false);
+                break;
+            case AIRPLANE_MODE_ON:
+                intent = new Intent(ACTION_VOICE_CONTROL_AIRPLANE_MODE);
+                intent.putExtra(EXTRA_AIRPLANE_MODE_ENABLED, true);
+                break;
+            case AIRPLANE_MODE_OFF:
+                intent = new Intent(ACTION_VOICE_CONTROL_AIRPLANE_MODE);
+                intent.putExtra(EXTRA_AIRPLANE_MODE_ENABLED, false);
+                break;
+            case BATTERYSAVER_MODE_ON:
+                intent = new Intent(ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE);
+                intent.putExtra(EXTRA_BATTERY_SAVER_MODE_ENABLED, true);
+                break;
+            case BATTERYSAVER_MODE_OFF:
+                intent = new Intent(ACTION_VOICE_CONTROL_BATTERY_SAVER_MODE);
+                intent.putExtra(EXTRA_BATTERY_SAVER_MODE_ENABLED, false);
+                break;
+            default:
+                Log.i(TAG, "Not implemented!");
+                return;
+        }
+        Log.i(TAG, "starting_voiceactivity: " + intent.toString());
+        startVoiceActivity(intent);
+    }
+
+    @Override
+    public void onTaskFinished(Intent intent, int taskId) {
+        // extras contain the info on what the activity started above did.
+        // we probably could verify this also.
+        Bundle extras = intent.getExtras();
+        Log.i(TAG, "in onTaskFinished: testcasetype = " + mTestType + ", intent: " +
+                intent.toString() + Utils.toBundleString(extras));
+        Intent broadcastIntent = new Intent(Utils.BROADCAST_INTENT + mTestType.toString());
+        if (extras == null) {
+            extras = new Bundle();
+        }
+        extras.putString(Utils.TESTCASE_TYPE, mTestType.toString());
+        broadcastIntent.putExtras(extras);
+        Log.i(TAG, "sending_broadcast: Bundle = " + Utils.toBundleString(extras) +
+                ", intent = " + broadcastIntent.toString());
+        mContext.sendBroadcast(broadcastIntent);
+    }
+
+    synchronized MyTask newTask() {
+        MyTask t = new MyTask();
+        mUsedTasks.add(t);
+        return t;
+    }
+
+    @Override
+    public void onRequestCompleteVoice(CompleteVoiceRequest request) {
+        CharSequence prompt = request.getVoicePrompt().getVoicePromptAt(0);
+        Log.i(TAG, "in Session testcasetype = " + mTestType +
+                ", onRequestCompleteVoice recvd. message = " + prompt);
+        AsyncTaskArg asyncTaskArg = new AsyncTaskArg().setRequest(request).setCompleteReq(true);
+        newTask().execute(asyncTaskArg);
+    }
+
+    @Override
+    public void onRequestAbortVoice(AbortVoiceRequest request) {
+        AsyncTaskArg asyncTaskArg = new AsyncTaskArg().setRequest(request).setCompleteReq(false);
+        Log.i(TAG, "in Session sending sendAbortResult. ");
+        newTask().execute(asyncTaskArg);
+    }
+
+    private class AsyncTaskArg {
+        CompleteVoiceRequest mCompReq;
+        AbortVoiceRequest mAbortReq;
+        boolean isCompleteRequest = true;
+
+        AsyncTaskArg setRequest(CompleteVoiceRequest r) {
+            mCompReq = r;
+            return this;
+        }
+
+        AsyncTaskArg setRequest(AbortVoiceRequest r) {
+            mAbortReq = r;
+            return this;
+        }
+
+        AsyncTaskArg setCompleteReq(boolean flag) {
+            isCompleteRequest = flag;
+            return this;
+        }
+    }
+
+    private class MyTask extends AsyncTask<AsyncTaskArg, Void, Void> {
+        @Override
+        protected Void doInBackground(AsyncTaskArg... params) {
+            AsyncTaskArg arg = params[0];
+            Log.i(TAG, "in MyTask - doInBackground: testType = " +
+                    MainInteractionSession.this.mTestType);
+            if (arg.isCompleteRequest) {
+                arg.mCompReq.sendCompleteResult(new Bundle());
+            } else {
+                arg.mAbortReq.sendAbortResult(new Bundle());
+            }
+            return null;
+        }
+    }
+}
diff --git a/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionSessionService.java b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionSessionService.java
new file mode 100644
index 0000000..2b302b8
--- /dev/null
+++ b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainInteractionSessionService.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.service;
+
+import android.os.Bundle;
+import android.service.voice.VoiceInteractionSession;
+import android.service.voice.VoiceInteractionSessionService;
+
+public class MainInteractionSessionService extends VoiceInteractionSessionService {
+    @Override
+    public VoiceInteractionSession onNewSession(Bundle args) {
+        return new MainInteractionSession(this);
+    }
+}
diff --git a/tests/tests/voicesettings/service/src/android/voicesettings/service/MainRecognitionService.java b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainRecognitionService.java
new file mode 100644
index 0000000..9b0e95d
--- /dev/null
+++ b/tests/tests/voicesettings/service/src/android/voicesettings/service/MainRecognitionService.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.service;
+
+import android.content.Intent;
+import android.speech.RecognitionService;
+import android.util.Log;
+
+/**
+ * Stub recognition service needed to be a complete voice interactor.
+ */
+public class MainRecognitionService extends RecognitionService {
+    private static final String TAG = "MainRecognitionService";
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        Log.i(TAG, "onCreate");
+    }
+
+    @Override
+    protected void onStartListening(Intent recognizerIntent, Callback listener) {
+        Log.i(TAG, "onStartListening");
+    }
+
+    @Override
+    protected void onCancel(Callback listener) {
+        Log.i(TAG, "onCancel");
+    }
+
+    @Override
+    protected void onStopListening(Callback listener) {
+        Log.i(TAG, "onStopListening");
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        Log.i(TAG, "onDestroy");
+    }
+}
diff --git a/tests/tests/voicesettings/service/src/android/voicesettings/service/SettingsActivity.java b/tests/tests/voicesettings/service/src/android/voicesettings/service/SettingsActivity.java
new file mode 100644
index 0000000..140bca4
--- /dev/null
+++ b/tests/tests/voicesettings/service/src/android/voicesettings/service/SettingsActivity.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.service;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+/**
+ * Stub activity to test out settings selection for voice interactor.
+ */
+public class SettingsActivity extends Activity {
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+}
diff --git a/tests/tests/voicesettings/service/src/android/voicesettings/service/VoiceInteractionMain.java b/tests/tests/voicesettings/service/src/android/voicesettings/service/VoiceInteractionMain.java
new file mode 100644
index 0000000..adc2980
--- /dev/null
+++ b/tests/tests/voicesettings/service/src/android/voicesettings/service/VoiceInteractionMain.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.service;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.ComponentName;
+import android.os.Bundle;
+import android.util.Log;
+
+import common.src.android.voicesettings.common.Utils;
+
+public class VoiceInteractionMain extends Activity {
+    static final String TAG = "VoiceInteractionMain";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Intent intent = new Intent();
+        String testCaseType = getIntent().getStringExtra(Utils.TESTCASE_TYPE);
+        Log.i(TAG, "received_testcasetype = " + testCaseType);
+        intent.putExtra(Utils.TESTCASE_TYPE, testCaseType);
+        intent.setComponent(new ComponentName(this, MainInteractionService.class));
+        ComponentName serviceName = startService(intent);
+        Log.i(TAG, "Started service: " + serviceName);
+    }
+}
diff --git a/tests/tests/voicesettings/src/android/voicesettings/cts/AirplaneModeTest.java b/tests/tests/voicesettings/src/android/voicesettings/cts/AirplaneModeTest.java
new file mode 100644
index 0000000..8abe396
--- /dev/null
+++ b/tests/tests/voicesettings/src/android/voicesettings/cts/AirplaneModeTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.cts;
+
+import android.provider.Settings;
+import android.provider.Settings.Global;
+import android.util.Log;
+
+import common.src.android.voicesettings.common.Utils;
+
+public class AirplaneModeTest extends VoiceSettingsTestBase {
+    static final String TAG = "AirplaneModeTest";
+
+    private static final int AIRPLANE_MODE_IS_OFF = 0;
+    private static final int AIRPLANE_MODE_IS_ON = 1;
+
+    public AirplaneModeTest() {
+        super();
+    }
+
+    public void testAll() throws Exception {
+        startTestActivity("AIRPLANE_MODE");
+        int mode = getMode();
+        Log.i(TAG, "Before testing, AIRPLANE_MODE is set to: " + mode);
+        if (mode == AIRPLANE_MODE_IS_OFF) {
+            // mode is currently OFF.
+            // run a test to turn it on.
+            // After successful run of the test, run a test to turn it back off.
+            if (!runTest(Utils.TestcaseType.AIRPLANE_MODE_ON, AIRPLANE_MODE_IS_ON)) {
+                // the test failed. don't test the next one.
+                return;
+            }
+            runTest(Utils.TestcaseType.AIRPLANE_MODE_OFF, AIRPLANE_MODE_IS_OFF);
+        } else {
+            // mode is currently ON.
+            // run a test to turn it off.
+            // After successful run of the test, run a test to turn it back on.
+            if (!runTest(Utils.TestcaseType.AIRPLANE_MODE_OFF, AIRPLANE_MODE_IS_OFF)) {
+                // the test failed. don't test the next one.
+                return;
+            }
+            runTest(Utils.TestcaseType.AIRPLANE_MODE_ON, AIRPLANE_MODE_IS_ON);
+        }
+    }
+
+    private boolean runTest(Utils.TestcaseType test, int expectedMode) throws Exception {
+        if (!startTestAndWaitForBroadcast(test)) {
+            return false;
+        }
+
+        // verify the test results
+        int mode = getMode();
+        Log.i(TAG, "After testing, AIRPLANE_MODE is set to: " + mode);
+        assertEquals(expectedMode, mode);
+        Log.i(TAG, "Successfully Tested: " + test);
+        return true;
+    }
+
+    private int getMode() throws Exception {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+            Settings.Global.AIRPLANE_MODE_ON);
+    }
+}
diff --git a/tests/tests/voicesettings/src/android/voicesettings/cts/BatterySaverModeTest.java b/tests/tests/voicesettings/src/android/voicesettings/cts/BatterySaverModeTest.java
new file mode 100644
index 0000000..3d1357a
--- /dev/null
+++ b/tests/tests/voicesettings/src/android/voicesettings/cts/BatterySaverModeTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.cts;
+
+import android.content.Context;
+import android.os.PowerManager;
+import android.util.Log;
+
+import common.src.android.voicesettings.common.Utils;
+
+public class BatterySaverModeTest extends VoiceSettingsTestBase {
+    static final String TAG = "BatterySaverModeTest";
+
+    public BatterySaverModeTest() {
+        super();
+    }
+
+    public void testAll() throws Exception {
+        startTestActivity("BATTERYSAVER_MODE");
+        boolean modeIsOn = isModeOn();
+        Log.i(TAG, "Before testing, BATTERYSAVER_MODE is set to: " + modeIsOn);
+        if (modeIsOn) {
+            // mode is currently ON.
+            // run a test to turn it off.
+            // After successful run of the test, run a test to turn it back on.
+            if (!runTest(Utils.TestcaseType.BATTERYSAVER_MODE_OFF, false)) {
+                // the test failed. don't test the next one.
+                return;
+            }
+            runTest(Utils.TestcaseType.BATTERYSAVER_MODE_ON, true);
+        } else {
+            // mode is currently OFF.
+            // run a test to turn it on.
+            // After successful run of the test, run a test to turn it back off.
+            if (!runTest(Utils.TestcaseType.BATTERYSAVER_MODE_ON, true)) {
+                // the test failed. don't test the next one.
+                return;
+            }
+            runTest(Utils.TestcaseType.BATTERYSAVER_MODE_OFF, false);
+        }
+    }
+
+    private boolean runTest(Utils.TestcaseType test, boolean expectedMode) throws Exception {
+        if (!startTestAndWaitForBroadcast(test)) {
+            return false;
+        }
+
+        // Verify the test results
+        // Since CTS test needs the device to be connected to the host computer via USB,
+        // Batter Saver mode can't be turned on/off.
+        // The most we can do is that the broadcast frmo MainInteractionSession is received
+        // because that signals the firing and completion of BatterySaverModeVoiceActivity
+        // caused by the intent to set Battery Saver mode.
+        return true;
+    }
+
+    private boolean isModeOn() {
+        PowerManager powerManager = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
+        return powerManager.isPowerSaveMode();
+    }
+}
diff --git a/tests/tests/voicesettings/src/android/voicesettings/cts/TestStartActivity.java b/tests/tests/voicesettings/src/android/voicesettings/cts/TestStartActivity.java
new file mode 100644
index 0000000..cef29b1
--- /dev/null
+++ b/tests/tests/voicesettings/src/android/voicesettings/cts/TestStartActivity.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.cts;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.ComponentName;
+import android.os.Bundle;
+import android.util.Log;
+
+import common.src.android.voicesettings.common.Utils;
+
+public class TestStartActivity extends Activity {
+    static final String TAG = "TestStartActivity";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.i(TAG, " in onCreate");
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        Log.i(TAG, " in onResume");
+    }
+
+    void startTest(String testCaseType) {
+        Intent intent = new Intent();
+        Log.i(TAG, "received_testcasetype = " + testCaseType);
+        intent.putExtra(Utils.TESTCASE_TYPE, testCaseType);
+        intent.setAction("android.intent.action.VIMAIN_" + testCaseType);
+        intent.setComponent(new ComponentName("android.voicesettings.service",
+                "android.voicesettings.service.VoiceInteractionMain"));
+        startActivity(intent);
+    }
+
+    @Override
+    protected void onPause() {
+        Log.i(TAG, " in onPause");
+        super.onPause();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        Log.i(TAG, " in onStart");
+    }
+
+    @Override
+    protected void onRestart() {
+        super.onRestart();
+        Log.i(TAG, " in onRestart");
+    }
+
+    @Override
+    protected void onStop() {
+        Log.i(TAG, " in onStop");
+        super.onStop();
+    }
+
+    @Override
+    protected void onDestroy() {
+        Log.i(TAG, " in onDestroy");
+        super.onDestroy();
+    }
+}
diff --git a/tests/tests/voicesettings/src/android/voicesettings/cts/VoiceSettingsTestBase.java b/tests/tests/voicesettings/src/android/voicesettings/cts/VoiceSettingsTestBase.java
new file mode 100644
index 0000000..5386497
--- /dev/null
+++ b/tests/tests/voicesettings/src/android/voicesettings/cts/VoiceSettingsTestBase.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.cts;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
+
+import common.src.android.voicesettings.common.Utils;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class VoiceSettingsTestBase extends ActivityInstrumentationTestCase2<TestStartActivity> {
+    static final String TAG = "VoiceSettingsTestBase";
+    protected static final int TIMEOUT_MS = 20 * 1000;
+
+    protected Context mContext;
+    protected Bundle mResultExtras;
+    private CountDownLatch mLatch;
+    private ActivityDoneReceiver mActivityDoneReceiver = null;
+    private TestStartActivity mActivity;
+    private Utils.TestcaseType mTestCaseType;
+
+    public VoiceSettingsTestBase() {
+        super(TestStartActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getTargetContext();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mContext.unregisterReceiver(mActivityDoneReceiver);
+        super.tearDown();
+    }
+
+    protected void startTestActivity(String intentSuffix) {
+        Intent intent = new Intent();
+        intent.setAction("android.intent.action.TEST_START_ACTIVITY_" + intentSuffix);
+        intent.setComponent(new ComponentName(getInstrumentation().getContext(),
+                TestStartActivity.class));
+        setActivityIntent(intent);
+        mActivity = getActivity();
+    }
+
+    protected void registerBroadcastReceiver(Utils.TestcaseType testCaseType) throws Exception {
+        mTestCaseType = testCaseType;
+        mLatch = new CountDownLatch(1);
+        if (mActivityDoneReceiver != null) {
+            mContext.unregisterReceiver(mActivityDoneReceiver);
+        }
+        mActivityDoneReceiver = new ActivityDoneReceiver();
+        mContext.registerReceiver(mActivityDoneReceiver,
+                new IntentFilter(Utils.BROADCAST_INTENT + testCaseType.toString()));
+    }
+
+    protected boolean startTestAndWaitForBroadcast(Utils.TestcaseType testCaseType)
+            throws Exception {
+        Log.i(TAG, "Begin Testing: " + testCaseType);
+        registerBroadcastReceiver(testCaseType);
+        mActivity.startTest(testCaseType.toString());
+        if (!mLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+            fail("Failed to receive broadcast in " + TIMEOUT_MS + "msec");
+            return false;
+        }
+        return true;
+    }
+
+    class ActivityDoneReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent.getAction().equals(
+                    Utils.BROADCAST_INTENT +
+                        VoiceSettingsTestBase.this.mTestCaseType.toString())) {
+                Bundle extras = intent.getExtras();
+                Log.i(TAG, "received_broadcast for " + Utils.toBundleString(extras));
+                VoiceSettingsTestBase.this.mResultExtras = extras;
+                mLatch.countDown();
+            }
+        }
+    }
+}
diff --git a/tests/tests/voicesettings/src/android/voicesettings/cts/ZenModeTest.java b/tests/tests/voicesettings/src/android/voicesettings/cts/ZenModeTest.java
new file mode 100644
index 0000000..8c2efbe
--- /dev/null
+++ b/tests/tests/voicesettings/src/android/voicesettings/cts/ZenModeTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package android.voicesettings.cts;
+
+import static android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_ENABLED;
+import static android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_MINUTES;
+
+import android.provider.Settings;
+import android.provider.Settings.Global;
+import android.util.Log;
+
+import common.src.android.voicesettings.common.Utils;
+
+public class ZenModeTest extends VoiceSettingsTestBase {
+    static final String TAG = "ZenModeTest";
+
+    // The following are hidden in frameworks/base/core/java/android/provider/Settings.java
+    // If they weren't, we could have used them directly here.
+    private static final String ZEN_MODE = "zen_mode";
+    private static final int ZEN_MODE_IS_OFF = 0;
+    private static final int ZEN_MODE_IS_ALARMS = 3;
+
+    public ZenModeTest() {
+        super();
+    }
+
+    public void testAll() throws Exception {
+        startTestActivity("ZEN_MODE");
+        int mode = getMode();
+        Log.i(TAG, "Before testing, zen-mode is set to: " + mode);
+        if (mode == ZEN_MODE_IS_OFF) {
+            // mode is currently OFF.
+            // run a test to turn it on.
+            // After successful run of the test, run a test to turn it back off.
+            if (!runTest(Utils.TestcaseType.ZEN_MODE_ON, ZEN_MODE_IS_ALARMS)) {
+                // the test failed. don't test the next one.
+                return;
+            }
+            runTest(Utils.TestcaseType.ZEN_MODE_OFF, ZEN_MODE_IS_OFF);
+        } else {
+            // mode is currently ON.
+            // run a test to turn it off.
+            // After successful run of the test, run a test to turn it back on.
+            if (!runTest(Utils.TestcaseType.ZEN_MODE_OFF, ZEN_MODE_IS_OFF)) {
+                // the test failed. don't test the next one.
+                return;
+            }
+            runTest(Utils.TestcaseType.ZEN_MODE_ON, ZEN_MODE_IS_ALARMS);
+        }
+    }
+
+    private boolean runTest(Utils.TestcaseType test, int expectedMode) throws Exception {
+        if (!startTestAndWaitForBroadcast(test)) {
+            return false;
+        }
+
+        // verify the test results
+        int mode = getMode();
+        Log.i(TAG, "After testing, zen-mode is set to: " + mode);
+        assertEquals(expectedMode, mode);
+        Log.i(TAG, "results_received: " + Utils.toBundleString(mResultExtras));
+        assertNotNull(mResultExtras);
+        if (expectedMode == ZEN_MODE_IS_ALARMS) {
+            assertTrue(mResultExtras.getBoolean(EXTRA_DO_NOT_DISTURB_MODE_ENABLED));
+            assertEquals(Utils.NUM_MINUTES_FOR_ZENMODE,
+                    mResultExtras.getInt(EXTRA_DO_NOT_DISTURB_MODE_MINUTES));
+        } else {
+            assertFalse(mResultExtras.getBoolean(EXTRA_DO_NOT_DISTURB_MODE_ENABLED));
+        }
+        Log.i(TAG, "Successfully Tested: " + test);
+        return true;
+    }
+
+    private int getMode() throws Exception {
+        return Settings.Global.getInt(mContext.getContentResolver(), ZEN_MODE);
+    }
+}
diff --git a/tests/tests/webkit/AndroidManifest.xml b/tests/tests/webkit/AndroidManifest.xml
index 098acd9..fa25824 100644
--- a/tests/tests/webkit/AndroidManifest.xml
+++ b/tests/tests/webkit/AndroidManifest.xml
@@ -20,7 +20,6 @@
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
-    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <application android:maxRecents="1">
diff --git a/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java b/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java
index ba0e0e9..32b6167 100644
--- a/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/GeolocationTest.java
@@ -17,6 +17,7 @@
 package android.webkit.cts;
 
 import android.content.Context;
+import android.cts.util.LocationUtils;
 import android.cts.util.NullWebViewUtils;
 import android.cts.util.PollingCheck;
 import android.graphics.Bitmap;
@@ -136,6 +137,7 @@
     protected void setUp() throws Exception {
         super.setUp();
 
+        LocationUtils.registerMockLocationProvider(getInstrumentation(), true);
         WebView webview = getActivity().getWebView();
 
         if (webview != null) {
@@ -185,6 +187,7 @@
                 } catch (IllegalArgumentException e) {} // Not much to do about this
             }
         }
+        LocationUtils.registerMockLocationProvider(getInstrumentation(), false);
 
         if (mOnUiThread != null) {
             mOnUiThread.cleanUp();
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
index a52eabe..592e308 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
@@ -95,7 +95,7 @@
      * brackets are optional):
      * <p/>
      * Mozilla/5.0 (Linux;[ U;] Android <version>;[ <language>-<country>;]
-     * [<devicemodel>;] Build/<buildID>) AppleWebKit/<major>.<minor> (KHTML, like Gecko)
+     * [<devicemodel>;] Build/<buildID>; wv) AppleWebKit/<major>.<minor> (KHTML, like Gecko)
      * Version/<major>.<minor> Chrome/<major>.<minor>.<branch>.<build>[ Mobile]
      * Safari/<major>.<minor>
      */
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewSslTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewSslTest.java
index dcdeead..6555731 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewSslTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewSslTest.java
@@ -37,6 +37,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.security.KeyFactory;
+import java.security.KeyStore;
 import java.security.PrivateKey;
 import java.security.Principal;
 import java.security.cert.CertificateFactory;
@@ -764,6 +765,36 @@
         assertEquals(callCount + 1, webViewClient.getClientCertRequestCount());
     }
 
+    public void testProceedClientCertRequestKeyWithAndroidKeystoreKey() throws Throwable {
+        if (!NullWebViewUtils.isWebViewAvailable()) {
+            return;
+        }
+        mWebServer = new CtsTestServer(getActivity(), CtsTestServer.SslMode.NEEDS_CLIENT_AUTH);
+        String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        final ClientCertWebViewClient webViewClient = new ClientCertWebViewClient(
+                mOnUiThread,
+                true // use an Android Keystore backed private key
+                );
+        mOnUiThread.setWebViewClient(webViewClient);
+        clearClientCertPreferences();
+        mOnUiThread.loadUrlAndWaitForCompletion(url);
+        assertTrue(TestHtmlConstants.HELLO_WORLD_TITLE.equals(mOnUiThread.getTitle()));
+
+        // Test that the user's response for this server is kept in cache. Load a different
+        // page from the same server and make sure we don't receive a client cert request callback.
+        int callCount = webViewClient.getClientCertRequestCount();
+        url = mWebServer.getAssetUrl(TestHtmlConstants.HTML_URL1);
+        mOnUiThread.loadUrlAndWaitForCompletion(url);
+        assertTrue(TestHtmlConstants.HTML_URL1_TITLE.equals(mOnUiThread.getTitle()));
+        assertEquals(callCount, webViewClient.getClientCertRequestCount());
+
+        // Now clear the cache and reload the page. We should receive a new callback.
+        clearClientCertPreferences();
+        mOnUiThread.loadUrlAndWaitForCompletion(url);
+        assertTrue(TestHtmlConstants.HTML_URL1_TITLE.equals(mOnUiThread.getTitle()));
+        assertEquals(callCount + 1, webViewClient.getClientCertRequestCount());
+    }
+
     public void testIgnoreClientCertRequest() throws Throwable {
         if (!NullWebViewUtils.isWebViewAvailable()) {
             return;
@@ -925,12 +956,20 @@
         public static final int CANCEL = 2;
         public static final int IGNORE = 3;
 
+        private final boolean mKeyFromAndroidKeystore;
+
         private int mClientCertRequests;
         private int mAction = PROCEED;
         private Principal[] mPrincipals;
 
         public ClientCertWebViewClient(WebViewOnUiThread onUiThread) {
+            this(onUiThread, false);
+        }
+
+        public ClientCertWebViewClient(WebViewOnUiThread onUiThread,
+                boolean keyFromAndroidKeystore) {
             super(onUiThread);
+            mKeyFromAndroidKeystore = keyFromAndroidKeystore;
         }
 
         public int getClientCertRequestCount() {
@@ -973,6 +1012,21 @@
                     KeyFactory keyFactory = KeyFactory.getInstance("RSA");
                     PrivateKey key = keyFactory.generatePrivate(
                         new PKCS8EncodedKeySpec(FAKE_RSA_KEY_1));
+
+                    if (mKeyFromAndroidKeystore) {
+                        // Key needs to be backed by Android Keystore -- import it there.
+                        KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+                        keyStore.load(null);
+                        Log.d(LOGTAG, "Importing private key into Android Keystore...");
+                        keyStore.setEntry(
+                                "fake1",
+                                new KeyStore.PrivateKeyEntry(key, certChain),
+                                null);
+
+                        key = (PrivateKey) keyStore.getKey("fake1", null);
+                        Log.i(LOGTAG, "Imported private key into Android Keystore. key: " + key);
+                    }
+
                     request.proceed(key, certChain);
                     return;
                 } catch (Exception e) {
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
index ee6f4ec..4c5b2db 100755
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
@@ -1439,14 +1439,10 @@
                 "Find all instances of a word on the page and highlight them.</p>";
 
         mOnUiThread.loadDataAndWaitForCompletion("<html><body>" + p + p + "</body></html>", "text/html", null);
-        WaitForFindResultsListener l = new WaitForFindResultsListener();
-        mOnUiThread.setFindListener(l);
 
         // highlight all the strings found
         mOnUiThread.findAll("all");
-        // make sure the findAll action is completed before findNext
-        l.get();
-        mOnUiThread.setFindListener(null);
+        getInstrumentation().waitForIdleSync();
 
         int previousScrollY = mOnUiThread.getScrollY();
 
diff --git a/tests/tests/widget/res/layout/relative_layout_baseline.xml b/tests/tests/widget/res/layout/relative_layout_baseline.xml
new file mode 100644
index 0000000..f4e9174
--- /dev/null
+++ b/tests/tests/widget/res/layout/relative_layout_baseline.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_margin="5dp" >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" >
+
+        <Button
+            android:id="@+id/button1"
+            android:layout_alignParentTop="true"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:text="@string/relative_view1"
+            android:layout_alignBottom="@+id/button2" />
+        <Button
+            android:id="@+id/button2"
+            android:layout_alignParentTop="true"
+            android:layout_toRightOf="@id/button1"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:text="@string/relative_view2" />
+        <Button
+            android:id="@+id/button3"
+            android:layout_alignTop="@+id/button4"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:layout_alignBaseline="@+id/button4"
+            android:text="@string/relative_view3" />
+        <Button
+            android:id="@+id/button4"
+            android:layout_below="@id/button2"
+            android:layout_toRightOf="@id/button3"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:text="@string/relative_view4" />
+
+        <TextView
+            android:id="@+id/textView"
+            android:layout_below="@+id/button3"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+    </RelativeLayout>
+
+</ScrollView>
\ No newline at end of file
diff --git a/tests/tests/widget/src/android/widget/cts/AbsListViewTest.java b/tests/tests/widget/src/android/widget/cts/AbsListViewTest.java
index 9d8c7d2..2b38827 100644
--- a/tests/tests/widget/src/android/widget/cts/AbsListViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AbsListViewTest.java
@@ -194,12 +194,53 @@
         assertSame(mListView, onScrollListener.getView());
         assertEquals(mListView.getChildCount(), onScrollListener.getVisibleItemCount());
         assertEquals(mCountryList.length, onScrollListener.getTotalItemCount());
-        assertEquals(OnScrollListener.SCROLL_STATE_IDLE, onScrollListener.getScrollState());
 
         assertTrue(onScrollListener.isOnScrollCalled());
         assertTrue(onScrollListener.isOnScrollStateChangedCalled());
     }
 
+    public void testFling() throws Throwable {
+        MockOnScrollListener onScrollListener = new MockOnScrollListener();
+        mListView.setOnScrollListener(onScrollListener);
+
+        setAdapter();
+
+        // Fling down from top, expect a scroll.
+        fling(10000, onScrollListener);
+        assertTrue(onScrollListener.isOnScrollCalled());
+        assertTrue(0 < onScrollListener.getFirstVisibleItem());
+
+        // Fling up the same amount, expect a scroll to the original position.
+        fling(-10000, onScrollListener);
+        assertTrue(onScrollListener.isOnScrollCalled());
+        assertEquals(0, onScrollListener.getFirstVisibleItem());
+
+        // Fling up again, expect no scroll, as the viewport is already at top.
+        fling(-10000, onScrollListener);
+        assertFalse(onScrollListener.isOnScrollCalled());
+        assertEquals(0, onScrollListener.getFirstVisibleItem());
+
+        // Fling up again with a huge velocity, expect no scroll.
+        fling(-50000, onScrollListener);
+        assertFalse(onScrollListener.isOnScrollCalled());
+        assertEquals(0, onScrollListener.getFirstVisibleItem());
+    }
+
+    private void fling(int velocityY, MockOnScrollListener onScrollListener) throws Throwable {
+        onScrollListener.reset();
+
+        final int v = velocityY;
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mListView.fling(v);
+            }
+        });
+
+        do {
+            mInstrumentation.waitForIdleSync();
+        } while (onScrollListener.getScrollState() != OnScrollListener.SCROLL_STATE_IDLE);
+    }
+
     public void testGetFocusedRect() throws Throwable {
         setAdapter(mAdapter_short);
         setListSelection(0);
diff --git a/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java b/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java
index 81a1a4b..6a2240e 100644
--- a/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/AdapterViewTest.java
@@ -37,6 +37,7 @@
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.AdapterView.OnItemLongClickListener;
 import android.widget.AdapterView.OnItemSelectedListener;
+import android.provider.Settings;
 
 import com.android.cts.widget.R;
 
@@ -211,8 +212,12 @@
         setArrayAdapter(mAdapterView);
 
         // LastVisiblePosition should be adapter's getCount - 1,by mocking method
+        float fontScale = Settings.System.getFloat(mActivity.getContentResolver(), Settings.System.FONT_SCALE, 1);
+        if (fontScale < 1) {
+            fontScale = 1;
+        }
         float density = mActivity.getResources().getDisplayMetrics().density;
-        int bottom = (int) (LAYOUT_HEIGHT * density);
+        int bottom = (int) (LAYOUT_HEIGHT * density * fontScale);
         mAdapterView.layout(0, 0, LAYOUT_WIDTH, bottom);
         assertEquals(FRUIT.length - 1, mAdapterView.getLastVisiblePosition());
     }
diff --git a/tests/tests/widget/src/android/widget/cts/CursorAdapterTest.java b/tests/tests/widget/src/android/widget/cts/CursorAdapterTest.java
index fc5eb08..730083e 100644
--- a/tests/tests/widget/src/android/widget/cts/CursorAdapterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/CursorAdapterTest.java
@@ -345,8 +345,8 @@
     }
 
     private final class MockCursorAdapter extends CursorAdapter {
-        private final Context mContext;
-        private final boolean mAutoRequery;
+        private Context mContext;
+        private boolean mAutoRequery;
 
         private boolean mContentChanged = false;
 
@@ -391,6 +391,9 @@
         @Override
         public void init(Context context, Cursor c, boolean autoRequery) {
             super.init(context, c, autoRequery);
+
+            mContext = context;
+            mAutoRequery = autoRequery;
         }
 
         @Override
diff --git a/tests/tests/widget/src/android/widget/cts/GalleryTest.java b/tests/tests/widget/src/android/widget/cts/GalleryTest.java
index a3ac16c..581107c 100644
--- a/tests/tests/widget/src/android/widget/cts/GalleryTest.java
+++ b/tests/tests/widget/src/android/widget/cts/GalleryTest.java
@@ -307,189 +307,6 @@
         assertEquals(index + 1, gallery.getChildDrawingOrder(childCount, index));
     }
 
-    @UiThreadTest
-    public void testGetContextMenuInfo() {
-        MockOnCreateContextMenuListener listener = new MockOnCreateContextMenuListener();
-        MyGallery gallery = new MyGallery(mContext);
-        gallery.setOnCreateContextMenuListener(listener);
-        assertFalse(listener.hasCreatedContextMenu());
-        gallery.createContextMenu(new MockContextMenu());
-        assertTrue(listener.hasCreatedContextMenu());
-        assertSame(gallery.getContextMenuInfo(), listener.getContextMenuInfo());
-    }
-
-    private static class MockContextMenu implements ContextMenu {
-        @Override
-        public ContextMenu setHeaderTitle(int titleRes) {
-            return null;
-        }
-
-        @Override
-        public ContextMenu setHeaderTitle(CharSequence title) {
-            return null;
-        }
-
-        @Override
-        public ContextMenu setHeaderIcon(int iconRes) {
-            return null;
-        }
-
-        @Override
-        public ContextMenu setHeaderIcon(Drawable icon) {
-            return null;
-        }
-
-        @Override
-        public ContextMenu setHeaderView(View view) {
-            return null;
-        }
-
-        @Override
-        public void clearHeader() {
-
-        }
-
-        @Override
-        public MenuItem add(CharSequence title) {
-            return null;
-        }
-
-        @Override
-        public MenuItem add(int titleRes) {
-            return null;
-        }
-
-        @Override
-        public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
-            return null;
-        }
-
-        @Override
-        public MenuItem add(int groupId, int itemId, int order, int titleRes) {
-            return null;
-        }
-
-        @Override
-        public SubMenu addSubMenu(CharSequence title) {
-            return null;
-        }
-
-        @Override
-        public SubMenu addSubMenu(int titleRes) {
-            return null;
-        }
-
-        @Override
-        public SubMenu addSubMenu(int groupId, int itemId, int order,
-                CharSequence title) {
-            return null;
-        }
-
-        @Override
-        public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
-            return null;
-        }
-
-        @Override
-        public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller,
-                Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) {
-            return 0;
-        }
-
-        @Override
-        public void removeItem(int id) {
-
-        }
-
-        @Override
-        public void removeGroup(int groupId) {
-
-        }
-
-        @Override
-        public void clear() {
-
-        }
-
-        @Override
-        public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
-
-        }
-
-        @Override
-        public void setGroupVisible(int group, boolean visible) {
-
-        }
-
-        @Override
-        public void setGroupEnabled(int group, boolean enabled) {
-
-        }
-
-        @Override
-        public boolean hasVisibleItems() {
-            return false;
-        }
-
-        @Override
-        public MenuItem findItem(int id) {
-            return null;
-        }
-
-        @Override
-        public int size() {
-            return 0;
-        }
-
-        @Override
-        public MenuItem getItem(int index) {
-            return null;
-        }
-
-        @Override
-        public void close() {
-
-        }
-
-        @Override
-        public boolean performShortcut(int keyCode, KeyEvent event, int flags) {
-            return false;
-        }
-
-        @Override
-        public boolean isShortcutKey(int keyCode, KeyEvent event) {
-            return false;
-        }
-
-        @Override
-        public boolean performIdentifierAction(int id, int flags) {
-            return false;
-        }
-
-        @Override
-        public void setQwertyMode(boolean isQwerty) {
-
-        }
-    }
-
-    private static class MockOnCreateContextMenuListener implements OnCreateContextMenuListener {
-        private boolean hasCreatedContextMenu;
-        private ContextMenuInfo mContextMenuInfo;
-
-        public boolean hasCreatedContextMenu() {
-            return hasCreatedContextMenu;
-        }
-
-        public ContextMenuInfo getContextMenuInfo() {
-            return mContextMenuInfo;
-        }
-
-        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
-            hasCreatedContextMenu = true;
-            mContextMenuInfo = menuInfo;
-        }
-    }
-
     private static class ImageAdapter extends BaseAdapter {
         public ImageAdapter(Context c) {
             mContext = c;
diff --git a/tests/tests/widget/src/android/widget/cts/ListViewTest.java b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
index f6f490f..838f7a8 100644
--- a/tests/tests/widget/src/android/widget/cts/ListViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ListViewTest.java
@@ -427,7 +427,6 @@
 
         final Drawable d = mActivity.getResources().getDrawable(R.drawable.scenery);
 
-        Rect r2 = d.getBounds();
         mInstrumentation.runOnMainSync(new Runnable() {
             public void run() {
                 mListView.setDivider(d);
@@ -435,7 +434,7 @@
         });
         mInstrumentation.waitForIdleSync();
         assertSame(d, mListView.getDivider());
-        assertEquals(r2.bottom - r2.top, mListView.getDividerHeight());
+        assertEquals(d.getBounds().height(), mListView.getDividerHeight());
 
         mInstrumentation.runOnMainSync(new Runnable() {
             public void run() {
@@ -444,7 +443,7 @@
         });
         mInstrumentation.waitForIdleSync();
         assertEquals(10, mListView.getDividerHeight());
-        assertEquals(10, r2.bottom - r2.top);
+        assertEquals(10, d.getBounds().height());
     }
 
     public void testSetSelection() {
diff --git a/tests/tests/widget/src/android/widget/cts/QuickContactBadgeTest.java b/tests/tests/widget/src/android/widget/cts/QuickContactBadgeTest.java
index 25d8e5e..a65bbe9 100644
--- a/tests/tests/widget/src/android/widget/cts/QuickContactBadgeTest.java
+++ b/tests/tests/widget/src/android/widget/cts/QuickContactBadgeTest.java
@@ -21,6 +21,8 @@
 import android.content.ContextWrapper;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Bundle;
+import android.os.UserHandle;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Contacts;
 import android.test.InstrumentationTestCase;
@@ -43,6 +45,16 @@
                 testCallback(intent);
             }
 
+            // @Override
+            public void startActivityAsUser(Intent intent, UserHandle user) {
+                testCallback(intent);
+            }
+
+            // @Override
+            public void startActivityAsUser(Intent intent, Bundle options, UserHandle user) {
+                testCallback(intent);
+            }
+
             private void testCallback(Intent intent) {
                 assertEquals(plainMimeType, intent.getStringExtra(
                         ContactsContract.QuickContact.EXTRA_PRIORITIZED_MIMETYPE));
diff --git a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
index aae069a..b228ca6 100644
--- a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
+++ b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
@@ -329,6 +329,30 @@
         assertEquals("Get missing rule", 0, p.getRule(RelativeLayout.ABOVE));
     }
 
+    /**
+     * Tests to prevent regressions in baseline alignment.
+     */
+    public void testBaselineAlignment() {
+        mActivity.runOnUiThread(new Runnable() {
+            public void run() {
+                mActivity.setContentView(R.layout.relative_layout_baseline);
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        View button = mActivity.findViewById(R.id.button1);
+        assertTrue(button.getHeight() > 0);
+
+        button = mActivity.findViewById(R.id.button2);
+        assertTrue(button.getHeight() > 0);
+
+        button = mActivity.findViewById(R.id.button3);
+        assertTrue(button.getHeight() > 0);
+
+        button = mActivity.findViewById(R.id.button4);
+        assertTrue(button.getHeight() > 0);
+    }
+
     private class MyRelativeLayout extends RelativeLayout {
         public MyRelativeLayout(Context context) {
             super(context);
diff --git a/tests/tests/widget/src/android/widget/cts/ResourceCursorAdapterTest.java b/tests/tests/widget/src/android/widget/cts/ResourceCursorAdapterTest.java
index 52d699b..580be27 100644
--- a/tests/tests/widget/src/android/widget/cts/ResourceCursorAdapterTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ResourceCursorAdapterTest.java
@@ -175,7 +175,8 @@
         public MockResourceCursorAdapter(Context context, int layout, Cursor c) {
             super(context, layout, c);
 
-            mAutoRequery = false;
+            // Default is true.
+            mAutoRequery = true;
         }
 
         public MockResourceCursorAdapter(Context context, int layout,
diff --git a/tests/tests/widget/src/android/widget/cts/TextViewTest.java b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
index 936f38f..3130a26 100644
--- a/tests/tests/widget/src/android/widget/cts/TextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
@@ -809,13 +809,14 @@
         add = Float.MIN_VALUE;
         mult = Float.MIN_VALUE;
         setLineSpacing(add, mult);
-        float expected = originalLineHeight * mult + add;
-        assertEquals(Math.round(expected), mTextView.getLineHeight());
+        assertEquals(Math.round(originalLineHeight * mult + add), mTextView.getLineHeight());
+
+        // edge case where the behavior of Math.round() deviates from
+        // FastMath.round(), requiring us to use an explicit 0 value
         add = Float.MAX_VALUE;
         mult = Float.MAX_VALUE;
         setLineSpacing(add, mult);
-        expected = originalLineHeight * mult + add;
-        assertEquals(Math.round(expected), mTextView.getLineHeight());
+        assertEquals(0, mTextView.getLineHeight());
     }
 
     public void testInstanceState() {
diff --git a/tests/uiautomator/src/com/android/cts/uiautomatortest/CtsUiAutomatorTest.java b/tests/uiautomator/src/com/android/cts/uiautomatortest/CtsUiAutomatorTest.java
index 7e44e49..7e4c367 100644
--- a/tests/uiautomator/src/com/android/cts/uiautomatortest/CtsUiAutomatorTest.java
+++ b/tests/uiautomator/src/com/android/cts/uiautomatortest/CtsUiAutomatorTest.java
@@ -827,17 +827,17 @@
         assertTrue("Pinch must be in center of target view", p2s.y == screenRect.centerY());
 
         assertTrue("Touch-down X coordinate for pointer 1 is invalid",
-                withinMarginOfError(0.1f, screenRect.centerX(), p1s.x));
+                withinMarginOfError(0.125f, screenRect.centerX(), p1s.x));
 
         assertTrue("Touch-down X coordinate for pointer 2 is invalid",
-                withinMarginOfError(0.1f, screenRect.centerX(), p2s.x));
+                withinMarginOfError(0.125f, screenRect.centerX(), p2s.x));
 
         assertTrue("Touch-up X coordinate for pointer 1 is invalid",
-                withinMarginOfError(0.1f, screenRect.centerX() - screenRect.left,
+                withinMarginOfError(0.125f, screenRect.centerX() - screenRect.left,
                         screenRect.centerX() - p1e.x));
 
         assertTrue("Touch-up X coordinate for pointer 2 is invalid",
-                withinMarginOfError(0.1f, screenRect.right, p2e.x));
+                withinMarginOfError(0.125f, screenRect.right, p2e.x));
     }
 
     /**
@@ -881,17 +881,17 @@
         assertTrue("Pinch must be in center of target view", p2s.y == screenRect.centerY());
 
         assertTrue("Touch-down X coordinate for pointer 1 is invalid",
-                withinMarginOfError(0.1f, screenRect.centerX() - screenRect.left,
+                withinMarginOfError(0.125f, screenRect.centerX() - screenRect.left,
                         screenRect.centerX() -  p1s.x));
 
         assertTrue("Touch-down X coordinate for pointer 2 is invalid",
-                withinMarginOfError(0.1f, screenRect.right, p2s.x));
+                withinMarginOfError(0.125f, screenRect.right, p2s.x));
 
         assertTrue("Touch-up X coordinate for pointer 1 is invalid",
-                withinMarginOfError(0.1f, screenRect.centerX() - FINGER_TOUCH_HALF_WIDTH, p1e.x));
+                withinMarginOfError(0.125f, screenRect.centerX() - FINGER_TOUCH_HALF_WIDTH, p1e.x));
 
         assertTrue("Touch-up X coordinate for pointer 2 is invalid",
-                withinMarginOfError(0.1f, screenRect.centerX() + FINGER_TOUCH_HALF_WIDTH, p2e.x));
+                withinMarginOfError(0.125f, screenRect.centerX() + FINGER_TOUCH_HALF_WIDTH, p2e.x));
     }
 
     /**
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java
index 31e1f8d..73cea67 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java
@@ -24,6 +24,8 @@
 /** Representation of a class in the API with constructors and methods. */
 class ApiClass implements Comparable<ApiClass>, HasCoverage {
 
+    private static final String VOID = "void";
+
     private final String mName;
 
     private final boolean mDeprecated;
@@ -34,10 +36,25 @@
 
     private final List<ApiMethod> mApiMethods = new ArrayList<ApiMethod>();
 
-    ApiClass(String name, boolean deprecated, boolean classAbstract) {
+    private final String mSuperClassName;
+
+    private ApiClass mSuperClass;
+
+    /**
+     * @param name The name of the class
+     * @param deprecated true iff the class is marked as deprecated
+     * @param classAbstract true iff the class is abstract
+     * @param superClassName The fully qualified name of the super class
+     */
+    ApiClass(
+            String name,
+            boolean deprecated,
+            boolean classAbstract,
+            String superClassName) {
         mName = name;
         mDeprecated = deprecated;
         mAbstract = classAbstract;
+        mSuperClassName = superClassName;
     }
 
     @Override
@@ -54,22 +71,20 @@
         return mDeprecated;
     }
 
+    public String getSuperClassName() {
+        return mSuperClassName;
+    }
+
     public boolean isAbstract() {
         return mAbstract;
     }
 
+    public void setSuperClass(ApiClass superClass) { mSuperClass = superClass; }
+
     public void addConstructor(ApiConstructor constructor) {
         mApiConstructors.add(constructor);
     }
 
-    public ApiConstructor getConstructor(List<String> parameterTypes) {
-        for (ApiConstructor constructor : mApiConstructors) {
-            if (parameterTypes.equals(constructor.getParameterTypes())) {
-                return constructor;
-            }
-        }
-        return null;
-    }
 
     public Collection<ApiConstructor> getConstructors() {
         return Collections.unmodifiableList(mApiConstructors);
@@ -79,15 +94,29 @@
         mApiMethods.add(method);
     }
 
-    public ApiMethod getMethod(String name, List<String> parameterTypes, String returnType) {
-        for (ApiMethod method : mApiMethods) {
-            if (name.equals(method.getName())
-                    && parameterTypes.equals(method.getParameterTypes())
-                    && returnType.equals(method.getReturnType())) {
-                return method;
-            }
+    /** Look for a matching constructor and mark it as covered */
+    public void markConstructorCovered(List<String> parameterTypes) {
+        if (mSuperClass != null) {
+            // Mark matching constructors in the superclass
+            mSuperClass.markConstructorCovered(parameterTypes);
         }
-        return null;
+        ApiConstructor apiConstructor = getConstructor(parameterTypes);
+        if (apiConstructor != null) {
+            apiConstructor.setCovered(true);
+        }
+
+    }
+
+    /** Look for a matching method and if found and mark it as covered */
+    public void markMethodCovered(String name, List<String> parameterTypes, String returnType) {
+        if (mSuperClass != null) {
+            // Mark matching methods in the super class
+            mSuperClass.markMethodCovered(name, parameterTypes, returnType);
+        }
+        ApiMethod apiMethod = getMethod(name, parameterTypes, returnType);
+        if (apiMethod != null) {
+            apiMethod.setCovered(true);
+        }
     }
 
     public Collection<ApiMethod> getMethods() {
@@ -126,4 +155,89 @@
     public int getMemberSize() {
         return getTotalMethods();
     }
+
+    private ApiMethod getMethod(String name, List<String> parameterTypes, String returnType) {
+        for (ApiMethod method : mApiMethods) {
+            boolean methodNameMatch = name.equals(method.getName());
+            boolean parameterTypeMatch =
+                    compareParameterTypes(method.getParameterTypes(), parameterTypes);
+            boolean returnTypeMatch = compareType(method.getReturnType(), returnType);
+            if (methodNameMatch && parameterTypeMatch && returnTypeMatch) {
+                return method;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * The method compares two lists of parameters. If the {@code apiParameterTypeList} contains
+     * generic types, test parameter types are ignored.
+     *
+     * @param apiParameterTypeList The list of parameter types from the API
+     * @param testParameterTypeList The list of parameter types used in a test
+     * @return true iff the list of types are the same.
+     */
+    private static boolean compareParameterTypes(
+            List<String> apiParameterTypeList, List<String> testParameterTypeList) {
+        if (apiParameterTypeList.equals(testParameterTypeList)) {
+            return true;
+        }
+        if (apiParameterTypeList.size() != testParameterTypeList.size()) {
+            return false;
+        }
+
+        for (int i = 0; i < apiParameterTypeList.size(); i++) {
+            String apiParameterType = apiParameterTypeList.get(i);
+            String testParameterType = testParameterTypeList.get(i);
+            if (!compareType(apiParameterType, testParameterType)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Compare class types.
+     * @param apiType The type as reported by the api
+     * @param testType The type as found used in a test
+     * @return true iff the strings are equal,
+     * or the apiType is generic and the test type is not void
+     */
+    private static boolean compareType(String apiType, String testType) {
+        return apiType.equals(testType) ||
+                isGenericType(apiType) && !testType.equals(VOID) ||
+                isGenericArrayType(apiType) && isArrayType(testType) ;
+    }
+
+    /**
+     * @return true iff the given parameterType is a generic type.
+     */
+    private static boolean isGenericType(String type) {
+        return type.length() == 1 &&
+                type.charAt(0) >= 'A' &&
+                type.charAt(0) <= 'Z';
+    }
+
+    /**
+     * @return true iff {@code type} ends with an [].
+     */
+    private static boolean isArrayType(String type) {
+        return type.endsWith("[]");
+    }
+
+    /**
+     * @return true iff the given parameterType is an array of generic type.
+     */
+    private static boolean isGenericArrayType(String type) {
+        return type.length() == 3 && isGenericType(type.substring(0, 1)) && isArrayType(type);
+    }
+
+    private ApiConstructor getConstructor(List<String> parameterTypes) {
+        for (ApiConstructor constructor : mApiConstructors) {
+            if (compareParameterTypes(constructor.getParameterTypes(), parameterTypes)) {
+                return constructor;
+            }
+        }
+        return null;
+    }
 }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java
index adf2ea9..953aab3 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java
@@ -39,10 +39,11 @@
         return Collections.unmodifiableCollection(mPackages.values());
     }
 
-    public void removeEmptyAbstractClasses() {
+    /** Iterate through all packages and update all classes to include its superclass */
+    public void resolveSuperClasses() {
         for (Map.Entry<String, ApiPackage> entry : mPackages.entrySet()) {
             ApiPackage pkg = entry.getValue();
-            pkg.removeEmptyAbstractClasses();
+            pkg.resolveSuperClasses(mPackages);
         }
     }
 }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java
index 053cd12..582c2b6 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java
@@ -29,15 +29,35 @@
 
     private final String mReturnType;
 
-    private boolean mDeprecated;
+    private final boolean mDeprecated;
+
+    private final String mVisibility;
+
+    private final boolean mStaticMethod;
+
+    private final boolean mFinalMethod;
+
+    private final boolean mAbstractMethod;
 
     private boolean mIsCovered;
 
-    ApiMethod(String name, List<String> parameterTypes, String returnType, boolean deprecated) {
+    ApiMethod(
+            String name,
+            List<String> parameterTypes,
+            String returnType,
+            boolean deprecated,
+            String visibility,
+            boolean staticMethod,
+            boolean finalMethod,
+            boolean abstractMethod) {
         mName = name;
         mParameterTypes = new ArrayList<String>(parameterTypes);
         mReturnType = returnType;
         mDeprecated = deprecated;
+        mVisibility = visibility;
+        mStaticMethod = staticMethod;
+        mFinalMethod = finalMethod;
+        mAbstractMethod = abstractMethod;
     }
 
     @Override
@@ -65,6 +85,14 @@
         return mIsCovered;
     }
 
+    public String getVisibility() { return mVisibility; }
+
+    public boolean isAbstractMethod() { return mAbstractMethod; }
+
+    public boolean isStaticMethod() { return mStaticMethod; }
+
+    public boolean isFinalMethod() { return mFinalMethod; }
+
     public void setCovered(boolean covered) {
         mIsCovered = covered;
     }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java
index e0bf73f..7be7e3c 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java
@@ -77,14 +77,26 @@
         return getTotalMethods();
     }
 
-    public void removeEmptyAbstractClasses() {
+    /** Iterate through all classes and add superclass. */
+    public void resolveSuperClasses(Map<String, ApiPackage> packageMap) {
         Iterator<Entry<String, ApiClass>> it = mApiClassMap.entrySet().iterator();
         while (it.hasNext()) {
             Map.Entry<String, ApiClass> entry = it.next();
-            ApiClass cls = entry.getValue();
-            if (cls.isAbstract() && (cls.getTotalMethods() == 0)) {
-                // this is essentially interface
-                it.remove();
+            ApiClass apiClass = entry.getValue();
+            if (apiClass.getSuperClassName() != null) {
+                String superClassName = apiClass.getSuperClassName();
+                // Split the fully qualified class name into package and class name.
+                String packageName = superClassName.substring(0, superClassName.lastIndexOf('.'));
+                String className = superClassName.substring(
+                        superClassName.lastIndexOf('.') + 1, superClassName.length());
+                if (packageMap.containsKey(packageName)) {
+                    ApiPackage apiPackage = packageMap.get(packageName);
+                    ApiClass superClass = apiPackage.getClass(className);
+                    if (superClass != null) {
+                        // Add the super class
+                        apiClass.setSuperClass(superClass);
+                    }
+                }
             }
         }
     }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
index 05cb4e19..3f2f353 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
@@ -117,7 +117,8 @@
          */
 
         ApiCoverage apiCoverage = getEmptyApiCoverage(apiXmlPath);
-        apiCoverage.removeEmptyAbstractClasses();
+        // Add superclass information into api coverage.
+        apiCoverage.resolveSuperClasses();
         for (File testApk : testApks) {
             addApiCoverage(apiCoverage, testApk, dexDeps);
         }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java
index b9f9e9c..de9f5d5 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java
@@ -40,6 +40,12 @@
 
     private boolean mCurrentMethodIsAbstract;
 
+    private String mCurrentMethodVisibility;
+
+    private boolean mCurrentMethodStaticMethod;
+
+    private boolean mCurrentMethodFinalMethod;
+
     private boolean mDeprecated;
 
 
@@ -69,7 +75,9 @@
             mIgnoreCurrentClass = false;
             mCurrentClassName = getValue(attributes, "name");
             mDeprecated = isDeprecated(attributes);
-            ApiClass apiClass = new ApiClass(mCurrentClassName, mDeprecated, isAbstract(attributes));
+            String superClass = attributes.getValue("extends");
+            ApiClass apiClass = new ApiClass(
+                    mCurrentClassName, mDeprecated, is(attributes, "abstract"), superClass);
             ApiPackage apiPackage = mApiCoverage.getPackage(mCurrentPackageName);
             apiPackage.addClass(apiClass);
         } else if ("interface".equalsIgnoreCase(localName)) {
@@ -82,7 +90,10 @@
             mDeprecated = isDeprecated(attributes);
             mCurrentMethodName = getValue(attributes, "name");
             mCurrentMethodReturnType = getValue(attributes, "return");
-            mCurrentMethodIsAbstract = isAbstract(attributes);
+            mCurrentMethodIsAbstract = is(attributes, "abstract");
+            mCurrentMethodVisibility = getValue(attributes, "visibility");
+            mCurrentMethodStaticMethod = is(attributes, "static");
+            mCurrentMethodFinalMethod = is(attributes, "final");
             mCurrentParameterTypes.clear();
         } else if ("parameter".equalsIgnoreCase(localName)) {
             mCurrentParameterTypes.add(getValue(attributes, "type"));
@@ -107,11 +118,15 @@
             ApiClass apiClass = apiPackage.getClass(mCurrentClassName);
             apiClass.addConstructor(apiConstructor);
         }  else if ("method".equalsIgnoreCase(localName)) {
-            if (mCurrentMethodIsAbstract) { // do not add abstract method
-                return;
-            }
-            ApiMethod apiMethod = new ApiMethod(mCurrentMethodName, mCurrentParameterTypes,
-                    mCurrentMethodReturnType, mDeprecated);
+            ApiMethod apiMethod = new ApiMethod(
+                    mCurrentMethodName,
+                    mCurrentParameterTypes,
+                    mCurrentMethodReturnType,
+                    mDeprecated,
+                    mCurrentMethodVisibility,
+                    mCurrentMethodStaticMethod,
+                    mCurrentMethodFinalMethod,
+                    mCurrentMethodIsAbstract);
             ApiPackage apiPackage = mApiCoverage.getPackage(mCurrentPackageName);
             ApiClass apiClass = apiPackage.getClass(mCurrentClassName);
             apiClass.addMethod(apiMethod);
@@ -129,8 +144,8 @@
         return "deprecated".equals(attributes.getValue("deprecated"));
     }
 
-    private boolean isAbstract(Attributes attributes) {
-        return "true".equals(attributes.getValue("abstract"));
+    private static boolean is(Attributes attributes, String valueName) {
+        return "true".equals(attributes.getValue(valueName));
     }
 
     private boolean isEnum(Attributes attributes) {
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java
index 0a90bdd..3df532e 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java
@@ -73,10 +73,7 @@
             if (apiPackage != null) {
                 ApiClass apiClass = apiPackage.getClass(mCurrentClassName);
                 if (apiClass != null) {
-                    ApiConstructor apiConstructor = apiClass.getConstructor(mCurrentParameterTypes);
-                    if (apiConstructor != null) {
-                        apiConstructor.setCovered(true);
-                    }
+                    apiClass.markConstructorCovered(mCurrentParameterTypes);
                 }
             }
         }  else if ("method".equalsIgnoreCase(localName)) {
@@ -84,11 +81,8 @@
             if (apiPackage != null) {
                 ApiClass apiClass = apiPackage.getClass(mCurrentClassName);
                 if (apiClass != null) {
-                    ApiMethod apiMethod = apiClass.getMethod(mCurrentMethodName,
-                            mCurrentParameterTypes, mCurrentMethodReturnType);
-                    if (apiMethod != null) {
-                        apiMethod.setCovered(true);
-                    }
+                    apiClass.markMethodCovered(
+                            mCurrentMethodName, mCurrentParameterTypes, mCurrentMethodReturnType);
                 }
             }
         }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java
index e3e2e7c..3adc020 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/TextReport.java
@@ -103,7 +103,18 @@
     private static void printMethod(ApiMethod method, PrintStream out) {
         StringBuilder builder = new StringBuilder("    [")
                 .append(method.isCovered() ? "X" : " ")
-                .append("] ").append(method.getReturnType()).append(" ")
+                .append("] ")
+                .append(method.getVisibility()).append(" ");
+        if (method.isAbstractMethod()) {
+            builder.append("abstract ");
+        }
+        if (method.isStaticMethod()) {
+            builder.append("static ");
+        }
+        if (method.isFinalMethod()) {
+            builder.append("final ");
+        }
+        builder.append(method.getReturnType()).append(" ")
                 .append(method.getName()).append("(");
         List<String> parameterTypes = method.getParameterTypes();
         int numParameterTypes = parameterTypes.size();
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
index 570b316..4310d20 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
@@ -66,7 +66,7 @@
                         + "\" numCovered=\"" + pkgTotalCovered
                         + "\" numTotal=\"" + pkgTotal
                         + "\" coveragePercentage=\""
-                            + Math.round(pkg.getCoveragePercentage())
+                        + Math.round(pkg.getCoveragePercentage())
                         + "\">");
 
                 List<ApiClass> classes = new ArrayList<ApiClass>(pkg.getClasses());
@@ -103,6 +103,10 @@
                             out.println("<method name=\"" + method.getName()
                                     + "\" returnType=\"" + method.getReturnType()
                                     + "\" deprecated=\"" + method.isDeprecated()
+                                    + "\" static=\"" + method.isStaticMethod()
+                                    + "\" final=\"" + method.isFinalMethod()
+                                    + "\" visibility=\"" + method.getVisibility()
+                                    + "\" abstract=\"" + method.isAbstractMethod()
                                     + "\" covered=\"" + method.isCovered() + "\">");
                             if (method.isDeprecated()) {
                                 if (method.isCovered()) {
diff --git a/tools/cts-api-coverage/src/res/api-coverage.xsl b/tools/cts-api-coverage/src/res/api-coverage.xsl
index b11a8c4..1a56eb0 100644
--- a/tools/cts-api-coverage/src/res/api-coverage.xsl
+++ b/tools/cts-api-coverage/src/res/api-coverage.xsl
@@ -101,14 +101,17 @@
                     <xsl:for-each select="api-coverage/api/package">
                         <xsl:call-template name="packageOrClassListItem">
                             <xsl:with-param name="bulletClass" select="'package'" />
+                            <xsl:with-param name="toggleId" select="@name" />
                         </xsl:call-template>
                         <div class="packageDetails" id="{@name}" style="display: none">
                             <ul>
                                 <xsl:for-each select="class">
+                                    <xsl:variable name="packageClassId" select="concat(../@name, '.', @name)"/>
                                     <xsl:call-template name="packageOrClassListItem">
                                         <xsl:with-param name="bulletClass" select="'class'" />
+                                        <xsl:with-param name="toggleId" select="$packageClassId" />
                                     </xsl:call-template>
-                                    <div class="classDetails" id="{@name}" style="display: none">
+                                    <div class="classDetails" id="{$packageClassId}" style="display: none">
                                         <xsl:for-each select="constructor">
                                             <xsl:call-template name="methodListItem" />
                                         </xsl:for-each>
@@ -124,9 +127,10 @@
             </body>
         </html>
     </xsl:template>
-    
+
     <xsl:template name="packageOrClassListItem">
         <xsl:param name="bulletClass" />
+        <xsl:param name="toggleId"/>
 
         <xsl:variable name="colorClass">
             <xsl:choose>
@@ -135,7 +139,7 @@
                 <xsl:otherwise>green</xsl:otherwise>
             </xsl:choose>
         </xsl:variable>
-        
+
         <xsl:variable name="deprecatedClass">
             <xsl:choose>
                 <xsl:when test="@deprecated = 'true'">deprecated</xsl:when>
@@ -143,15 +147,15 @@
             </xsl:choose>
         </xsl:variable>
 
-        <li class="{$bulletClass}" onclick="toggleVisibility('{@name}')">
+        <li class="{$bulletClass}" onclick="toggleVisibility('{$toggleId}')">
             <span class="{$colorClass} {$deprecatedClass}">
                 <b><xsl:value-of select="@name" /></b>
                 &nbsp;<xsl:value-of select="@coveragePercentage" />%
                 &nbsp;(<xsl:value-of select="@numCovered" />/<xsl:value-of select="@numTotal" />)
             </span>
-        </li>   
+        </li>
     </xsl:template>
-  
+
   <xsl:template name="methodListItem">
 
     <xsl:variable name="deprecatedClass">
@@ -166,6 +170,10 @@
         <xsl:when test="@covered = 'true'">[X]</xsl:when>
         <xsl:otherwise>[ ]</xsl:otherwise>
       </xsl:choose>
+      <xsl:if test="@visibility != ''">&nbsp;<xsl:value-of select="@visibility" /></xsl:if>
+      <xsl:if test="@abstract = 'true'">&nbsp;abstract</xsl:if>
+      <xsl:if test="@static = 'true'">&nbsp;static</xsl:if>
+      <xsl:if test="@final = 'true'">&nbsp;final</xsl:if>
       <xsl:if test="@returnType != ''">&nbsp;<xsl:value-of select="@returnType" /></xsl:if>
       <b>&nbsp;<xsl:value-of select="@name" /></b><xsl:call-template name="formatParameters" />
     </span>
diff --git a/tools/cts-device-info/Android.mk b/tools/cts-device-info/Android.mk
new file mode 100644
index 0000000..5f2b223
--- /dev/null
+++ b/tools/cts-device-info/Android.mk
@@ -0,0 +1,28 @@
+# Copyright (C) 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+DEVICE_INFO_PERMISSIONS :=
+
+DEVICE_INFO_ACTIVITIES :=
+
+LOCAL_PACKAGE_NAME := CtsDeviceInfo
+
+include $(BUILD_CTS_DEVICE_INFO_PACKAGE)
+
diff --git a/tools/cts-device-info/src/com/android/cts/deviceinfo/SampleDeviceInfo.java b/tools/cts-device-info/src/com/android/cts/deviceinfo/SampleDeviceInfo.java
new file mode 100644
index 0000000..886193c
--- /dev/null
+++ b/tools/cts-device-info/src/com/android/cts/deviceinfo/SampleDeviceInfo.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.cts.deviceinfo;
+
+import android.os.Bundle;
+
+import com.android.compatibility.common.deviceinfo.DeviceInfoActivity;
+
+/**
+ * Sample device info collector.
+ */
+public class SampleDeviceInfo extends DeviceInfoActivity {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    protected void collectDeviceInfo() {
+        boolean[] booleans = {Boolean.TRUE, Boolean.FALSE};
+        double[] doubles = {Double.MAX_VALUE, Double.MIN_VALUE};
+        int[] ints = {Integer.MAX_VALUE, Integer.MIN_VALUE};
+        long[] longs = {Long.MAX_VALUE, Long.MIN_VALUE};
+
+        // Group Foo
+        startGroup("foo");
+        addResult("foo_boolean", Boolean.TRUE);
+
+        // Group Bar
+        startGroup("bar");
+        addArray("bar_string", new String[] {
+                "bar-string-1",
+                "bar-string-2",
+                "bar-string-3"});
+
+        addArray("bar_boolean", booleans);
+        addArray("bar_double", doubles);
+        addArray("bar_int", ints);
+        addArray("bar_long", longs);
+        endGroup(); // bar
+
+        addResult("foo_double", Double.MAX_VALUE);
+        addResult("foo_int", Integer.MAX_VALUE);
+        addResult("foo_long", Long.MAX_VALUE);
+        addResult("foo_string", "foo-string");
+        endGroup(); // foo
+    }
+}
+
diff --git a/tools/cts-media/copy_media.sh b/tools/cts-media/copy_media.sh
index 3998dc3..cf0d099 100755
--- a/tools/cts-media/copy_media.sh
+++ b/tools/cts-media/copy_media.sh
@@ -45,24 +45,24 @@
 
 if [ $max_resolution -ge 3 ]; then
   echo "copying 1920x1080"
-  adb $adb_options push bbb_short/1920x1080 /mnt/sdcard/test/bbb_short/1920x1080
-  adb $adb_options push bbb_full/1920x1080 /mnt/sdcard/test/bbb_full/1920x1080
+  adb $adb_options push bbb_short/1920x1080 /sdcard/test/bbb_short/1920x1080
+  adb $adb_options push bbb_full/1920x1080 /sdcard/test/bbb_full/1920x1080
 fi
 
 if [ $max_resolution -ge 2 ]; then
   echo "copying 1280x720"
-  adb $adb_options push bbb_short/1280x720 /mnt/sdcard/test/bbb_short/1280x720
-  adb $adb_options push bbb_full/1280x720 /mnt/sdcard/test/bbb_full/1280x720
+  adb $adb_options push bbb_short/1280x720 /sdcard/test/bbb_short/1280x720
+  adb $adb_options push bbb_full/1280x720 /sdcard/test/bbb_full/1280x720
 fi
 
 if [ $max_resolution -ge 1 ]; then
   echo "copying 720x480"
-  adb $adb_options push bbb_short/720x480 /mnt/sdcard/test/bbb_short/720x480
-  adb $adb_options push bbb_full/720x480 /mnt/sdcard/test/bbb_full/720x480
+  adb $adb_options push bbb_short/720x480 /sdcard/test/bbb_short/720x480
+  adb $adb_options push bbb_full/720x480 /sdcard/test/bbb_full/720x480
 fi
 
 echo "copying all others"
-adb $adb_options push bbb_short/176x144 /mnt/sdcard/test/bbb_short/176x144
-adb $adb_options push bbb_full/176x144 /mnt/sdcard/test/bbb_full/176x144
-adb $adb_options push bbb_short/480x360 /mnt/sdcard/test/bbb_short/480x360
-adb $adb_options push bbb_full/480x360 /mnt/sdcard/test/bbb_full/480x360
+adb $adb_options push bbb_short/176x144 /sdcard/test/bbb_short/176x144
+adb $adb_options push bbb_full/176x144 /sdcard/test/bbb_full/176x144
+adb $adb_options push bbb_short/480x360 /sdcard/test/bbb_short/480x360
+adb $adb_options push bbb_full/480x360 /sdcard/test/bbb_full/480x360
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
index a33fc01..ca67746 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java
@@ -42,15 +42,13 @@
         if (mCtsRootDirPath == null) {
             throw new IllegalArgumentException("Missing --cts-install-path");
         }
-        IFolderBuildInfo ctsBuild = new FolderBuildInfo(CTS_BUILD_VERSION, "cts", "cts");
+        IFolderBuildInfo ctsBuild = new FolderBuildInfo(
+            Package.getPackage(CTS_PACKAGE).getImplementationVersion(),
+            "cts", "cts");
         ctsBuild.setRootDir(new File(mCtsRootDirPath));
         return ctsBuild;
     }
 
-    public static String getBuildNumber() {
-        return Package.getPackage(CTS_PACKAGE).getImplementationVersion();
-    }
-
     /**
      * {@inheritDoc}
      */
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java b/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java
index 2d6d8f2..24239e6 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/command/CtsConsole.java
@@ -24,6 +24,7 @@
 import com.android.cts.tradefed.testtype.ITestPackageRepo;
 import com.android.cts.tradefed.testtype.TestPackageRepo;
 import com.android.cts.util.AbiUtils;
+import com.android.tradefed.build.IFolderBuildInfo;
 import com.android.tradefed.command.Console;
 import com.android.tradefed.config.ArgsOptionParser;
 import com.android.tradefed.config.ConfigurationException;
@@ -48,7 +49,8 @@
 
     protected static final String ADD_PATTERN = "a(?:dd)?";
 
-    private CtsBuildHelper mCtsBuild = null;
+    private IFolderBuildInfo mBuildInfo = null;
+    private CtsBuildHelper mBuildHelper = null;
 
     CtsConsole() {
         super();
@@ -57,8 +59,7 @@
     @Override
     public void run() {
         printLine(String.format("Android CTS %s build:%s",
-                CtsBuildProvider.CTS_BUILD_VERSION,
-                CtsBuildProvider.getBuildNumber()));
+                CtsBuildProvider.CTS_BUILD_VERSION, getCtsBuildInfo().getBuildId()));
         super.run();
     }
 
@@ -71,7 +72,7 @@
         trie.put(new Runnable() {
             @Override
             public void run() {
-                CtsBuildHelper ctsBuild = getCtsBuild();
+                CtsBuildHelper ctsBuild = getCtsBuildHelper();
                 if (ctsBuild != null) {
                     listPlans(ctsBuild);
                 }
@@ -80,7 +81,7 @@
         trie.put(new Runnable() {
             @Override
             public void run() {
-                CtsBuildHelper ctsBuild = getCtsBuild();
+                CtsBuildHelper ctsBuild = getCtsBuildHelper();
                 if (ctsBuild != null) {
                     listPackages(ctsBuild);
                 }
@@ -89,7 +90,7 @@
         trie.put(new Runnable() {
             @Override
             public void run() {
-                CtsBuildHelper ctsBuild = getCtsBuild();
+                CtsBuildHelper ctsBuild = getCtsBuildHelper();
                 if (ctsBuild != null) {
                     listResults(ctsBuild);
                 }
@@ -116,7 +117,7 @@
                 for (int i = 2; i < args.size(); i++) {
                     flatArgs[i - 2] = args.get(i).get(0);
                 }
-                CtsBuildHelper ctsBuild = getCtsBuild();
+                CtsBuildHelper ctsBuild = getCtsBuildHelper();
                 if (ctsBuild != null) {
                     // FIXME may want to only add certain ABIs
                     addDerivedPlan(ctsBuild, AbiUtils.getAbisSupportedByCts(), flatArgs);
@@ -232,22 +233,28 @@
         }
     }
 
-    private CtsBuildHelper getCtsBuild() {
-        if (mCtsBuild == null) {
-            String ctsInstallPath = System.getProperty("CTS_ROOT");
-            if (ctsInstallPath != null) {
-                mCtsBuild = new CtsBuildHelper(new File(ctsInstallPath));
-                try {
-                    mCtsBuild.validateStructure();
-                } catch (FileNotFoundException e) {
-                    printLine(String.format("Invalid cts install: %s", e.getMessage()));
-                    mCtsBuild = null;
-                }
-            } else {
+    private IFolderBuildInfo getCtsBuildInfo() {
+        if (mBuildInfo == null) {
+            try {
+                mBuildInfo = (IFolderBuildInfo) new CtsBuildProvider().getBuild();
+            } catch (IllegalArgumentException e) {
                 printLine("Could not find CTS install location: CTS_ROOT env variable not set");
             }
         }
-        return mCtsBuild;
+        return mBuildInfo;
+    }
+
+    private CtsBuildHelper getCtsBuildHelper() {
+        if (mBuildHelper == null) {
+            try {
+                mBuildHelper = new CtsBuildHelper(getCtsBuildInfo());
+                mBuildHelper.validateStructure();
+            } catch (FileNotFoundException e) {
+                printLine(String.format("Invalid cts install: %s", e.getMessage()));
+                mBuildHelper = null;
+            }
+        }
+        return mBuildHelper;
     }
 
     public static void main(String[] args) throws InterruptedException, ConfigurationException {
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java b/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java
index 733eb4f..fe096bd 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/device/DeviceInfoCollector.java
@@ -16,7 +16,10 @@
 package com.android.cts.tradefed.device;
 
 import com.android.cts.util.AbiUtils;
+import com.android.cts.tradefed.result.CtsXmlResultReporter;
 import com.android.ddmlib.Log;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.build.IFolderBuildInfo;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.result.ITestInvocationListener;
@@ -39,10 +42,21 @@
     private static final String APK_NAME = "TestDeviceSetup";
     public static final String APP_PACKAGE_NAME = "android.tests.devicesetup";
     private static final String INSTRUMENTATION_NAME = "android.tests.getinfo.DeviceInfoInstrument";
+
+    private static final String EXTENDED_APK_NAME = "CtsDeviceInfo";
+    public static final String EXTENDED_APP_PACKAGE_NAME =
+            "com.android.compatibility.common.deviceinfo";
+    private static final String EXTENDED_INSTRUMENTATION_NAME =
+            "com.android.compatibility.common.deviceinfo.DeviceInfoInstrument";
+    private static final String DEVICE_RESULT_DIR = "/sdcard/device-info-files";
+
     public static final Set<String> IDS = new HashSet<String>();
+    public static final Set<String> EXTENDED_IDS = new HashSet<String>();
+
     static {
         for (String abi : AbiUtils.getAbisSupportedByCts()) {
             IDS.add(AbiUtils.createId(abi, APP_PACKAGE_NAME));
+            EXTENDED_IDS.add(AbiUtils.createId(abi, EXTENDED_APP_PACKAGE_NAME));
         }
     }
 
@@ -56,7 +70,33 @@
      */
     public static void collectDeviceInfo(ITestDevice device, String abi, File testApkDir,
             ITestInvocationListener listener) throws DeviceNotAvailableException {
-        File apkFile = new File(testApkDir, String.format("%s.apk", APK_NAME));
+        runInstrumentation(device, abi, testApkDir, listener, APK_NAME, APP_PACKAGE_NAME,
+            INSTRUMENTATION_NAME);
+    }
+
+    /**
+     * Installs and runs the extended device info collector instrumentation, and forwards results
+     * to the listener.
+     *
+     * @param device
+     * @param listener
+     * @throws DeviceNotAvailableException
+     */
+    public static void collectExtendedDeviceInfo(ITestDevice device, String abi, File testApkDir,
+            ITestInvocationListener listener, IBuildInfo buildInfo)
+            throws DeviceNotAvailableException {
+        // Clear files in device test result directory
+        device.executeShellCommand(String.format("rm -rf %s", DEVICE_RESULT_DIR));
+        runInstrumentation(device, abi, testApkDir, listener, EXTENDED_APK_NAME,
+            EXTENDED_APP_PACKAGE_NAME, EXTENDED_INSTRUMENTATION_NAME);
+        // Copy files in remote result directory to local directory
+        pullExtendedDeviceInfoResults(device, buildInfo);
+    }
+
+    private static void runInstrumentation(ITestDevice device, String abi, File testApkDir,
+            ITestInvocationListener listener, String apkName, String packageName,
+            String instrumentName) throws DeviceNotAvailableException {
+        File apkFile = new File(testApkDir, String.format("%s.apk", apkName));
         if (!apkFile.exists()) {
             Log.e(LOG_TAG, String.format("Could not find %s", apkFile.getAbsolutePath()));
             return;
@@ -68,9 +108,39 @@
         instrTest.setInstallFile(apkFile);
         // no need to collect tests and re-run
         instrTest.setRerunMode(false);
-        instrTest.setPackageName(APP_PACKAGE_NAME);
-        instrTest.setRunName(AbiUtils.createId(abi, APP_PACKAGE_NAME));
-        instrTest.setRunnerName(INSTRUMENTATION_NAME);
+        instrTest.setPackageName(packageName);
+        instrTest.setRunName(AbiUtils.createId(abi, packageName));
+        instrTest.setRunnerName(instrumentName);
         instrTest.run(listener);
     }
+
+    private static void pullExtendedDeviceInfoResults(ITestDevice device, IBuildInfo buildInfo)
+            throws DeviceNotAvailableException {
+        if (!(buildInfo instanceof IFolderBuildInfo)) {
+            Log.e(LOG_TAG, "Invalid instance of buildInfo");
+            return;
+        }
+        File localResultDir = new File(buildInfo.getBuildAttributes().get(
+                CtsXmlResultReporter.CTS_RESULT_DIR));
+        if (localResultDir == null || !localResultDir.isDirectory()) {
+            Log.e(LOG_TAG, "Local result directory is null or is not a directory");
+            return;
+        }
+        // Pull files from device result directory to local result directory
+        String command = String.format("adb -s %s pull %s %s", device.getSerialNumber(),
+                DEVICE_RESULT_DIR, localResultDir.getAbsolutePath());
+        if (!execute(command)) {
+            Log.e(LOG_TAG, String.format("Failed to run %s", command));
+        }
+    }
+
+    private static boolean execute(String command) {
+        try {
+            Process p = Runtime.getRuntime().exec(new String[] {"/bin/bash", "-c", command});
+            return (p.waitFor() == 0);
+        } catch (Exception e) {
+            Log.e(LOG_TAG, e);
+            return false;
+        }
+    }
 }
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsTestLogReporter.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsTestLogReporter.java
index 5029dfe..b7f064f 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsTestLogReporter.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsTestLogReporter.java
@@ -43,6 +43,7 @@
     private TestResults mResults = new TestResults();
     private TestPackageResult mCurrentPkgResult = null;
     private boolean mIsDeviceInfoRun = false;
+    private boolean mIsExtendedDeviceInfoRun = false;
 
     @Override
     public void invocationStarted(IBuildInfo buildInfo) {
@@ -63,8 +64,11 @@
             logCompleteRun(mCurrentPkgResult);
         }
         mIsDeviceInfoRun = DeviceInfoCollector.IDS.contains(id);
+        mIsExtendedDeviceInfoRun = DeviceInfoCollector.EXTENDED_IDS.contains(id);
         if (mIsDeviceInfoRun) {
             logResult("Collecting device info");
+        } else if (mIsExtendedDeviceInfoRun) {
+            logResult("Collecting extended device info");
         } else  {
             if (mCurrentPkgResult == null || !id.equals(mCurrentPkgResult.getId())) {
                 logResult("-----------------------------------------");
@@ -132,9 +136,13 @@
     }
 
     private void logCompleteRun(TestPackageResult pkgResult) {
-        if (pkgResult.getAppPackageName().equals(DeviceInfoCollector.APP_PACKAGE_NAME)) {
+        String appPackageName = pkgResult.getAppPackageName();
+        if (appPackageName.equals(DeviceInfoCollector.APP_PACKAGE_NAME)) {
             logResult("Device info collection complete");
             return;
+        } else if (appPackageName.equals(DeviceInfoCollector.EXTENDED_APP_PACKAGE_NAME)) {
+            logResult("Extended device info collection complete");
+            return;
         }
         logResult("%s package complete: Passed %d, Failed %d, Not Executed %d",
                 pkgResult.getId(), pkgResult.countTests(CtsTestStatus.PASS),
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
index 8cb4072..51b457d 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/CtsXmlResultReporter.java
@@ -25,7 +25,6 @@
 import com.android.tradefed.build.IBuildInfo;
 import com.android.tradefed.build.IFolderBuildInfo;
 import com.android.tradefed.config.Option;
-import com.android.tradefed.config.Option.Importance;
 import com.android.tradefed.log.LogUtil.CLog;
 import com.android.tradefed.result.ILogSaver;
 import com.android.tradefed.result.ILogSaverListener;
@@ -42,6 +41,7 @@
 import org.kxml2.io.KXmlSerializer;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -62,6 +62,7 @@
 
     private static final String LOG_TAG = "CtsXmlResultReporter";
 
+    public static final String CTS_RESULT_DIR = "cts-result-dir";
     static final String TEST_RESULT_FILE_NAME = "testResult.xml";
     static final String CTS_RESULT_FILE_VERSION = "4.4";
     private static final String[] CTS_RESULT_RESOURCES = {"cts_result.xsl", "cts_result.css",
@@ -97,6 +98,9 @@
     @Option(name = "include-test-log-tags", description = "Include test log tags in XML report.")
     private boolean mIncludeTestLogTags = false;
 
+    @Option(name = "use-log-saver", description = "Also saves generated result XML with log saver")
+    private boolean mUseLogSaver = false;
+
     protected IBuildInfo mBuildInfo;
     private String mStartTime;
     private String mDeviceSerial;
@@ -104,10 +108,12 @@
     private TestPackageResult mCurrentPkgResult = null;
     private Test mCurrentTest = null;
     private boolean mIsDeviceInfoRun = false;
+    private boolean mIsExtendedDeviceInfoRun = false;
     private ResultReporter mReporter;
     private File mLogDir;
     private String mSuiteName;
     private String mReferenceUrl;
+    private ILogSaver mLogSaver;
 
     public void setReportDir(File reportDir) {
         mReportDir = reportDir;
@@ -155,6 +161,8 @@
         mSuiteName = ctsBuildHelper.getSuiteName();
         mReporter = new ResultReporter(mResultServer, mSuiteName);
 
+        ctsBuild.addBuildAttribute(CTS_RESULT_DIR, mReportDir.getAbsolutePath());
+
         // TODO: allow customization of log dir
         // create a unique directory for saving logs, with same name as result dir
         File rootLogDir = getBuildHelper(ctsBuild).getLogsDir();
@@ -249,13 +257,14 @@
 
     @Override
     public void setLogSaver(ILogSaver logSaver) {
-      // Don't need to keep a reference to logSaver, because we don't save extra logs in this class.
+        mLogSaver = logSaver;
     }
 
     @Override
     public void testRunStarted(String id, int numTests) {
         mIsDeviceInfoRun = DeviceInfoCollector.IDS.contains(id);
-        if (!mIsDeviceInfoRun) {
+        mIsExtendedDeviceInfoRun = DeviceInfoCollector.EXTENDED_IDS.contains(id);
+        if (!mIsDeviceInfoRun && !mIsExtendedDeviceInfoRun) {
             mCurrentPkgResult = mResults.getOrCreatePackage(id);
             mCurrentPkgResult.setDeviceSerial(mDeviceSerial);
         }
@@ -266,7 +275,7 @@
      */
     @Override
     public void testStarted(TestIdentifier test) {
-        if (!mIsDeviceInfoRun) {
+        if (!mIsDeviceInfoRun && !mIsExtendedDeviceInfoRun) {
             mCurrentTest = mCurrentPkgResult.insertTest(test);
         }
     }
@@ -276,7 +285,7 @@
      */
     @Override
     public void testFailed(TestIdentifier test, String trace) {
-        if (!mIsDeviceInfoRun) {
+        if (!mIsDeviceInfoRun && !mIsExtendedDeviceInfoRun) {
             mCurrentPkgResult.reportTestFailure(test, CtsTestStatus.FAIL, trace);
         }
     }
@@ -287,7 +296,7 @@
     @Override
     public void testAssumptionFailure(TestIdentifier test, String trace) {
         // TODO: do something different here?
-        if (!mIsDeviceInfoRun) {
+        if (!mIsDeviceInfoRun && !mIsExtendedDeviceInfoRun) {
             mCurrentPkgResult.reportTestFailure(test, CtsTestStatus.FAIL, trace);
         }
     }
@@ -305,7 +314,7 @@
      */
     @Override
     public void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
-        if (!mIsDeviceInfoRun) {
+        if (!mIsDeviceInfoRun && !mIsExtendedDeviceInfoRun) {
             mCurrentPkgResult.reportTestEnded(test, testMetrics);
         }
     }
@@ -317,11 +326,22 @@
     public void testRunEnded(long elapsedTime, Map<String, String> runMetrics) {
         if (mIsDeviceInfoRun) {
             mResults.populateDeviceInfoMetrics(runMetrics);
+        } else if (mIsExtendedDeviceInfoRun) {
+            checkExtendedDeviceInfoMetrics(runMetrics);
         } else {
             mCurrentPkgResult.populateMetrics(runMetrics);
         }
     }
 
+    private void checkExtendedDeviceInfoMetrics(Map<String, String> runMetrics) {
+        for (Map.Entry<String, String> metricEntry : runMetrics.entrySet()) {
+            String value = metricEntry.getValue();
+            if (!value.endsWith(".deviceinfo.json")) {
+                CLog.e(String.format("%s failed: %s", metricEntry.getKey(), value));
+            }
+        }
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -335,6 +355,18 @@
 
         File reportFile = getResultFile(mReportDir);
         createXmlResult(reportFile, mStartTime, elapsedTime);
+        if (mUseLogSaver) {
+            FileInputStream fis = null;
+            try {
+                fis = new FileInputStream(reportFile);
+                mLogSaver.saveLogData("cts-result", LogDataType.XML, fis);
+            } catch (IOException ioe) {
+                CLog.e("error saving XML with log saver");
+                CLog.e(ioe);
+            } finally {
+                StreamUtil.close(fis);
+            }
+        }
         copyFormattingFiles(mReportDir);
         zipResults(mReportDir);
 
@@ -400,7 +432,7 @@
         serializer.attribute(ns, "endtime", endTime);
         serializer.attribute(ns, "version", CTS_RESULT_FILE_VERSION);
         serializer.attribute(ns, "suite", mSuiteName);
-        mResults.serialize(serializer);
+        mResults.serialize(serializer, mBuildInfo.getBuildId());
         // TODO: not sure why, but the serializer doesn't like this statement
         //serializer.endTag(ns, RESULT_TAG);
     }
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/result/TestResults.java b/tools/tradefed-host/src/com/android/cts/tradefed/result/TestResults.java
index 68cd1c0..9f67f2d 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/result/TestResults.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/result/TestResults.java
@@ -104,9 +104,9 @@
      * @param serializer
      * @throws IOException
      */
-    public void serialize(KXmlSerializer serializer) throws IOException {
+    public void serialize(KXmlSerializer serializer, String buildId) throws IOException {
         mDeviceInfo.serialize(serializer);
-        serializeHostInfo(serializer);
+        serializeHostInfo(serializer, buildId);
         serializeTestSummary(serializer);
         // sort before serializing
         List<TestPackageResult> pkgs = new ArrayList<TestPackageResult>(mPackageResults.values());
@@ -121,7 +121,7 @@
      *
      * @param serializer
      */
-    private void serializeHostInfo(KXmlSerializer serializer) throws IOException {
+    private void serializeHostInfo(KXmlSerializer serializer, String buildId) throws IOException {
         serializer.startTag(ns, "HostInfo");
 
         String hostName = "";
@@ -143,7 +143,7 @@
 
         serializer.startTag(ns, "Cts");
         serializer.attribute(ns, "version", CtsBuildProvider.CTS_BUILD_VERSION);
-        serializer.attribute(ns, "build", CtsBuildProvider.getBuildNumber());
+        serializer.attribute(ns, "build", buildId);
         // TODO: consider outputting other tradefed options here
         serializer.startTag(ns, "IntValue");
         serializer.attribute(ns, "name", "testStatusTimeoutMs");
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
index b3bc7da..d74cce5 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
@@ -289,9 +289,8 @@
         @Override
         public void testFailed(TestIdentifier test, String trace) {
             super.testFailed(test, trace);
-            // sleep a small amount of time to ensure test failure stack trace makes it into logcat
-            // capture
-            RunUtil.getDefault().sleep(10);
+            // sleep 2s to ensure test failure stack trace makes it into logcat capture
+            RunUtil.getDefault().sleep(2 * 1000);
             InputStreamSource logSource = mDevice.getLogcat(mNumLogcatBytes);
             super.testLog(String.format("logcat-%s_%s", test.getClassName(), test.getTestName()),
                     LogDataType.TEXT, logSource);
@@ -1058,6 +1057,8 @@
         if (!mSkipDeviceInfo) {
             String abi = AbiFormatter.getDefaultAbi(device, "");
             DeviceInfoCollector.collectDeviceInfo(device, abi, ctsBuild.getTestCasesDir(), listener);
+            DeviceInfoCollector.collectExtendedDeviceInfo(
+                device, abi, ctsBuild.getTestCasesDir(), listener, mBuildInfo);
         }
     }
 
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
index f276f1d..12c3ddd 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
@@ -308,9 +308,6 @@
         instrTest.setRunName(mAppPackageName);
         instrTest.setPackageName(mAppNameSpace);
         instrTest.setRunnerName(mRunner);
-        instrTest.setTestPackageName(mTestPackageName);
-        instrTest.setClassName(mClassName);
-        instrTest.setMethodName(mMethodName);
         instrTest.setAbi(mAbi);
         instrTest.setTestsToRun(mTests, false
             /* force batch mode off to always run using testFile */);
diff --git a/tools/tradefed-host/tests/run_unit_func_tests.sh b/tools/tradefed-host/tests/run_unit_func_tests.sh
new file mode 100755
index 0000000..461a80d
--- /dev/null
+++ b/tools/tradefed-host/tests/run_unit_func_tests.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# Copyright (C) 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.
+
+# helper script for running the cts-tradefed unit tests
+
+checkFile() {
+    if [ ! -f "$1" ]; then
+        echo "Unable to locate $1"
+        exit
+    fi;
+}
+
+# check if in Android build env
+if [ ! -z ${ANDROID_BUILD_TOP} ]; then
+    HOST=`uname`
+    if [ "$HOST" == "Linux" ]; then
+        OS="linux-x86"
+    elif [ "$HOST" == "Darwin" ]; then
+        OS="darwin-x86"
+    else
+        echo "Unrecognized OS"
+        exit
+    fi;
+fi;
+
+JAR_DIR=${ANDROID_BUILD_TOP}/out/host/$OS/framework
+JARS="tradefed-prebuilt.jar hosttestlib.jar cts-tradefed.jar cts-tradefed-tests.jar"
+
+for JAR in $JARS; do
+    checkFile ${JAR_DIR}/${JAR}
+    JAR_PATH=${JAR_PATH}:${JAR_DIR}/${JAR}
+done
+
+java $RDBG_FLAG \
+  -cp ${JAR_PATH} com.android.tradefed.command.Console run singleCommand host --class com.android.cts.tradefed.FuncTests "$@"
diff --git a/tools/tradefed-host/tests/run_unit_tests.sh b/tools/tradefed-host/tests/run_unit_tests.sh
index 771dc75..d089c05 100755
--- a/tools/tradefed-host/tests/run_unit_tests.sh
+++ b/tools/tradefed-host/tests/run_unit_tests.sh
@@ -46,4 +46,3 @@
 
 java $RDBG_FLAG \
   -cp ${JAR_PATH} com.android.tradefed.command.Console run singleCommand host -n --class com.android.cts.tradefed.UnitTests "$@"
-
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/FuncTests.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/FuncTests.java
new file mode 100644
index 0000000..a9420d2
--- /dev/null
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/FuncTests.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 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.
+ */
+package com.android.cts.tradefed;
+
+import com.android.cts.tradefed.device.DeviceInfoCollectorFuncTest;
+import com.android.tradefed.testtype.DeviceTestSuite;
+
+import junit.framework.Test;
+
+/**
+ * A test suite for all cts-tradefed functional tests.
+ * <p/>
+ * Tests listed here should require a device.
+ */
+public class FuncTests extends DeviceTestSuite {
+
+    public FuncTests() {
+        super();
+
+        // device package
+        addTestSuite(DeviceInfoCollectorFuncTest.class);
+    }
+
+    public static Test suite() {
+        return new FuncTests();
+    }
+}
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/device/DeviceInfoCollectorFuncTest.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/device/DeviceInfoCollectorFuncTest.java
index 52a205b..60e30cc 100644
--- a/tools/tradefed-host/tests/src/com/android/cts/tradefed/device/DeviceInfoCollectorFuncTest.java
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/device/DeviceInfoCollectorFuncTest.java
@@ -15,33 +15,77 @@
  */
 package com.android.cts.tradefed.device;
 
+import com.android.ddmlib.Log.LogLevel;
 import com.android.cts.tradefed.UnitTests;
+import com.android.cts.tradefed.result.CtsXmlResultReporter;
 import com.android.tradefed.build.BuildInfo;
+import com.android.tradefed.build.IFolderBuildInfo;
 import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.log.LogUtil.CLog;
 import com.android.tradefed.result.CollectingTestListener;
 import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.util.FileUtil;
 
 import java.io.File;
+import java.util.HashMap;
 import java.util.Map;
 
+import org.easymock.EasyMock;
+
 /**
  * Functional test for {@link DeviceInfoCollector}.
  * <p/>
- * TODO: this test assumes the TestDeviceSetup apk is located in the "java.io.tmpdir"
+ * TODO: this test assumes the TestDeviceSetup and DeviceInfoCollector apks are located in the
+ * "java.io.tmpdir"
  */
 public class DeviceInfoCollectorFuncTest extends DeviceTestCase {
 
-    public void testCollectDeviceInfo() throws DeviceNotAvailableException {
-        CollectingTestListener testListener = new CollectingTestListener();
+    private CollectingTestListener testListener;
+    private File mResultDir;
+    private IFolderBuildInfo mMockBuildInfo;
 
-        testListener.invocationStarted(new BuildInfo());
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        testListener = new CollectingTestListener();
+        mResultDir = FileUtil.createTempDir("cts-result-dir");
+        mMockBuildInfo = EasyMock.createMock(IFolderBuildInfo.class);
+        Map<String, String> attributes = new HashMap<>();
+        attributes.put(CtsXmlResultReporter.CTS_RESULT_DIR, mResultDir.getAbsolutePath());
+        EasyMock.expect(mMockBuildInfo.getBuildAttributes()).andStubReturn(attributes);
+        EasyMock.replay(mMockBuildInfo);
+
+        assertNotNull(getDevice().getSerialNumber());
+    }
+
+    public void testCollectDeviceInfo() throws DeviceNotAvailableException {
+        testListener.invocationStarted(mMockBuildInfo);
         DeviceInfoCollector.collectDeviceInfo(getDevice(), UnitTests.ABI.getName(), new File(
                 System.getProperty("java.io.tmpdir")), testListener);
         assertNotNull(testListener.getCurrentRunResults());
-        assertTrue(testListener.getCurrentRunResults().getRunMetrics().size() > 0);
-        for (Map.Entry<String, String> metricEntry : testListener.getCurrentRunResults().getRunMetrics().entrySet()) {
-            System.out.println(String.format("%s=%s", metricEntry.getKey(), metricEntry.getValue()));
-        }
+
+        Map<String, String> runMetrics = testListener.getCurrentRunResults().getRunMetrics();
+        assertTrue(runMetrics.size() > 0);
+        displayMetrics(runMetrics);
         testListener.invocationEnded(0);
     }
+
+    public void testExtendedDeviceInfo() throws DeviceNotAvailableException {
+        testListener.invocationStarted(mMockBuildInfo);
+        DeviceInfoCollector.collectExtendedDeviceInfo(getDevice(), UnitTests.ABI.getName(),
+                new File(System.getProperty("java.io.tmpdir")), testListener, mMockBuildInfo);
+        assertNotNull(testListener.getCurrentRunResults());
+
+        Map<String, String> runMetrics = testListener.getCurrentRunResults().getRunMetrics();
+        assertTrue(runMetrics.size() > 0);
+        displayMetrics(runMetrics);
+        testListener.invocationEnded(0);
+    }
+
+    private void displayMetrics(Map<String, String> runMetrics) {
+        for (Map.Entry<String, String> metricEntry : runMetrics.entrySet()) {
+            CLog.logAndDisplay(LogLevel.INFO,
+                    String.format("%s=%s", metricEntry.getKey(), metricEntry.getValue()));
+        }
+    }
 }
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java
index ae4a41e..51a6153 100644
--- a/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/result/CtsXmlResultReporterTest.java
@@ -39,6 +39,7 @@
 import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -84,10 +85,16 @@
         File plansDir = new File(repoDir, "plans");
         assertTrue(casesDir.mkdirs());
         assertTrue(plansDir.mkdirs());
-        mMockBuild = EasyMock.createNiceMock(IFolderBuildInfo.class);
+        mMockBuild = EasyMock.createMock(IFolderBuildInfo.class);
         EasyMock.expect(mMockBuild.getDeviceSerial()).andStubReturn(null);
         EasyMock.expect(mMockBuild.getRootDir()).andStubReturn(mBuildDir);
-        EasyMock.replay(mMockBuild);
+        mMockBuild.addBuildAttribute(EasyMock.cmpEq(CtsXmlResultReporter.CTS_RESULT_DIR),
+                (String) EasyMock.anyObject());
+        EasyMock.expectLastCall();
+        Map<String, String> attributes = new HashMap<>();
+        attributes.put(CtsXmlResultReporter.CTS_RESULT_DIR, "");
+        EasyMock.expect(mMockBuild.getBuildAttributes()).andStubReturn(attributes);
+        EasyMock.expect(mMockBuild.getBuildId()).andStubReturn("");
     }
 
     @Override
@@ -113,6 +120,7 @@
         final String expectedSummaryOutput =
             "<Summary failed=\"0\" notExecuted=\"0\" timeout=\"0\" pass=\"0\" />";
         final String expectedEndTag = "</TestResult>";
+        EasyMock.replay(mMockBuild);
         mResultReporter.invocationStarted(mMockBuild);
         mResultReporter.invocationEnded(1);
         String actualOutput = getOutput();
@@ -123,6 +131,7 @@
                 expectedTestOutput, actualOutput), actualOutput.contains(expectedSummaryOutput));
         assertTrue(String.format("test output did not contain expected TestResult end tag. Got %s",
                 actualOutput), actualOutput.endsWith(expectedEndTag));
+        EasyMock.verify(mMockBuild);
     }
 
     /**
@@ -131,6 +140,7 @@
     public void testSinglePass() {
         Map<String, String> emptyMap = Collections.emptyMap();
         final TestIdentifier testId = new TestIdentifier("com.foo.FooTest", "testFoo");
+        EasyMock.replay(mMockBuild);
         mResultReporter.invocationStarted(mMockBuild);
         mResultReporter.testRunStarted(AbiUtils.createId(UnitTests.ABI.getName(), "run"), 1);
         mResultReporter.testStarted(testId);
@@ -149,6 +159,7 @@
         final String testCaseTag = String.format(
                 "<Test name=\"%s\" result=\"pass\"", testId.getTestName());
         assertTrue(output.contains(testCaseTag));
+        EasyMock.verify(mMockBuild);
     }
 
     /**
@@ -158,6 +169,7 @@
         Map<String, String> emptyMap = Collections.emptyMap();
         final TestIdentifier testId = new TestIdentifier("FooTest", "testFoo");
         final String trace = "this is a trace\nmore trace\nyet more trace";
+        EasyMock.replay(mMockBuild);
         mResultReporter.invocationStarted(mMockBuild);
         mResultReporter.testRunStarted(AbiUtils.createId(UnitTests.ABI.getName(), "run"), 1);
         mResultReporter.testStarted(testId);
@@ -179,6 +191,7 @@
         // Check that no TestLog tags were added, because the flag wasn't enabled.
         final String testLogTag = String.format("<TestLog type=\"logcat\" url=\"url\" />");
         assertFalse(output, output.contains(testLogTag));
+        EasyMock.verify(mMockBuild);
     }
 
     /**
@@ -192,6 +205,7 @@
         // Include TestLogTags in the XML.
         mResultReporter.setIncludeTestLogTags(true);
 
+        EasyMock.replay(mMockBuild);
         mResultReporter.invocationStarted(mMockBuild);
         mResultReporter.testRunStarted(AbiUtils.createId(UnitTests.ABI.getName(), "run"), 1);
         mResultReporter.testStarted(testId);
@@ -206,11 +220,13 @@
         final String output = getOutput();
         final String testLogTag = String.format("<TestLog type=\"logcat\" url=\"url\" />");
         assertTrue(output, output.contains(testLogTag));
+        EasyMock.verify(mMockBuild);
     }
 
     public void testDeviceSetup() {
         Map<String, String> emptyMap = Collections.emptyMap();
         final TestIdentifier testId = new TestIdentifier("android.tests.devicesetup", "TestDeviceSetup");
+        EasyMock.replay(mMockBuild);
         mResultReporter.invocationStarted(mMockBuild);
         mResultReporter.testRunStarted(AbiUtils.createId(UnitTests.ABI.getName(), testId.getClassName()), 1);
         mResultReporter.testStarted(testId);
@@ -221,6 +237,7 @@
         // TODO: consider doing xml based compare
         final String deviceSetupTag = "appPackageName=\"android.tests.devicesetup\"";
         assertFalse(output, output.contains(deviceSetupTag));
+        EasyMock.verify(mMockBuild);
     }
 
     /**
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/CtsTestTest.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/CtsTestTest.java
index 5dc2e5a..98caad1 100644
--- a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/CtsTestTest.java
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/CtsTestTest.java
@@ -23,6 +23,7 @@
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.targetprep.ITargetPreparer;
 import com.android.tradefed.testtype.IRemoteTest;
 import com.android.tradefed.util.xml.AbstractXmlParser.ParseException;
 
@@ -286,6 +287,8 @@
         EasyMock.expect(mMockPackageDef.getAbi()).andReturn(UnitTests.ABI).atLeastOnce();
         EasyMock.expect(mMockPackageDef.getId()).andReturn(ID).atLeastOnce();
         EasyMock.expect(mMockPackageDef.getDigest()).andReturn("digest").atLeastOnce();
+        EasyMock.expect(mMockPackageDef.getPackagePreparers()).andReturn(
+                    new ArrayList<ITargetPreparer>()).atLeastOnce();
         mMockTest.run((ITestInvocationListener) EasyMock.anyObject());
     }
 
@@ -294,6 +297,7 @@
      * been specified
      */
     public void testRun_nothingToRun() throws DeviceNotAvailableException {
+        replayMocks();
         try {
             mCtsTest.run(mMockListener);
             fail("IllegalArgumentException not thrown");
@@ -309,6 +313,7 @@
     public void testRun_packagePlan() throws DeviceNotAvailableException {
         mCtsTest.setPlanName(PLAN_NAME);
         mCtsTest.addPackageName(PACKAGE_NAME);
+        replayMocks();
         try {
             mCtsTest.run(mMockListener);
             fail("IllegalArgumentException not thrown");
@@ -324,6 +329,7 @@
     public void testRun_planClass() throws DeviceNotAvailableException {
         mCtsTest.setPlanName(PLAN_NAME);
         mCtsTest.setClassName("class");
+        replayMocks();
         try {
             mCtsTest.run(mMockListener);
             fail("IllegalArgumentException not thrown");
@@ -339,6 +345,7 @@
     public void testRun_packageClass() throws DeviceNotAvailableException {
         mCtsTest.addPackageName(PACKAGE_NAME);
         mCtsTest.setClassName("class");
+        replayMocks();
         try {
             mCtsTest.run(mMockListener);
             fail("IllegalArgumentException not thrown");
@@ -355,6 +362,7 @@
         mCtsTest.setPlanName(PLAN_NAME);
         mCtsTest.addPackageName(PACKAGE_NAME);
         mCtsTest.setClassName("class");
+        replayMocks();
         try {
             mCtsTest.run(mMockListener);
             fail("IllegalArgumentException not thrown");
@@ -370,6 +378,7 @@
     public void testRun_planContinue() throws DeviceNotAvailableException {
         mCtsTest.setPlanName(PLAN_NAME);
         mCtsTest.setContinueSessionId(1);
+        replayMocks();
         try {
             mCtsTest.run(mMockListener);
             fail("IllegalArgumentException not thrown");
diff --git a/tools/utils/buildCts.py b/tools/utils/buildCts.py
index e7a2f3c..9490eaf 100755
--- a/tools/utils/buildCts.py
+++ b/tools/utils/buildCts.py
@@ -260,23 +260,10 @@
     self.__WritePlan(plan, 'CTS-l-tests')
 
     # CTS - sub plan for tests in drawelement packages
-    # STOPSHIP(jpoyry): Do not ship with reduced test plan to avoid confusion of having multiple
-    #                   different deqp sets in different plans.
-
-    plan = tools.TestPlan(packages)
-    plan.Exclude('.*')
-    plan.Include(r'com\.drawelements\.deqp\.gles3')
-    plan.Include(r'com\.drawelements\.deqp\.gles31')
-    plan.IncludeTests('com.drawelements.deqp.gles3', ReadFileLines(os.path.join(self.test_root, 'deqp/gles3-golden-tests.txt')))
-    plan.IncludeTests('com.drawelements.deqp.gles31', ReadFileLines(os.path.join(self.test_root, 'deqp/gles31-golden-tests.txt')))
-    self.__WritePlan(plan, 'CTS-DEQP')
-
     plan = tools.TestPlan(packages)
     plan.Exclude('.*')
     plan.Include(r'com\.drawelements\.')
-    plan.ExcludeTests('com.drawelements.deqp.gles3', ReadFileLines(os.path.join(self.test_root, 'deqp/gles3-golden-tests.txt')))
-    plan.ExcludeTests('com.drawelements.deqp.gles31', ReadFileLines(os.path.join(self.test_root, 'deqp/gles31-golden-tests.txt')))
-    self.__WritePlan(plan, 'CTS-DEQP-staging')
+    self.__WritePlan(plan, 'CTS-DEQP')
 
     # CTS - sub plan for new test packages added for staging
     plan = tools.TestPlan(packages)
@@ -503,6 +490,11 @@
           'android.content.cts.ContentResolverTest#testUnstableToStableRefs',
           'android.content.cts.ContentResolverTest#testUpdate',
           'android.content.cts.ContentResolverTest#testValidateSyncExtrasBundle',],
+      'android.bluetooth' : [
+          'android.bluetooth.cts.BluetoothLeScanTest#testBasicBleScan',
+          'android.bluetooth.cts.BluetoothLeScanTest#testBatchScan',
+          'android.bluetooth.cts.BluetoothLeScanTest#testOpportunisticScan',
+          'android.bluetooth.cts.BluetoothLeScanTest#testScanFilter',],
       '' : []}
 
 def LogGenerateDescription(name):
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
index 75fb804..0506be0 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
@@ -28,13 +28,16 @@
 .limit regs 6
 
        const v4, 5
-       move-object v1, v5
-Label0:
-       move-object v0, v1
+       goto LabelEntry
+
+LabelBwd:
+       invoke-virtual {v1}, java/lang/Object/hashCode()I
+
+LabelEntry:
        new-instance v1, java/lang/Integer
-       
+
        add-int/lit8 v4, v4, -1
-       if-nez v4, Label0
+       if-nez v4, LabelBwd
 
        invoke-direct {v1, v4}, java/lang/Integer/<init>(I)V
        return-void
